Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Losowe PHP FastCGI / Resetowanie połączenia przez równorzędne / niekompletne nagłówki

Ten problem jest generalnie nie tylko związany z hostem, ale także związany z programistą, w zależności od konfiguracji.Jednak niektóre hosty są dość surowe w stosunku do FastCGI i ograniczają twoje możliwości.Na ogół łatwiej jest uruchomić bez użycia FastCGI i po prostu użyć mod_php, chyba że masz konkretną potrzebę korzystania z FastCGI w swojej aplikacji.

Musielibyśmy zobaczyć opakowanie fcgi (zawarte w /dev/shm/blackmou-php.fcgi) lub .htaccess w celu odrodzenia FastCGI, aby lepiej pomóc, nie wiedząc, z którymi plikami i kodem w tych plikach występuje problem. Czy twoje hosty używają Apache, LightHttpd lub Nginx (lub kombinacji)? W tym momencie zdecydowanie sugeruję aktualizację do PHP 5.3.9+

Ponieważ może to być spowodowane dowolną liczbą problemów, FastCGI skutecznie zapobiega atakom na witrynę/skrypty przez odmowę usługi lub awariom z powodu wycieków pamięci itp. (np. próba obsłużenia 80 000 połączeń po prostu przez upuszczenie i ograniczenie liczby żądań lub utknięcie w nieskończonej pętli przez przekroczenie limitu czasu i zakończenie procesu)

Ten błąd w szczególności jest zazwyczaj spowodowany przez idle_timeout (domyślnie 30 sekund) lub maksymalny limit procesów potomnych. Może to być również spowodowane przez kogoś, kto uruchamia długo działający skrypt i zamyka przeglądarkę/połączenie przed zakończeniem działania skryptu.

FastCGI uruchamia opakowanie procesu, wykonuje polecenie, przekracza limit czasu przed zakończeniem procesu, połączenie widziane jako resetowane przez peera.

Innym przykładem jest osiągnięcie maksymalnej liczby dzieci (maxProcesses) (np. wiele witryn pokazuje 2 lub 4 jako przykład, podczas gdy w rzeczywistości możesz potrzebować 20 lub 50 w zależności od średniego ruchu) Jeśli wszystkie dzieci są obecnie aktywne i dodatkowa prośba/ połączenie, dzieci są ograniczone do maxProcesses, którym FastCGI nie będzie udostępniać aktywnych dzieci, więc musi najpierw zakończyć proces i uruchomić nowy proces potomny lub odrzucić żądanie, w zależności od konfiguracji.

Oto więcej informacji na temat ustawień:

http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html

http://www.fastcgi.com/drupal/node/10

Przykład opakowania

PHP_FCGI_CHILDREN=0 #no limit
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS

AKTUALIZUJ

Aby dodać do tego, może to być również spowodowane limitem pamięci php

Jeśli powyższe nie rozwiąże problemu, zaktualizuj swój plik php.ini, aby zwiększyć memory_limit



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego MySql nie optymalizuje automatycznie zapytania BETWEEN?

  2. SQL_NO_CACHE nie działa

  3. jak używać mysql_data_seek z PDO?

  4. Bawić się! Framework 1.2.4 --- Ustawienia C3P0, aby uniknąć awarii łącza komunikacyjnego do czasu bezczynności

  5. Standardowa metoda dla funkcji IF() w MySQL