Fazer PHP-FPM Ouvir em 'IPAddress: Port' Em vez de '/var/run/php5-fpm.sock;'

2

Como estava testando o carregamento do meu site hoje (usando blitz.io ); apesar de muita RAM (mais de 50%) e poder de CPU (mais de 70%) disponíveis, os resultados mostraram que meu site começou a atingir um certo número de usuários simultâneos por segundo.

O log de erros do Nginx para o meu site (/var/log/nginx/example.com.error.log) mostrou algo assim:

2013/02/12 19:03:57 [error] 13749#0: *3175 connect() to unix:/var/run/php5-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 54.123.456.46, server: example.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "example.com"

Pesquisando no erro, levei-me a esta resposta , que indica o uso da conexão TCP \ IP em vez do soquete unix como solução para o problema; como os problemas "do soquete do unix em casos de alta carga são bem conhecidos" .

Então, como sugerido pela resposta:

  • Substitui listen = /var/run/php5-fpm.sock por listen 127.0.0.1:9000 em /etc/php5/fpm/pool.d/www.conf

  • Como não há /etc/nginx/php_location no meu distrio (Debian Wheezy), não fiz nada sobre isso.

  • Como uso fastcgi_pass unix:/var/run/php5-fpm.sock; no arquivo de configuração Nginx do meu site, ou seja, /etc/nginx/sites-available/example.com, substituí-lo por fastcgi_pass 127.0.0.1:9000;

Agora, o problema é que recebo um erro 502 Bad Gateway quando visito meu site. Sim, eu fiz reload Nginx e PHP-FPM. O que estou fazendo de errado? (Um novato total aqui, fazendo o meu melhor para aprender fazendo.)

Caso isso seja relevante, quando eu faço sudo service php5-fpm restart , recebo este erro:

[FAIL] Restarting PHP5 FastCGI Process Manager: php5-fpm failed!

E isso está acontecendo apenas desde que fiz as alterações mencionadas. Como posso consertar isso?

Por favor, deixe-me saber se devo obter mais informações.

UPDATE

O arquivo /etc/nginx/sites-available/default diz isto:

#   # With php5-cgi alone:
#   fastcgi_pass 127.0.0.1:9000;

#   # With php5-fpm:
#   fastcgi_pass unix:/var/run/php5-fpm.sock;

Então, isso significa que, se meu servidor estiver executando o PHP-FPM, DEVE , sem uma opção, use /var/run/php5-fpm.sock ?

    
por its_me 13.02.2013 / 18:50

4 respostas

4

Eu usei o comando $ sudo php5-fpm -t para testar se as configurações do PHP-FPM estão bem (se não, mostrará algum erro / informação).

Então, aqui está o resultado:

[13-Feb-2013 18:35:00] ERROR: [/etc/php5/fpm/pool.d/www.conf:33] value is NULL for a ZEND_INI_PARSER_ENTRY
[13-Feb-2013 18:35:00] ERROR: Unable to include /etc/php5/fpm/pool.d/www.conf from /etc/php5/fpm/php-fpm.conf at line 33
[13-Feb-2013 18:35:00] ERROR: failed to load configuration file '/etc/php5/fpm/php-fpm.conf'
[13-Feb-2013 18:35:00] ERROR: FPM initialization failed

O erro diz que algo está errado na Linha 33 de /etc/php5/fpm/pool.d/www.conf , que por acaso é: listen 127.0.0.1:9000 (não tanto de uma coincidência, é?).

Depois de ver, eu imediatamente comparei com outras linhas, e então me ocorreu, um = (sinal de igual) está faltando!

Então, isso é o que deveria ser: listen = 127.0.0.1:9000 e isso consertou tudo!

    
por 13.02.2013 / 19:48
3

Soa como (baseado no 502 e na mensagem de erro) que o serviço php-fpm está falhando ao iniciar.

Outra coisa poderia estar usando a porta 9000? Para verificar a execução:

sudo lsof -P | grep TCP | grep LISTEN

e procure por algo como TCP localhost:9000 (LISTEN) . Se houver, você pode usar uma porta diferente, digamos 9001.

Um bom lugar para verificar seria o log de erros do php-fpm. Pode não estar ativado por padrão. Se você olhar seu arquivo php-fpm conf (/etc/php5/fpm/php-fpm.conf no meu sistema), você encontrará a configuração 'error_log'. Este é o caminho para o seu log de erros. Se isso for comentado, descomente-o, reinicie o serviço php-fpm novamente e verifique o conteúdo do arquivo de log.

    
por 13.02.2013 / 19:01
1

Você pode usar o soquete IP / port ou Unix nas suas escolhas.

Isso depende da configuração do seu php-fpm, o arquivo é www.conf , no meu sistema (Ubuntu 16.04), este arquivo está localizado em /etc/php/7.0/fpm/pool.d .

Dentro deste arquivo, você pode encontrar uma diretiva chamada listen , se você definir esta diretiva como /run/php/php7.0-fpm.sock , por exemplo, então no seu nginx site config fastcgi_pass deve ser unix:/run/php/php7.0-fpm.sock ;

Mas se você definir a escuta para 127.0.0.1:9000 , então fastcfg_pass deve ser 127.0.0.1:9000 .

    
por 20.09.2016 / 17:18
0
[13-Feb-2013 18:35:00] ERROR: [/etc/php5/fpm/pool.d/www.conf:33] value is NULL for a ZEND_INI_PARSER_ENTRY
[13-Feb-2013 18:35:00] ERROR: Unable to include /etc/php5/fpm/pool.d/www.conf from /etc/php5/fpm/php-fpm.conf at line 33

Não está carregando www.conf porque tem um erro na linha 33, e provavelmente está retornando aos padrões que usam um soquete.

    
por 13.02.2013 / 19:40