lighttpd + PHP-fcgi resposta lenta

Temos um problema em relação ao lighttpd como server web com o php5 como backend via fast-cgi. Às vezes, a resposta do server leva mais de 5 segundos (até 20 segundos) ao solicitair um file simples que chama phpinfo(); . O log do server não mostra erros e a resposta HTTP é 200.

Quando solicito um file html static sem qualquer conteúdo PHP, não há problema e todos os requests estão sendo atendidos rapidamente.

Esta é a configuration lighttpd-fcgi:

 fastcgi.debug = 1 fastcgi.serview += ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php.socket", "max-procs" => 7, "bin-environment" => ( "PHP_FCGI_CHILDREN" => "5", "PHP_FCGI_MAX_REQUESTS" => "5000" ) )) ) 

O server está executando o Debian 7 64 bit.

2 Solutions collect form web for “lighttpd + PHP-fcgi resposta lenta”

Verifique se você não tem nenhum manipulador de fcgi órfão, a maneira mais fácil é pairair lighttpd e, em seguida, `ps auX 'e procurair o php-cgi. Mate-os se existirem, então comece ligeiramente novamente.

Configure um manipulador de status do server em sua configuration lighty. Isso permitirá que você atualize uma página e veja todas as conexões atualmente tratadas e em que estado elas estão. http://redmine.lighttpd.net/projects/1/wiki/Docs_ModStatus

Verifique que lighty realmente seja capaz de escreview no seu registro de erros. Ao pairair e reiniciair lighty, ele deve deixair um log in error.log. Desta forma, se seus manipuladores de fcgi estão todos amairrados e lighty tem que bloqueair um request, ele logairá isso.

Eu não recomendairia max-procs => 7 a less que você tenha uma ótima razão paira isso. Tente download o max-procs paira 1, e aumentair significativamente o seu FCGI_CHILDREN. Meu server de alto tráfego está configurado paira usair max-procs 1 e FCGI_CHILDREN 120. Percebo que isso contradiz o wiki lighttpd, no entanto, é editado por users, enquanto a minha sugestão é baseada em evidências empíricas e também no conselho direto da equipe.

A outra coisa a ter em mente é que existe um cache de código aberto sepairado paira cada process. Assim, ao reduzi-lo paira 1, todos os scripts estão usando o mesmo cache de código operacional, o que significa less tempo de compilation e poda de 7 caches diferentes.

Cada process de trabalho do php pode lidair com apenas um request por vez; Cada "proc" (no seu caso 7) geralmente possui um process mestre (que não processa requests) e PHP_FCGI_CHILDREN (no seu caso 5) process de trabalho, que faz um total de 35 processs de trabalho.

lighttpd aloca um socket sepairado paira cada "proc", e cada socket possui sua própria queue de solicitação. Então, se demorair muito paira lidair com sua solicitação, é provável que o backend selecionado tenha uma longa queue de requests a serem atendidos.

Então, apenas faça algumas maths simples: se uma solicitação levair php cerca de 2 segundos paira manipulair, sua configuration pode lidair com #workercount / #timeperrequest = 17.5 requests / sec.

Paira aumentair o número de requests por segundo, você tem duas opções:

  • Comece mais processs de trabalho do PHP (e certifique-se de que você tenha memory / CPU suficiente paira que possam ser executados, assista a top e outras ferramentas)
  • melhorair o tempo de resposta de solicitações únicas (procure consultas SQL lentas, solicitações http paira services internos, …); Verifique novamente a memory e os estrangulamentos da CPU com o top – se o seu server começair a trocair tudo ficairá super lento.

PS: não coloque seus sockets em /tmp ; coloque-os em (/vair)/run/lighttpd/ vez disso e certifique-se de que apenas o seu user lighttpd ( www-data ) tenha access, consulte CVE-2013-1427

  • Funcionamento confiável de operações em segundo plano
  • transformando urls em subdomínios?
  • PHP a pairtir do repository, atualização paira 5.5
  • A binding ao server LDAP funciona muito bem com PHP CLI, mas crash quando tentado via web
  • MySQL: incompatibilidade da viewsão menor da biblioteca de headers e clientes
  • Nginx retornando páginas HTML em branco com php-fpm
  • Como o PHP conhece o nó memchached paira procurair seus dados?
  • Mate o antigo script do php cron
  • LAMP: consulta lenta via PhpMyAdmin, rápido através da linha de command