Optymalizacja web serwera – Apache

# Symulacja dużej ilości requestów (apache benchmark)
ab dostępny jest w pakiecie apache2-utils

ab -c ilosc_jednoczesnych_polaczen -n laczna_ilosc_requestow domena/IP
ab -c 200 -n 100000 http://localhost/
* ważny / na końcu domeny oraz protokół na początku

Na końcu wyświetli statystyki.
Requests per second – ilość obsłużonych requestów w ciągu sekundy
Failed requests – problematyczne requesty
Time taken for tests – czas trwania testu

# Sprawdzenie MPM na jakim działa Apache
MPM – moduł, który obsługuje połączenia
apache2ctl -V | grep MPM

Domyślnie jest to prefork, którego konfig znajduje się :
/etc/apache2/mods-enabled/mpm_prefork.conf

# Statystyki serwera Apache
Sprawdźmy jaki mamy moduł do tego. Aktywne moduły możemy wyświetlić:
apache2ctl -M
Szukamy modułu, który ma w nazwie status. Jeżeli nie ma włączonego należy go uruchomić:
a2enmod status

# Wyświetlenie statystyk serwera
Na początek należy doinstalować przeglądarkę terminalową, np: links

apache2ctl status

lub

curl -s „localhost/server-status?auto”
?auto – wyświetli w formacie tekstowym, a nie w HTML

# Wyświetlenie scoreboardu w statusie:
watch -n1 'apache2ctl status | tail’
_ – oczekiwanie na połączenie
W – przesyłanie danych, pracujący worker

Na starcie jest 5 workerów. Domyślnie worker działa w trybie:
rodzi się -> obsługuje żądanie -> umiera

# Uruchomienie więcej workerów domyślnie
/etc/apache2/mods-enabled/mpm_prefork.conf:
StartServers– ilość workerów na start, zmieniamy na 25
MaxSpareServers – ilość czekających serwerów, ustawiamy taką samą wartość
MaxConnectionPerChild – ilość requestów obsługiwanych przez workera zanim umrze; tutaj również tracimy czas na umieranie-rodzenie nowego; ustawmy wartość np na 100
* najważniejszy parametr, 0 – nigdy nie umieraj [niezalecane, bo child puchnie i w pewnym momencie skończy się pamięć]

Inne zmienne, których modyfikacje warto rozważyć:
MinSpareServers – minimalna liczba zapasowych (nic nierobiących) serwerów
MaxRequestWorkers – maksymalna liczba uruchomionych serwerów

Te wartości trzeba dobrać pod siebie eksperymentując z wartościami.

# Problemy w scoreboardzie
Na scoreboard prawie nie mam kropek
Twój serwer przyjmuje ogromny ruch, większy niż pozwala na to konfiguracja. Zwiększ MaxRequestWorkers.
Na scoreboard mam mnóstwo liter „S”
Twój serwer marnuje czas na tworzenie nowych serwerów. Zwiększ ich początkową (StartServers) i zapasową liczbę (MaxSpareServers).
Na scoreboard mam prawie same litery „W”
Twój backend podaje dane skrajnie wolno. Przyspiesz backend, dodaj cache. Nie rozwiążesz tego problemu przez tuningowanie MPM-a. Czasami taka sytuacja może być w zupełności naturalna, gdy np. dziesiątki klientów pobiera duże pliki z serwera.
Na scoreboard jest sporo liter „R”
Requesty do Twojego serwera trwają bardzo długo. Jeśli nie jest to normalne (np. upload dużych plików od użytkowników), zmniejsz timeout dla połączeń.
Na scoreboard mam pełno liter „C”
Spróbuj aktywować keepalive w konfiguracji serwera

W celu świadczenia usług na najwyższym poziomie stosujemy pliki cookies, które będą zamieszczane w Państwa urządzeniu (komputerze, laptopie, smartfonie). W każdym momencie mogą Państwo dokonać zmiany ustawień Państwa przeglądarki internetowej i wyłączyć opcję zapisu plików cookies. View more
Zaakceptuj