O ITIL’u i roli Administratorów Pierwszej Linii Wsparcia w całym machanizmie, jakim jest Pion IT w Onecie, pisał już Paweł w artykule ITIL, A1LW i Rock&Roll. Dosyć jasno wynika z niego, że głównym zadaniem naszej pracy jest monitoring właściwie ewszystkich możliwych mechanizmów, aplikacji, usług jakie w Onecie działają. Oprócz tego bierzemy udział w rozwiązywaniu awarii, zajmujemy się wdrożeniami oraz wykonujemy prace administracyjne na serwerach. Zwykle jednak takie prace zlecają nam administratorzy wyższych linii – specjaliści w konkretnych już dziedzinach jak poczta, sieć czy bazy danych. To oni decydują o tym ile maszyn powinno w danym klastrze pracować, jak powinny być skonfigurowane serwery itd. Istnieją jednak serwisy, nad którymi „pełnię władzy” trzymają Administatorzy Pierwszej Linii. Jednym z takich serwisów jest właśnie PCLab.pl. W artykule tym przedstawię w kilku słowach jak wygląda utrzymanie serwisu w naszym zespole.

Migracja

W tym roku mija 2 lata odkąd PCLab.pl podawany jest z naszej serwerowni. Dostaliśmy wtedy do dyspozycji 4 nowe serwery, z których musieliśmy zbudować infrastrukturę serwisu. Było to i tak dwa razy więcej niż wcześniejsza konfiguracja, która składała się z frontowego serwera http oraz backendowego serwera bazy danych. Postanowiliśmy dwa z nich przeznaczyć na serwery http, które stojąc za loadbalancerem równolegle serwują stronę www. Same zaś odpytują serwer z bazą danych, która replikuje się na czwartą maszynę i w razie awarii ruch może zostać do niej przepięty. Tym samym pozbyliśmy się punktów (SPOF), które w przypadku pojedynczej awarii unieruchamiały cały serwis. Nowa, mocniejsza obliczeniowo infrastruktura sprawiła, że nie obserwowano już znanych wcześniej komunikatów nginx’a „502 Bad Gateway”, które były notorycznie zgłaszane przez użytkowników forum serwisu.

Wyszukiwarka w forum

Do tematu wyszukiwarki w forum podchodzono już wcześniej, zanim jeszcze PCLab został przejęty przez Onet. Wszystkie próby jednak kończyły się brakiem odpowiedniej wydajności, same zapytania wykonywały się bardzo długo. Po tym, jak serwis został zmigrowany do naszej serwerowni i wszystko stabilnie pracowało, temat powrócił. Jak wiadomo, przeszukiwanie bazy danych po krótkich frazach jest dla niej bardzo obciążające. Z pomocą przychodzi tutaj m.in. sphinx, silnik wyszukiwarki SQL, który jest w stanie podać odpowiedź kilkadziesiąt, a nawet kilkaset razy szybciej niż baza danych. Daemon searchd dostaje zapytanie i przeszukuje indeksy, które zostały wcześniej stworzone przez indexer – generator indeksów. Na serwerze z bazą danych zainstalowaliśmy równolegle serwer sphinxa i wszystkie zapytania z wyszukiwarki forum trafiają właśnie do niego. Indexer cyklicznie co 15 minut odświeża pliki indeksów, aby szukane dane były stale aktualne. Tym samym użytkownicy forum mogą cieszyć się ze sprawnie działającej wyszukiwarki.

Wzrost ruchu a obciążenie bazy

Po migracji serwisu do Onetu bardzo często linki do artykułów z PC Lab umieszczane są na stronie głównej Onet.pl, najczęściej w sekcji „Technologie i Gry”. Taka promocja sprawia, że ruch na serwisie zwiększony jest dwukrotnie, a czasem nawet bardziej. Widać to na wykresach poniżej, gdzie przedstawiona jest ilość zapytań http w ciągu dwóch kolejnych dni.

PCLab accesslog

Pierwszy wykres przedstawia ruch w normalny dzień, w drugim dniu o godzinie 7:00 umieszczony został link na stronie głównej onet.pl, a zdjęty został o godzinie 15:00. Zaobserwować można prawie trzykrotny wzrost ilości zapytań w stosunku do dnia poprzedniego. Takie akcje mają pozytywny wpływ na serwis, który szybko zaczął zdobywać nowych użytkowników. Odbiło się to jednak na wydajności i w czasie największego obciążenia baza danych zaczęła wolno odpowiadać. Pojawił się pomysł użycia systemu cachowania obiektów w pamięci RAM – memcached. Używany w innych serwisach Onetu sprawdza się bardzo dobrze, więc i tutaj przyniósł oczekiwany efekt. Sama idea polega na tym, że najczęściej używane obiekty wrzucane są do pamięci RAM maszyny na której zainstalowany jest memcached. Serwer php najpierw sprawdza czy nie ma gotowej odpowiedzi w cachu, jeśli nie, to odpytuje bazę danych i zapamiętuje w cachu odpowiedź na przyszłość. Sam decyduje o tym jakie obiekty i na jak długo trzymać w pamięci. Odpowiedź z memcached jest błyskawiczna, gdyż nie musimy czekać, aż baza danych przeliczy często długie i skomplikowane zapytanie.

Podsumowanie

Jak widać, rozwój serwisu sprawia, że co jakiś czas pojawiają się problemy z którymi musimy się zmierzyć. W zespole Administratorów Pierwszej Linii Wsparcia jest mnóstwo różnego rodzaju zadań, ale te nad którymi trzeba dłużej pomyśleć i o których przyszłości sami decydujemy sprawiają nam najwięcej przyjemności.

Dariusz Rozmus
Administrator Pierwszej Linii Wsparcia