Apache2 - wewnętrzny błąd serwera 500
Używam VPS z Linux CentOs 6 z 4 GB pamięci RAM, 10 GB dyskiem twardym i 2 procesorami wirtualnymi Intel (R) Xeon (R) L5640 @ 2,27GHz. Jak mówi mój host, każdy procesor wirtualny powinien mieć co najmniej 0,5 procesora fizycznego.
W określonych porach dnia ci, którzy mają większy ruch, próbują uzyskać dostęp do mojego skryptu php, okresowo otrzymuję komunikat „500 Wewnętrzny błąd serwera”.
Aktywuję logowanie dla poziomu debugowania z apache, a także logowanie PHP za pomocą E_ALL, ale nie mogę znaleźć odniesienia do błędu 500 w żadnym dzienniku (sprawdziłem prawidłowe logi!).
Nie mam pliku .htaccess w ścieżce skryptu. Dziwne jest to, że błąd zaczyna się od pierwszej linii php w skrypcie (poprzedni html jest wyświetlany poprawnie, ale w pierwszej linii skrypt php wysyła błąd 500).
Obciążenie procesora jest zawsze dobre (maks. 0,15 0,08 0,01), a pamięć RAM jest bliska 95%, ale tylko 2 razy w miesiącu wymienia się 2-5 MB.
Apache działa z prefork z następującymi wartościami:
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 280
MaxClients 280
MaxRequestsPerChild 4000
</IfModule>
Wszystko działa poprawnie i nie dostaję żadnych błędów w okresach ciszy, ale błędy zaczynają się pojawiać, gdy ruch wzrasta (6-9000 odwiedzin na godzinę).
Czy mogę rozwiązać problem zwiększania zasobów? (Mogę zwiększyć pamięć RAM do 16 GB).
Może to zależeć od osiągnięcia MaxClients (ale apache musi to rejestrować, prawda?)?
Jeśli zwiększę pamięć RAM do 6 lub 8 GB, czy będę musiał obliczyć wartość MaxClients za pomocą tego?
MaxClients = Total RAM dedicated to the web server/Max child process size
Maksymalny rozmiar procesu podrzędnego to około 20 MB.
Jak inaczej mógłby być problem?
z góry dziękuję
Oto sekcja php.ini dotycząca rejestrowania błędów
error_reporting = E_ALL | E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = Off
error_log =/var/log/php_errors.log
Wszystko, co nie zostało wspomniane, jest komentowane.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
2 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Aby sprawdzić, czy osiągnąłeś limity zasobów, włącz i zobacz apache
Status serwera
http://httpd.apache.org/docs/2 ... .html
.
Anonimowy użytkownik
Potwierdzenie od:
+ Zmień
do niższej wartości, spróbuj zacząć od 70, a wszystkie sporadyczne wewnętrzne błędy serwera 500 znikną.