Porównaj ceny domen i usług IT, sprzedawców z całego świata

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.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Pierwszym portem, który należy wywołać, gdy w PHP jest 500 błędów, jest sprawdzenie dziennika błędów PHP; Jeśli apache nie zgłasza błędu 500, jest to spowodowane przez PHP.
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

Anonimowy użytkownik

Potwierdzenie od:

To jest przyczyna problemu:
Max Requests Per Child: 4000

+ Zmień
         MaxRequestsPerChild
do niższej wartości, spróbuj zacząć od 70, a wszystkie sporadyczne wewnętrzne błędy serwera 500 znikną.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się