La risorsa temporaneamente non è disponibile durante la connessione a livello superiore (php5-fpm)

Ho spesso questo errore su pagine casuali quando sono come le connessioni ~ + 10K (netstat -an | grep 80 | wc -l). Ciò accade mentre ci è ancora + 10GB di memory libera e il carico del server è inferiore a 3.

I miei config appropriati:

/etc/php5/fpm/php.ini

memory_limit = 1024M default_socket_timeout = 120 

/etc/php5/fpm/pool.d/www.conf

 pm = dynamic pm.max_children = 30 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 5 ;pm.max_requests =20000 #uncommented with any value didn't fixed request_terminate_timeout = 120s 

Ho anche raddoubleto i suddetti vizi (vale a dire 60 bambini, 10 inizio, 10 server max) senza alcun risultato.

/etc/nginx/nginx.conf

 worker_connections 4024; keepalive_timeout 10; 

Nginx stesso dietro Vernice e memcached è abilitazione. rendering della pagina è abbastanza veloce in generale.

Questo sembra essere un problema molto comune, non ho trovato alcuna soluzione utile o addirittura analisi delle possibili cause. Quindi i tuoi suggerimenti / soluzioni sono molto apprezzati.

  • Server Apache: proxy inversa e websockets tramite mod_proxy_wstunnel
  • Hai bisogno di aumentare il throughput di nginx a un suono upstream del socket - tuning del kernel di linux?
  • Configurazione di Apache 2.4 mod_proxy_wstunnel per Socket.IO 1.0
  • ERRORE 2002 MYSQL socket /tmp/mysql.sock
  • .NET 2.0: una connessione stabilita è stata interrotta dal software nella macchina host
  • Che cosa deve contenere mysqld.sock, perché non lo ho?
  • 502: Connessione resettata da peer quando si utilizza systemd-socket-proxyd per triggersre fpm on-demand
  • Etichetta SElinux per le prese php-fpm
  • One Solution collect form web for “La risorsa temporaneamente non è disponibile durante la connessione a livello superiore (php5-fpm)”

    Purtroppo è difficile dare una risposta definitiva a questa domanda senza più dettagli.

    Ho un paio di ipotesi però:

    La mia prima ipotesi è che i socket (s) del lavoratore di php5-fpm hanno un backlog troppo piccolo per il tuo carico. La lunghezza della coda di ordini è 128 per impostazione predefinita su Linux.

    Per aumentarlo dovresti:

    1. Aumenta il valore sysctl di net.core.somaxconn .
    2. Aumenta l'impostazione di configuration php5-fpm di listen.backlog .

    Potresti provare ad aumentare sia per il 2048 ad esempio per vedere se ciò aiuta.

    La seconda ipotesi è il limite massimo dei descrittori dei file aperti per process per i lavoratori di nginx. Il modo migliore per aumentarlo dipende dalla tua distribuzione. Su Ubuntu / Debian dovresti avere un'occhiata nel /etc/default/nginx e worker_rlimit_nofile configuration di worker_rlimit_nofile nginx.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.