Rozpoznaj, że Ubuntu 14.04 używa Apache 2 z PHP działającym przez moduł mpm_prefork , którego plik edytowalny znajduje się w /etc/apache2/mods-enabled/mpm_prefork.conf. Należy również pamiętać , że począwszy od Apache 2.4 nazwa MaxClients jest teraz zmieniana na MaxRequestWorkers , dlatego wszelka dokumentacja dotycząca MaxClients musi zostać przełączona na MaxRequestWorkers.
Zatrzymaj tymczasowo usługę internetową Apache za pomocą następującego polecenia:
usługa sudo apache2 stop
- Poczekaj 5 sekund, a następnie uruchom następujące polecenie, aby dowiedzieć się, ile wolnej pamięci wirtualnej masz na serwerze:
Sudo za darmo -ht
Przeczytaj wiersz Mem: i spójrz na wolną kolumnę. Rozważ to jako ilość pamięci RAM, którą możesz przeznaczyć na Apache, chociaż zwykle lubię odejmować 2 GB na mocniejszym serwerze (jak w> 4 GB) lub 1 GB na lżejszym serwerze. Tak więc, jeśli wolna kolumna mówi, że mam 13 GB wolnego miejsca, zalecam podanie Apache 11 GB. To jest punkt odniesienia. Jeśli od czasu do czasu napotkamy jakiś problem z bazą danych w dziennikach (jak np. 3 razy w dziennikach w ciągu 3 dni), który potrzebuje więcej pamięci, możemy uznać, że mieliśmy tylko 10 GB zamiast 11 GB (w tym przypadku ). Jeśli w dziennikach Apache napotkamy, że serwer potrzebuje więcej MaxRequestWorkers, to jest to osobny problem, który omówię poniżej.
- Uruchom serwer WWW Apache.
usługa sudo apache2 start
Otwórz jak 10 kart przeglądarki, połącz się z niektórymi dłuższymi lub wolniej ładującymi się stronami ze swojej witryny i odśwież od 3 do 4 razy na każdej karcie.
Po wykonaniu tej czynności szybko uruchom następujące polecenie:
sudo ps -ylC apache2 | awk '{x + = 8 $; y + = 1} END {print "Zużycie pamięci Apache (MB):" x / 1024; print „Średnia wielkość procesu (MB):” x / ((y-1) * 1024)} ”
Uruchom go 5 razy szybko.
Spójrz na wartość Średniej wielkości procesu i średnią tę wartość spośród 5 razy, które uruchomiłeś.
Teraz wykonaj następującą matematykę i koniecznie przekonwertuj GB na MB, aby wszystkie liczby były w MB. Tak więc, pomnóż razy 1024 lub podziel przez 1024, w zależności od tego, którą drogę musisz iść.
MaxRequestWorkers = Poziom podstawowy Wolny (z miejscem na bufor) / Śr. Wielkość procesu
Na przykład miałem serwer 14 GB, ale kiedy Apache został zatrzymany, serwer pokazał, że używa 1 GB pamięci RAM w stanie bezczynności. Następnie zapewniam kolejny 1 GB w dodatkowej przestrzeni buforowej dla systemu operacyjnego na wypadek, gdyby tego potrzebował. To znaczy, że miałbym linię podstawową wolną od 12 GB. Teraz muszę przekonwertować go z GB na MB, więc mnożę 12 x 1024 i otrzymuję 12288. 12288 MB to moja podstawowa wolna wartość. W moim przypadku zobaczyłem, że średni rozmiar procesu wynosił 21 MB. Biorę więc 12288/21 i otrzymuję około 585. Teraz powszechne jest, że sysops zaokrągla tę wartość w dół, więc mam 580.
- Zmodyfikuj plik /etc/apache2/mods-enabled/mpm_prefork.conf i rozważ ustawienie następujących wartości domyślnych, zastępując XXX obliczeniem MaxRequestWorkers:
`<IfModule mpm_prefork_module>`
StartServers 2
MinSpareServers 2
MaxSpareServers 5
MaxRequestWorkers XXX
ServerLimit XXX
MaxConnectionsPerChild 0
</IfModule>
Pamiętaj, że parametr ServerLimit może nie być tam widoczny. Dodaj to. Domyślnie ten parametr to 256, jeśli nie występuje, ale musi mieć tę samą wartość co MaxRequestWorkers, w przeciwnym razie wystąpi błąd.
Innym krytycznym czynnikiem w konfiguracji Apache jest plik /etc/apache2/apache2.conf ze zmienną Timeout i jest mierzony w sekundach. To jest czas, przez jaki można wysłać lub odebrać z serwera, zanim upłynie limit czasu. Należy również pamiętać o przesyłaniu lub pobieraniu pliku, na przykład jeśli masz witrynę internetową, na której ludzie mogą na przykład przesyłać lub pobierać pliki CSV lub inne duże pliki. Trzeba też pamiętać o zajętym serwerze bazy danych oraz o tym, że może minąć trochę czasu, zanim strony przekroczą limit czasu. Im mniejsza jest ta zmienna Timeout, tym bardziej dostępny jest serwer WWW do odbierania nowych połączeń. Pamiętaj jednak, że ustawienie zbyt niskiej wartości może spowodować spustoszenie w zmiennych sesji PHP, choć nie w przypadku plików cookie opartych na sesji przeglądarki. Na przykład wartość 300 (5 minut) może być odpowiednia dla serwera WWW, który opiera się na zmiennych sesji PHP dla przepływu pracy aplikacji WWW zamiast plików cookie sesji przeglądarki. Wartość 45 może być dobra dla serwera WWW, który obsługuje tylko statyczne strony docelowe reklamy, ale byłaby straszna dla serwera, który musi bardzo często używać zmiennych sesji PHP. Tak więc edytuj parametr Limit czasu w tym pliku do potrzebnej ilości. Może to wymagać przetestowania wszystkich stron internetowych, aby sprawdzić, czy wartość jest zbyt niska. Prawdopodobnie dobrym pomysłem jest jednak, aby nie ustawiać go wyżej niż 300, chyba że pojawią się problemy z przesyłaniem dużych plików lub pobierania dużych plików. ale byłoby to okropne dla serwera, który musi bardzo często używać zmiennych sesji PHP. Tak więc edytuj parametr Limit czasu w tym pliku do potrzebnej ilości. Może to wymagać przetestowania wszystkich stron internetowych, aby sprawdzić, czy wartość jest zbyt niska. Prawdopodobnie dobrym pomysłem jest jednak, aby nie ustawiać go wyżej niż 300, chyba że pojawią się problemy z przesyłaniem dużych plików lub pobierania dużych plików. ale byłoby to okropne dla serwera, który musi bardzo często używać zmiennych sesji PHP. Tak więc edytuj parametr Limit czasu w tym pliku do potrzebnej ilości. Może to wymagać przetestowania wszystkich stron internetowych, aby sprawdzić, czy wartość jest zbyt niska. Prawdopodobnie dobrym pomysłem jest jednak, aby nie ustawiać go wyżej niż 300, chyba że pojawią się problemy z przesyłaniem dużych plików lub pobierania dużych plików.
Teraz uruchom ponownie usługę internetową Apache. Jeśli zrobiłeś coś złego, Apache najprawdopodobniej poinformuje cię o tym, gdy uruchomisz go ponownie, i możesz to naprawić.
usługa sudo apache2 restart
- Teraz powtórz 10-kartową sztuczkę przeglądarki, którą zrobiłeś wcześniej, i sprawdź, czy napotkasz błędy konfiguracji Apache w dzienniku błędów serwera WWW Apache:
sudo tail -f /var/log/apache2/error.log
... naciśnij CTRL + C, aby wyjść z tego, jeśli chcesz.
Poszukaj skargi dotyczącej potrzeby MaxRequestWorkers (a ostatnio odkąd zrestartowałeś serwer WWW). Jeśli zauważysz, że nawet przy optymalnym ustawieniu MaxRequestWorkers, prawdopodobnie potrzebujesz więcej siły ognia dla swoich witryn lub aplikacji internetowych. Rozważ te opcje:
- Korzystanie z sieci CDN do pobierania dużych plików, obrazów i skryptów.
- Korzystanie z usługi buforowania, takiej jak CloudFlare lub inne.
- Ponawianie strategii witryny lub aplikacji sieci Web w celu użycia wielu serwerów sieciowych działających jako jedna „aplikacja internetowa” za modułem równoważenia obciążenia.
- Dodanie większej ilości pamięci RAM do serwera, a tym samym ponowne wykonanie tych obliczeń.
- Teraz, gdy serwer Apache jest dostrojony, jest to rodzaj dostrojenia bazowego. Będziesz musiał to sprawdzić w ciągu 2-3 tygodni i poszukać problemów MaxRequestWorker w dziennikach błędów Apache. Na tej podstawie możesz podjąć decyzję o optymalizacji (patrz krok 10). Możesz także zainstalować Munin z apt na Ubuntu i spojrzeć na wydajność Apache w czasie i wykreślić pomysł rozwoju, zanim zdecydujesz, że musisz zrobić cokolwiek z ilością ruchu obsługiwanego przez serwer WWW.