Skocz do zawartości
Zaloguj się, aby obserwować  
elroy

Nginx + php-fpm - recv() error

Polecane posty

Witajcie

Mam sobie działającą stronę, brak żadnych problemów etc. Jednak jeden z użytkowników dam mi znać, że strona w jednym wątku na forum powoduje błąd. 502 Bad Gateway

Szybkie rzut oka do logów i w tym danym temacie na jednej jego stronie w logach dostaję

 

76 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 178.36.56.117, serv
er: www.piwo.org, request: "GET /topic/7182-browar-poremba/page__st__20 HTTP/1.1"

 

Przeszukałem co nieco w sieci, zrobiłem upgrade php do 5.3.17-1~dotdeb.0, nginx w wersji 1.2.0, ale dalej nic. Poradników co zmieniać w konfiguracji są setki, ale nie chcę robić czegoś bezmyślnie.

Jak temu zaradzić ? Nie chcę wklejać kilometrów configów, ale oczywiście podam co trzeba (nie ukrywam hosta, może się to do czegoś przyda)

Edytowano przez elroy (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No właśnie to nie są timeouty, bo forum działa, aktywnych userów ponad setkę i wszystko pracuje ładnie. Jedynie ten jeden wątek.

Ale co znalazłem w logach. Po wejściu do tego tematu sypie się php-fpm.

 

php5-fpm[19355]: segfault at 7fff98f8ae58 ip 00000000006771ba sp 00007fff98f8ae20 error 6 in php5-fpm[400000+824000]

 

Nie mam pomysłu za bardzo...

 

config (to co sam zmieniałem, reszta defualtowa)

 

pm = dynamic
pm.max_children = 70
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 25
pm.max_requests = 800

 

Zastanawiam się, czy to nie jest tak, że w tym jednym momencie wysypuje się proces php-fpm i siłą rzeczy zakańczane jest połączenie...

Edytowano przez elroy (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No właśnie to nie są timeouty, bo forum działa, aktywnych userów ponad setkę i wszystko pracuje ładnie. Jedynie ten jeden wątek.

Ale co znalazłem w logach. Po wejściu do tego tematu sypie się php-fpm.

 

php5-fpm[19355]: segfault at 7fff98f8ae58 ip 00000000006771ba sp 00007fff98f8ae20 error 6 in php5-fpm[400000+824000]

 

Nie mam pomysłu za bardzo...

 

config (to co sam zmieniałem, reszta defualtowa)

 

pm = dynamic
pm.max_children = 70
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 25
pm.max_requests = 800

 

Zastanawiam się, czy to nie jest tak, że w tym jednym momencie wysypuje się proces php-fpm i siłą rzeczy zakańczane jest połączenie...

Co to jest dedyk? VPS? RAM-u mu nie brakuje? Korzystasz z jakiegoś php cache?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To VPS, 1GB ramu (z czego z 40% wolne), korzystam z APC, wyłączałem, włączałem - nic. Upgradowałem też do najnowszej wersji.

Przy czym podkreślam.

Mam jeden temat na forum, który ma 3 strony, 1,3 działa, próba wejścia na 2 kończy się błędem

Zresztą spróbujcie sami

Strona 1 - ok http://www.piwo.org/topic/7182-browar-poremba/

Strona 2 - leży http://www.piwo.org/topic/7182-browar-poremba/page__st__20

 

Cała reszta serwisu funkcjonuje poprawnie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Na bank limity php/nginx. Sprawdź dokładnie logi nginx i php-fpm.

 

W logach są tylko informacje o:

1 - messages

Oct  6 08:24:29 elroy2 kernel: [39867.442207] php5-fpm[24542]: segfault at 7fffbd99bf18 ip 00000000004804f1 sp 00007fffbd99bec0 error 6 in php5-fpm[400000+824
000]

 

2 - php-fpm

[06-Oct-2012 08:24:29] WARNING: [pool www] child 24542 exited on signal 11 (SIGSEGV) after 29.104878 seconds from start

 

3 - nginx

 

2012/10/06 07:52:05 [error] 32583#0: *21768 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 83.27.60.98, se
rver: www.piwo.org, request: "GET /topic/7182-browar-poremba/page__st__20 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000",

 

I to tylko w momencie wejścia do tego jednego feralnego wątku. Więcej błędów brak

Edytowano przez elroy (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Problem z FPM, przekopiluj z dev albo uruchom przez spawn-fcgi.

 

Bankowo jest problem z FPM z tym że to drugie co napisałeś, to obejście problemu a nie rozwiązanie.

Włącz na chwile w konfiguracji php5-fpm log_level=debug i wklej nam tutaj co wypluł fpm.

To się stało po upgrade php lub fpm, czy tak samo z siebie?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dzięki wszystkim za chęci, bo mnie osobiście tego typu problemy przyprawiają o ból głowy i przerażenie (z besilności.. ), bo wiem że z moją wiedzą ciężko znaleźć rozwiązanie...

Po włączeniu debugowania w php-fpm

 

[06-Oct-2012 19:39:02.446493] DEBUG: pid 10407, fpm_scoreboard_init_main(), line 40: got clock tick '100'
[06-Oct-2012 19:39:02.447530] DEBUG: pid 10407, fpm_event_init_main(), line 331: event module is epoll and 1 fds have been reserved
[06-Oct-2012 19:39:02.447616] NOTICE: pid 10407, fpm_init(), line 83: fpm is running, pid 10407
[06-Oct-2012 19:39:02.447636] DEBUG: pid 10407, main(), line 1815: Sending SIGUSR1 (OK) to parent 10406
[06-Oct-2012 19:39:02.449685] DEBUG: pid 10407, fpm_children_make(), line 421: [pool www] child 10408 started
[06-Oct-2012 19:39:02.451407] DEBUG: pid 10407, fpm_children_make(), line 421: [pool www] child 10409 started
[06-Oct-2012 19:39:02.455248] DEBUG: pid 10407, fpm_children_make(), line 421: [pool www] child 10410 started
[06-Oct-2012 19:39:02.456989] DEBUG: pid 10407, fpm_children_make(), line 421: [pool www] child 10411 started
[06-Oct-2012 19:39:02.458743] DEBUG: pid 10407, fpm_children_make(), line 421: [pool www] child 10412 started
[06-Oct-2012 19:39:02.458771] DEBUG: pid 10407, fpm_event_loop(), line 360: 82424 bytes have been reserved in SHM
[06-Oct-2012 19:39:02.458780] NOTICE: pid 10407, fpm_event_loop(), line 361: ready to handle connections
[06-Oct-2012 19:39:03.461139] DEBUG: pid 10407, fpm_pctl_perform_idle_server_maintenance(), line 379: [pool www] currently 1 active children, 4 spare children
, 5 running children. Spawning rate 1


Ostatni wpis powtarza się około 50-80 razy, nie wklejam.

Edytowano przez elroy (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jako, że dalej problemu nie rozwiązałem mam dodatkowe pytanie.

Czy taką sytuacje może spowodować jakiś wadliwie działający skrypt na serwerze ? Coś po stronie oprogramowania forum etc ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys
Bankowo jest problem z FPM z tym że to drugie co napisałeś, to obejście problemu a nie rozwiązanie.

To taka branża, w której wszystko ma działać i niekiedy trzeba obejść problem jeżeli można przywrócić usługę do pełnej sprawności.

Tu mógłby pomóc strace, aczkolwiek po co się z tym męczyć jak można szybko wyjść z sytuacji uruchamiając inaczej php.

Przy jednym forum podmiana na spaw-fcgi to chwila i wszystko będzie działać, gdy wyjdzie poprawka można wrócić do starego menadżera.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Patrys, a możesz mi podrzucić jak to wykonać? Mam standardową instalację nginx+pfp-fpm (Debian, wszystko z paczek z dotdeb.org)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

apt-get install spawn-fcgi

I jakiś prosty skrypcik, podmień tylko nazwę domeny w zmiennych fcgisocket ( tak jak masz w nginx ) i scan_dir ( by po utworzeniu katalogu w /etc/php5 o nazwie domeny można mu dać indywidualne ustawienia) i użytkownika z którego ma startować w userid i groupid

 

#!/bin/sh
SPAWNFCGI="/usr/bin/spawn-fcgi"
FCGIPROGRAM="/usr/bin/php-cgi"
FCGISOCKET="/tmp/www/domena.pl.sock"
PHP_FCGI_CHILDREN=10
PHP_INI_SCAN_DIR="/etc/php5/domena.pl.d"
ALLOWED_ENV="PATH USER PHP_INI_SCAN_DIR"
USERID=USER
GROUPID=USER

export PHP_INI_SCAN_DIR

E=

for i in $ALLOWED_ENV; do
 E="$E $i=$(eval echo "\$$i")"
done

env - $E $SPAWNFCGI -s $FCGISOCKET -f $FCGIPROGRAM -u $USERID -g $GROUPID -C $PHP_FCGI_CHILDREN
chmod 777 $FCGISOCKET

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dzięki Patrys!

Co prawda jeszcze nie skorzystałem z porady, bo przypadkiem znalazłem winnego. (aczkolwiek nie rozwiązanie)

Wina tkwi jednak po stronie softu. Forum pracuje na ip.board (jak wht) i próba dodania lub wyświetlenia znacznika

sharedmedia=gallery:albums:nr_albumu który można sobie wybrać z zakładki Moje Media z poziomu edytora (wyświetla własny album z galerii) powoduje taki błąd.

Najwyraźniej stało się tak w momencie jakiejś aktualizacji oprogramowania, bo problem wcześniej jako taki nie występował. No nic, walczę dalej.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Raczej nie. Zauwaz, ze php nie rzucilo Ci normalnego bledu, tylko segfaultnelo. Jesli nawet skrypt php jest wadliwy, php powinno go zinterpretowac i sie na czysto zakonczyc.

 

Nie zawsze jest to możliwe - jeżeli w skrypcie np. zapętlisz rekurencyjne wywołania i nastąpi przekroczenie stosu to maszyna wirtualna php nie będzie miała szansy zareagować i w ładny sposób tego obsłużyć, tylko właśnie wysegfaultuje.

Edytowano przez megi (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Samu, a jak zmusić php, żeby tworzył plik .core? Przyszukałem wszystkie katalogi i takiego u mnie nie ma.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Chyba nie jest za dobrze, bo stworzył mi się plik rzędu 500MB, ale w treści jakieś bzdury. Jak powinien wyglądać taki plik ?

Fragment poniżej

 

1ŔA]Ăffffff.„	 H‹©ý˙˙‹öÂtfó‹öÂu÷H‹ý˙˙H‹@PH‰H‹‚ý˙˙H‹@XH‰GH‹sý˙˙;uż1ŔĂfff.„	 H‹Yý˙˙‹öÂtfó‹öÂu÷H‹@ý˙˙H‹pPH‹HXHp@HHH;uĚHů˙Éš;H‰ČH‰ň~D  H- Ęš;HÂH=˙Éš;îH…Ŕy
HęH Ęš;xôH‰GH‰1ŔĂf.„	 H‹Ůü˙˙‹P…Ňt˙t=~K˙t˙ tHc˙¸ä   Ă H‰÷éřţ˙˙„	 H‰÷é8˙˙˙„	 Hx  tËH‰÷éţ˙˙…˙uľHx  t·H‰÷fé;ý˙˙ff.„	 UH‰őSH‰űHěH‹Mü˙˙‹H…ÉtFHx  t?H…˙t*fčý˙˙H‹KHşĎ÷SăĄ›Ä H‰ČHÁů?H÷ęHÁúH)ĘH‰S1ŔH…íuHÄ[]Ăf¸`   H‰ßH‰îëčH‹ęű˙˙‹@‰E H‹Ýű˙˙‹@‰E1ŔëĘH‹Áű˙˙8t$¸{   ČH…˙t ‰Č%˙  ‰H…ötÁé‰1ŔĂůëßGCC: (Debian 4.3.5-4) 4.3.5  .shstrtab .hash .dynsym .dynstr .gnu.version .gnu.version_d .note .eh_frame_hdr .eh_frame .dynamic .rodata .data .text .rela.dyn .comment																        		p˙˙˙˙˙ 	  8	   	   	   	         	   Xp˙˙˙˙˙X	  Ř	         	   	         	   0p˙˙˙˙˙0	  R			   	  

Edytowano przez elroy (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Znalazłem poprzez strace fragment kodu który powoduje walnięcie procesu (martwią mnie tam wpisy not found...). Prosiłbym bardzo o zerknięcie.

 

W związku, że mam u producenta softu wykupione wsparcie techniczne, uważacie, że to już argument, żeby im to zgłosić ? (zwlekam z tym, bo lubią zgrabnie w takich sytuacjach odesłać do administratora serwera ;) )

 

 

gal.zip

Edytowano przez elroy (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Znalazłem poprzez strace fragment kodu który powoduje walnięcie procesu (martwią mnie tam wpisy not found...). Prosiłbym bardzo o zerknięcie.

 

W związku, że mam u producenta softu wykupione wsparcie techniczne, uważacie, że to już argument, żeby im to zgłosić ? (zwlekam z tym, bo lubią zgrabnie w takich sytuacjach odesłać do administratora serwera ;) )

 

 

gal.zip

 

 

Nie było mnie parę dni i widzę, że problem rozwiązany. Może jakieś wyjasnienie prosimy co było na rzeczy?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jest to stwierdzony błąd w Gallery 5.0.2 , dodatku do IP.board. Producent w kolejnej wersji ma wypuścić poprawkę.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×