Artykuły jmail's software

Optymalizacja WAMPP (LAMPP) – Część I

by on Aug.11, 2009, under PHP / CF / .NET / Java

Kiedy ruszało BattleDust nie miałem czasu za bardzo się przyjrzeć konfiguracji serwera za długo. Miałem problem żeby zainstalować WAMPP (Windows Apache MySQL PostgreSQL PHP) tak jak lubię, czyli z pełnym configiem kontrolowanym przeze mnie. Postawiłem więc na szybko na najnowszego XAMPP’a jaki był dostępny w  sieci i na tym się skończyło.

Jendak kiedy strony zaczęły się mozolnie ładować poświęciłem dużo czasu na to, żeby rozgryźć w czym był problem.

Okazało się, że jak we wcześniejszych wersjach Apache’a serwer ten wyszukiwał sobie potrzebne liby w katalogu system czy system32 w wersji jaką obecnie posiadam przestał to robić sam z siebie :( Całe 12 godzin zmarnowałem na dojście do tego. Problem stanowiło połączenie PHP z MySQL’em. Po prostu nie ładowało biblioteki MySQL’a i nie był on dostępny z poziomu PHP

rozmowa dlaczego nie wykorzystałem light httpd nie jest na ten artykuł, ale generalnie to co mnie cały czas odpycha od tego serwera to mała ilość modułów jakie można do niego znaleźć w porównaniu z Apache’m

Przez chwilę błysnęła mi nawet opcja ładowania gry przez IIS’a, jednak nie mogłem sobie na to pozwolić na środowisku produkcyjnym. Zabawy niebezpieczne zmierzające do utraty graczy. Więc zostałem przy Apache’u. Jednej nocy o północy wyłączyłem grę i o 5 rano działała z powrotem. Plan działania był bardzo prosty, instalacja i konfiguracja zgodnie z własnym pomysłem. Apache zainstalowany, MySQL stał już wcześniej, ale jak już była okazja upgrade zrobiłem, PHP rozpakowane z zipa (żadnych instalek!) a Postgre mój ukochany stał od samego początku na serwerze.

Trick, który pozwolił uruchomić bez problemów połączenie stanowił dodanie libów do katalogu bin Apache’a i dzięki temu wreszcie je znalazł. Trochę zabawy z php.ini i http.conf żeby powyłączać niepotrzebne mi rzeczy i serwer zacząl znowu serwować strony w tempie zbliżonym do 0.12 sekundy. Pewnie. Może i możnaby wycisnąć z niego więcej, ale jak wiadomo lepsze jest wrogiem dobrego. Poza tym co bym później robił :D No i nie mogłem pozwolić sobie na dłuższy przestój serwera – gracze. Ale zanotowałem w kalendarzu co możnaby poprawić i czym się zainteresować.

Przez ostatnie pół roku przymierzałem się do dużego skoku wydajnościowego. I oto ostatnie dwa tygodnie zostały poświęcone na optymalizację serwera, wykonywaną głównie w nocy, żeby nie przeszkadzać w graniu. I serwer obecnie znowu bardzo szybko serwuje strony. W międzyczasie powiększyła się ilość kont prawie trzykrotnie, większe bazy danych, serwer jest dociążany kolejnymi site’ami a jednak daje radę i ciągnie bardzo dobrze.

Ale jaki jest tajnik sukcesu:

1. Zainstaluj cacher kodu binarnego – ja wybrałem XCache, który w benchmarkach wypadał, albo bardzo blisko APC, albo delikatnie lepiej. Jakby śmiesznie to nie brzmiało XCache został zaprojektowany pod light ale do apache’a powstał również moduł. Informacje o XCache’u można znaleźć tutaj http://xcache.lighttpd.net/ Konfigurację XCache pozostawiam do własnego rozgryzienia. i zajęło 3 dni rzogryzienie optymalnych wartości pamięci na kod i zmienne, ale teraz już wszystko działa tak jakbym sobie tego życzył. Bardzo pomocne było narzędzie admin, który wyświetla wszystkie niezbędne informacje.

2. Zastosuj wbudowane w Apache mechanizmy cacheujące i kompresujące wynik rozwiązania. mod_deflate i mod_headers. Dzięki temu znacznie skrócisz czas ściągania strony przez użytkownika. Mniej jest również obciążone łącze serwera.

3. Wyłącz sygnaturę serwera. Znacznie to przyspiesza działanie skryptów.

4. Wyłącz posuzkiwanie hostów przez serwer WWW. Dzięki temu logi może nie masz takie piękne jakbyś mógł mieć, ale zyskujesz na wydajności. Oczywiście możesz sobie robić co Ci się tam żywnie podoba, ale zawsze przeparsować logi można od nowa i dzięki temu zyskać wydajność serwera.

5. Utrzymuj połączenie. Przy grze wysoka dostepność gry jest niezmiernie ważna. Jeżeli gracz gra aktywnie, to trzeba założyć że klika przynajmniej raz na 30 sekund. Szczególnie przy wysokim tempie gry. Pozostawienie otwartego połączenia między serwerem a klientem na ten czas może powodować “siadanie” łącza serwera, ale to na jakichś slabszych maszynach. Jeżeli masz łącze dużo sprawniejsze niż gwarantowane 1 MBit/s możesz sobie pozwolić na zostawienie połączenia. strony będą szybciej się ściągać do klienta.

6. Ustawienie wątkowania, ale to już temat na osobny artykuł.

Generalnie każdemu z tych punktów możnaby poświecić bardzo dużo czasu i tym zajmiemy się w kolejnych częściach.

To do następnego razu ;)

:, ,

Leave a Reply

Kalendarz

August 2009
M T W T F S S
« Jul   Sep »
 12
3456789
10111213141516
17181920212223
24252627282930
31  
Linki sponsorowane:
Skuteczne CRM dla firm. * VSAT Vsat VSAT * podstawowy kurs komputerowy Profesja Katowice podstawowe kursy komputerowe * dobry tani hosting dla strony * serwery * bitspider * Aplikatory, nawijarka etykiet