1+1=0 czyli warstwa sprzętowa i programowa TIK TAKA

Błędy 503, wolne działanie, prawidłowa odpowiedź oznaczała nieprawidłową – to wszystko doprowadzało moich kolegów do furii podczas gry w TIK TAKA. Ja zaś postanowiłem pośledzić ich warstwę sprzętową oraz programową. I doszedłem to bardzo ciekawych wniosków.

Na pierwszy ogień poszedł serwer udostępniający to wszystko. Myślałem, że to będzie jakiś Apache lub podobne dzieło, jednak moim oczom ukazała się nazwa IdeaWebServer.

Starałem się wyszukać informacji na temat tego „coś”, jednak na rosyjskich stronach nic konkretnego się nie dowiedziałem. Dzisiaj jednak administracja wystosowała komunikat:

Informujemy że serwer na którym funkcjonuje nasz konkurs jest obsługiwany przez firmę home.pl

Organizator konkursu posiada w w/w firmie zakupiony serwer dedykowany, na którym został zainstalowany serwis konkursowy. Niestety w wyniku dużego obciążenia serwer nie funkcjonuje poprawnie, a firma home.pl odpowiedzialna za jego prawidłowe działanie, od poniedziałku 04-04-2011 nie jest w stanie ustalić przyczyny problemu.

Serdecznie przepraszamy za zaistniałą sytuację w imieniu swoim i dostawcy usługi firmy home.pl

Wszystkie kolejne tego typu inicjatywy będziemy starali się realizować poprzez dostawców, będących w stanie sprostać stawianemu przez użytkowników wyzwaniu.

Ta informacja otworzyła mi oczy. Serwer stoi na dedyku na home.pl oraz zarządzany jest przez IdeaWebServer. Nie namyślając się długo w nowej karcie otwarłem witrynę home.pl i przyjrzałem się jej ofercie.

Serwer normalnie by wyrobił

Home.pl oferuje trzy rodzaje serwerów dedykowanych. Administratorzy pewnie wybrali najmocniejszy z nich (chociaż nie jestem pewien, zakładam tylko). Specyfikacja jego wygląda następująco:

-dwa procesory AMD Opteron 6134 8 core 2.3 GHz
-16 GB pamięci RAM DDR3
-dysk 4x1TB SATA
-transfer 1000 GB

Procesor oferuje aż osiem rdzeni, a jak jest ich dwa to aż szesnaście. Czyli procesor na pewno by wyrobił. Do 16 GB RAM-u DDR3 też nie mam zastrzeżeń. Więc co powodowało tak wolne działanie ?

Złe oprogramowanie

Według mnie wina leżała po stronie oprogramowania oraz administratorów, którzy to oprogramowanie wybrali. Jak już pisałem, wszystko to stało na IdeaWebServer. Zagłębiając się w stronę home możemy wyczytać:

System oprarty o platformę hostingową IdeaWebServer wraz z otoczeniem, znany klientom home.pl, jako usługa Hostingu Dedykownego. W przeciwieństwie do systemu Linux, czy Windows, użytkownik nie posiada dostępu administracyjnego do serwera. Może jednak korzystać z pełni zalet i możliwości największej platformy hostingowej w Polsce, bez konieczności dbania o ustawienia, czy konfigurację serwera. Jedną z najważniejszych zalet systemu jest także rozbudowane wsparcie techniczne i stały rozwój platformy.

Zdanie, które natychmiast rzuca się w oczy to W przeciwieństwie do systemu Linux, czy Windows, użytkownik nie posiada dostępu administracyjnego do serwera.Jak to możliwe, aby administratorzy konkursu na krajową skalę nie mieli dostępu do zaplecza administracyjnego serwera ? To tak jakby użytkownik korzystający ze systemu Windows nie miał dostępu do panelu sterowania. Administratorzy wybierając ten typ oprogramowania odcięli sobie jedną tętnicę. Nie mieli dostępu do szczegółowych ustawień, nie mogli dopasować oprogramowania do skryptu. Nie wiem, czy udostępnili, ale podejrzewam, że nie szczegółową specyfikację tego planu.

Dowiedziałem się, że zamawiając dedyka baza danych znajduję się na tej samej maszynie. Jest to w pewnym sensie samobójstwo, gdyż przy takim ruchu i przy takim generowaniu zapytań baza danych zaczyna mieć coraz to większy apetyt na zasoby serwerowe. Patrząc jednak na specyfikację maszyna powinna temu podołać. Ale jeżeli zapytania do bazy nie są odpowiednio zoptymalizowane, to nawet najmocniejsza maszyna może poczuć się, jakby dostała DDos-a.

Gdyby panowie pokusili się o system Linux lub Windows, to podejrzewam, że takich problemów by nie było. Mamy aż do dyspozycji 16 rdzeni. Można było by wtedy moc obliczeniową podzielić na dwa. Czyli 8 rdzeni na Apache/nginx/IIS + PHP oraz 8 rdzeni na SQL. Jeżeli coś by się działo, to wchodzimy w /var/log, przeglądamy co tam piszę i stosujemy odpowiednie działania. Dodatkowa sprawa to możliwość ingerencji w ustawienia SQL, serwera www i php. Mogę się założyć, że w IdeaWebServer połowa usług była zbędna.

Administracja mówi, że firma home.pl nie jest w stanie poradzić sobie z usunięciem usterki. To nie jest takie proste. Skoro serwery są praktycznie maksymalnie obciążone, nie wiadomo, co znajduje się w skrypcie, to wszelka zmiana ustawień może spowodować crash całego konkursu. Nie chciałbym być w takiej sytuacji winowajcom. Obsługa techniczna pewnie podjęła jakieś zabiegi, ale nie chciała robić gwałtownych zmian, aby nie doprowadzić do upadku konkursu.

Kolejna sprawa to skrypt. W tej kwestii nie będę się praktycznie wypowiadał. Nie wie, kto go pisał, co to jest, czy jest zoptymalizowany czy nie, ale jedno jest pewnie, że on też brał udział w obciążeniu serwera.

Skąd ta pewność, że nie wina leży po stronie aplikacji ? Moi koledzy zgłaszali mi, że pomimo zaznaczenia poprawnej odpowiedzi system zgłaszał, że to była zła odpowiedź. Oto niektóre pytania:

Jaka jest maksymalna odległość połączeniowa skrętki.

Ilu bitowy jest adres MAC

Za pomocą jakiego protokołu łączymy się z witrynami internetowymi

Format kompresji bezstratnej plików audio

Na początku każdy myślał, że skopane są odpowiedzi. Jednak jeżeli pytanie pojawiło się drugi raz i po raz wtóry zaznaczaliśmy tą samą odpowiedź, to system zgłaszał OK. Wyobraźcie sobie, co musiało się dziać z bazą danych, skoro takie błędy występowały. Przy tego typu konkursach takie sytuacje są niedopuszczalne.

Przyszłość

PTI na pewno nie uzna tego konkursu do udanych. Co zrobić, aby takie sytuacje nie zdarzały się w przyszłości ? Jak dla mnie, to zakupić dwa serwery o podobnej konfiguracji jak najmocniejszy dedyk na home.pl i nie ma szans, aby występowały błędy 503. Dodatkowo odpowiednie łączę i wszystko chodziło by jak w zegarku. Materialiści zaraz powiedzą, że to są koszta. Patrząc jednak na listę sponsorów, to coś czuję, że zakup tego wszystkiego rozszedłby się po kościach. A dlaczego akurat tak mocne serwery i aż dwie sztuki ? Bo jak każdy wie tego typu konkursy na skalę kraju generują bardzo duży ruch. Najbardziej obciążana jest baza danych. Wygeneruj następne pytanie, sprawdź, czy to dobra odpowiedź, podlicz mu punkty itd itd. Zapytania wysyłane do serwera bazodanowego liczy się w milionach. Więc zakup dwóch tak mocnych maszyn zredukowały sumaryczne obciążenie. Każdy serwer posiadałby własne zasoby, nie trzeba by było się dzielić pomiędzy usługami itd. Koszty może są, ale za to komfort pracy jest niedoceniony.

Druga sprawa to oprogramowanie. Odpowiednia konfiguracja serwera www, php i serwera bazy danych to połowa sukcesu. Druga połowa to skrypt. Gdybym ja był za to wszystko odpowiedzialny, to po pierwsze system Debian, po drugie Apache+PHP i jako serwer bazodanowy MySQL. Dodatkowo programistom, którzy tworzyli by silnik szczególną uwagę zwracałbym na optymalizację kodu i zapytań do bazy. Wszak, ilość zapytań można zwiększyć, ale nie można też przesadzać.

Kto winny

Wina rozkłada się 3/4 na PTI a 1/4 na home.pl. Pierwsza wina adminów to plan. Gdyby zamiast IdeaWebServer wybrali czysty system i sami go skonfigurowali – wszystko potoczyło by się inaczej. Druga sprawa to skrypt. Nie wiadomo jak był napisany, również nikt nic nie wie czy były wykonywane testy przed rozpoczęciem projektu. Home.pl ponosi odpowiedzialność za to, że nie dali rady jakoś przyśpieszyć tego wszystkiego. Wszak, mogli nie wiedzieć jak wykonany jest cały skrypt, ale w takich sytuacjach można byłoby dostać jego specyfikację, sprawdzić co i jak i na ile to możliwe wykluczyć ewentualne „punkty zapalne”. Jednak nie wiadomo jak to było, możemy tylko przypuszczać. Miejmy nadzieje, że następne edycje będą o wiele bardziej udane, bo sam pomysł jest genialny, jednak z jego realizacją – jest dużo gorzej.