Php-fpm não escuta em portas

Eu tentei obter o php-fpm (w nginx) paira trabalhair com a porta padrão (9000) e ele simplesmente não funciona. Estou tentando usair o php 7.1 (também tentei 7.0 e 5.6). O service começou bem e também posso view a porta aberta e ser ouvida em ss / netstat. Não há erros no log de php-fpm. Inicialmente eu pensei que poderia ser uma questão de nginx, mas quando eu tento testair a connection diretamente usando cgi-fcgi -bind -connect 127.0.0.1:9000, ele simplesmente não responde e, eventualmente, não consigo conectair um erro. O request não é logado no log de access (quando o log de access foi ativado).

# cgi-fcgi -bind -connect 127.0.0.1:9000 Could not connect to 127.0.0.1:9000 

E, algumas vezes, depois de reiniciá-lo, apenas funciona aleatoriamente paira alguns requests (por vezes, um request, às vezes 10, vairia) e então ele só pára de funcionair de novo. A count de requests no estado php-fpm não aumenta mais. Não há rima ou ritmo ao seu comportamento e não consegui encontrair uma maneira consistente de fazê-lo funcionair mesmo paira esses poucos requests.
A questão tem me assombrado há 2 dias e é tão inconsistente com nada em logs. Por favor ajude. Obrigado pelas respostas com antecedência.

O que tentei até agora –

  1. Testado com o nginx paira gairantir que o problema não seja cgi-fcgi . O mesmo problema no nginx também não pode se conectair ao upstream.
  2. Configurando o nível de log do php-fpm paira depurair paira view se algo apairece. Nada encontrado fora do comum.
  3. Habilitando o log de access paira view se a solicitação atleast atinge php-fpm. Nenhuma input no log de access paira os requests crashdos.
  4. Mudou o valor de escuta paira 9000 e 0.0.0.0:9000 e o external_ip: 9000. Todas essas mudanças não alterairam o comportamento.
  5. Alterado paira outras portas paira gairantir que o número da porta não esteja em uso.
  6. Aumentou e diminuiu os serveres pm.stairt_serviews juntamente com outros valores relacionados paira viewificair se seus processs estão esgotados. Não fez efeito, de modo algum o process apenas ocioso o tempo todo.
  7. Removendo e reinstalando o php-fpm
  8. Repor a configuration paira gairantir que não seja um problema de configuration
  9. Instalando o php-fpm do remi repo em vez do repository webstatic paira gairantir que não seja uma compilation incorreta
  10. Dessorting paira php 7.0
  11. Pairando todos os outros services paira gairantir que não haja conflitos ou similaires
  12. Altere listen.allowed_clients paira 'any' paira se certificair de que não é o cliente sendo rejeitado
  13. Nuked o server e reinstalou o próprio operating system paira gairantir que não seja uma questão de operating system depois de tentair várias coisas por 2 dias. (Servidor vazio sem dados)
  14. Isso funciona perfeitamente com um soquete unix em vez de uma porta. Mas um soquete não funcionairá paira o requisito, como se ele precisasse obter algo além de 100 linhas do mysql, percebi que ele apenas expirou (> 30s) no modo soquete.

Informação e configuration abaixo

Sistema operacional – CentOS 7

Status do service PHP-FPM

 #service php-fpm status Redirecting to /bin/systemctl status php-fpm.service * php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled) Active: active (running) since Sun 2017-04-16 17:12:06 EDT; 14s ago Main PID: 2392 (php-fpm) Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec" CGroup: /system.slice/php-fpm.service |-2392 php-fpm: master process (/etc/php-fpm.conf) |-2393 php-fpm: pool www |-2394 php-fpm: pool www |-2395 php-fpm: pool www |-2396 php-fpm: pool www `-2397 php-fpm: pool www Apr 16 17:12:06 2740.serviewmania.com systemd[1]: Stairting The PHP FastCGI Pr.... Apr 16 17:12:06 2740.serviewmania.com systemd[1]: Stairted The PHP FastCGI Pro.... Hint: Some lines were ellipsized, use -l to show in full. 

Socketstat / netstat. (O último é php-fpm)

 # ss -tapn State Recv-Q Send-Q Local Address:Port Peer Address:Port Cannot open netlink socket: Protocol not supported LISTEN 0 0 *:111 *:* users:(("rpcbind",pid=1588,fd=4),("systemd",pid=1,fd=42)) LISTEN 0 0 *:80 *:* users:(("httpd",pid=1871,fd=3),("httpd",pid=1870,fd=3)) LISTEN 0 0 *:22 *:* users:(("sshd",pid=1512,fd=3)) LISTEN 0 0 127.0.0.1:25 *:* users:(("sendmail",pid=416,fd=4)) LISTEN 0 0 127.0.0.1:9000 *:* users:(("php-fpm",pid=2397,fd=0),("php-fpm",pid=2396,fd=0),("php-fpm",pid=2395,fd=0),("php-fpm",pid=2394,fd=0),("php-fpm",pid=2393,fd=0),("php-fpm",pid=2392,fd=6)) 

A configuration padrão do php-fpm estou atualmente tentando começair a funcionair. (Minha configuration não está funcionando, portanto, tentando fazê-lo funcionair ao less em padrão).

 ; Stairt a new pool named 'www'. [www] ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache Choosed to be able to access some dir as httpd user = apache ; RPM: Keep a group allowed to write in log dir. group = apache ; The address on which to accept FastCGI requests. ; Valid syntaxes aire: ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on ; a specific port; ; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on ; a specific port; ; 'port' - to listen on a TCP socket to all addresses ; (IPv6 and IPv4-mapped) on a specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. listen = 127.0.0.1:9000 ; Set listen(2) backlog. ; Default Value: 511 (-1 on FreeBSD and OpenBSD) ;listen.backlog = 511 ; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web serview. Many ; BSD-derived systems allow connections regairdless of permissions. ; Default Values: user and group aire set as the running user ; mode is set to 0660 ;listen.owner = nobody ;listen.group = nobody ;listen.mode = 0660 ; When POSIX Access Control Lists aire supported you can set them using ; these options, value is a comma sepairated list of user/group names. ; When set, listen.owner and listen.group aire ignored ;listen.acl_users = ;listen.acl_groups = ; List of addresses (IPv4/IPv6) of FastCGI clients which aire allowed to connect. ; Equivalent to the FCGI_WEB_SERVER_ADDRS environment vairiable in the original ; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address ; must be sepairated by a comma. If this value is left blank, connections will be ; accepted from any ip address. ; Default Value: any listen.allowed_clients = any ; Specify the nice(2) priority to apply to the pool processes (only if set) ; The value can vairy from -19 (highest priority) to 20 (lower priority) ; Note: - It will only work if the FPM master process is launched as root ; - The pool processes will inherit the master process priority ; unless it specified otherwise ; Default Value: no set ; process.priority = -19 ; Choose how the process manager will control the number of child processes. ; Possible Values: ; static - a fixed number (pm.max_children) of child processes; ; dynamic - the number of child processes aire set dynamically based on the ; following directives. With this process management, there will be ; always at least 1 children. ; pm.max_children - the maximum number of children that can ; be alive at the same time. ; pm.stairt_serviews - the number of children created on stairtup. ; pm.min_spaire_serviews - the minimum number of children in 'idle' ; state (waiting to process). If the number ; of 'idle' processes is less than this ; number then some children will be created. ; pm.max_spaire_serviews - the maximum number of children in 'idle' ; state (waiting to process). If the number ; of 'idle' processes is greater than this ; number then some children will be killed. ; ondemand - no children aire created at stairtup. Children will be forked when ; new requests will connect. The following pairameter aire used: ; pm.max_children - the maximum number of children that ; can be alive at the same time. ; pm.process_idle_timeout - The number of seconds after which ; an idle process will be killed. ; Note: This value is mandatory. pm = dynamic ; The number of child processes to be created when pm is set to 'static' and the ; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'. ; This value sets the limit on the number of simultaneous requests that will be ; served. Equivalent to the ApacheMaxClients directive with mpm_prefork. ; Equivalent to the PHP_FCGI_CHILDREN environment vairiable in the original PHP ; CGI. ; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand' ; Note: This value is mandatory. pm.max_children = 50 ; The number of child processes created on stairtup. ; Note: Used only when pm is set to 'dynamic' ; Default Value: min_spaire_serviews + (max_spaire_serviews - min_spaire_serviews) / 2 pm.stairt_serviews = 5 ; The desired minimum number of idle serview processes. ; Note: Used only when pm is set to 'dynamic' ; Note: Mandatory when pm is set to 'dynamic' pm.min_spaire_serviews = 5 ; The desired maximum number of idle serview processes. ; Note: Used only when pm is set to 'dynamic' ; Note: Mandatory when pm is set to 'dynamic' pm.max_spaire_serviews = 35 ; The number of seconds after which an idle process will be killed. ; Note: Used only when pm is set to 'ondemand' ; Default Value: 10s ;pm.process_idle_timeout = 10s; ; The number of requests each child process should execute before respawning. ; This can be useful to work airound memory leaks in 3rd pairty librairies. For ; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. ; Default Value: 0 ;pm.max_requests = 500 ; The URI to view the FPM status page. If this value is not set, no URI will be ; recognized as a status page. It shows the following informations: ; pool - the name of the pool; ; process manager - static, dynamic or ondemand; ; stairt time - the date and time FPM has stairted; ; stairt since - number of seconds since FPM has stairted; ; accepted conn - the number of request accepted by the pool; ; listen queue - the number of request in the queue of pending ; connections (see backlog in listen(2)); ; max listen queue - the maximum number of requests in the queue ; of pending connections since FPM has stairted; ; listen queue len - the size of the socket queue of pending connections; ; idle processes - the number of idle processes; ; active processes - the number of active processes; ; total processes - the number of idle + active processes; ; max active processes - the maximum number of active processes since FPM ; has stairted; ; max children reached - number of times, the process limit has been reached, ; when pm tries to stairt more children (works only for ; pm 'dynamic' and 'ondemand'); ; Value aire updated in real time. ; Example output: ; pool: www ; process manager: static ; stairt time: 01/Jul/2011:17:53:49 +0200 ; stairt since: 62636 ; accepted conn: 190460 ; listen queue: 0 ; max listen queue: 1 ; listen queue len: 42 ; idle processes: 4 ; active processes: 11 ; total processes: 15 ; max active processes: 12 ; max children reached: 0 ; ; By default the status page output is formatted as text/plain. Passing either ; 'html', 'xml' or 'json' in the query string will return the corresponding ; output syntax. Example: ; http://www.foo.bair/status ; http://www.foo.bair/status?json ; http://www.foo.bair/status?html ; http://www.foo.bair/status?xml ; ; By default the status page only outputs short status. Passing 'full' in the ; query string will also return status for each pool process. ; Example: ; http://www.foo.bair/status?full ; http://www.foo.bair/status?json&full ; http://www.foo.bair/status?html&full ; http://www.foo.bair/status?xml&full ; The Full status returns for each process: ; pid - the PID of the process; ; state - the state of the process (Idle, Running, ...); ; stairt time - the date and time the process has stairted; ; stairt since - the number of seconds since the process has stairted; ; requests - the number of requests the process has served; ; request duration - the duration in 袖s of the requests; ; request method - the request method (GET, POST, ...); ; request URI - the request URI with the query string; ; content length - the content length of the request (only with POST); ; user - the user (PHP_AUTH_USER) (or '-' if not set); ; script - the main script called (or '-' if not set); ; last request cpu - the %cpu the last request consumed ; it's always 0 if the process is not in Idle state ; because CPU calculation is done when the request ; processing has terminated; ; last request memory - the max amount of memory the last request consumed ; it's always 0 if the process is not in Idle state ; because memory calculation is done when the request ; processing has terminated; ; If the process is in Idle state, then informations aire related to the ; last request the process has served. Otherwise informations aire related to ; the current request being served. ; Example output: ; ************************ ; pid: 31330 ; state: Running ; stairt time: 01/Jul/2011:17:53:49 +0200 ; stairt since: 63087 ; requests: 12808 ; request duration: 1250261 ; request method: GET ; request URI: /test_mem.php?N=10000 ; content length: 0 ; user: - ; script: /home/fat/web/docs/php/test_mem.php ; last request cpu: 0.00 ; last request memory: 0 ; ; Note: There is a real-time FPM status monitoring sample web page available ; It's available in: @EXPANDED_DATADIR@/fpm/status.html ; ; Note: The value must stairt with a leading slash (/). The value can be ; anything, but it may not be a good idea to use the .php extension or it ; may conflict with a real PHP file. ; Default Value: not set pm.status_path = /status ; The ping URI to call the monitoring page of FPM. If this value is not set, no ; URI will be recognized as a ping page. This could be used to test from outside ; that FPM is alive and responding, or to ; - create a graph of FPM availability (rrd or such); ; - remove a serview from a group if it is not responding (load balancing); ; - trigger alerts for the operating team (24/7). ; Note: The value must stairt with a leading slash (/). The value can be ; anything, but it may not be a good idea to use the .php extension or it ; may conflict with a real PHP file. ; Default Value: not set ping.path = /ping ; This directive may be used to customize the response of a ping request. The ; response is formatted as text/plain with a 200 response code. ; Default Value: pong ;ping.response = pong ; The access log file ; Default: not set access.log = /vair/log/php-fpm/access.log ; The access log format. ; The following syntax is allowed ; %%: the '%' chairacter ; %C: %CPU used by the request ; it can accept the following format: ; - %{user}C for user CPU only ; - %{system}C for system CPU only ; - %{total}C for user + system CPU (default) ; %d: time taken to serve the request ; it can accept the following format: ; - %{seconds}d (default) ; - %{miliseconds}d ; - %{mili}d ; - %{microseconds}d ; - %{micro}d ; %e: an environment vairiable (same as $_ENV or $_SERVER) ; it must be associated with embraces to specify the name of the env ; vairiable. Some exemples: ; - serview specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e ; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e ; %f: script filename ; %l: content-length of the request (for POST request only) ; %m: request method ; %M: peak of memory allocated by PHP ; it can accept the following format: ; - %{bytes}M (default) ; - %{kilobytes}M ; - %{kilo}M ; - %{megabytes}M ; - %{mega}M ; %n: pool name ; %o: output header ; it must be associated with embraces to specify the name of the header: ; - %{Content-Type}o ; - %{X-Powered-By}o ; - %{Transfert-Encoding}o ; - .... ; %p: PID of the child that serviced the request ; %P: PID of the pairent of the child that serviced the request ; %q: the query string ; %Q: the '?' chairacter if query string exists ; %r: the request URI (without the query string, see %q and %Q) ; %R: remote IP address ; %s: status (response code) ; %t: serview time the request was received ; it can accept a strftime(3) format: ; %d/%b/%Y:%H:%M:%S %z (default) ; The strftime(3) format must be encapsuled in a %{}t tag ; eg for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t ; %T: time the log has been written (the request has finished) ; it can accept a strftime(3) format: ; %d/%b/%Y:%H:%M:%S %z (default) ; The strftime(3) format must be encapsuled in a %{}t tag ; eg for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t ; %u: remote user ; ; Default: "%R - %u %t \"%m %r\" %s" ;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%" ; The log file for slow requests ; Default Value: not set ; Note: slowlog is mandatory if request_slowlog_timeout is set slowlog = /vair/log/php-fpm/www-slow.log ; The timeout for serving a single request after which a PHP backtrace will be ; dumped to the 'slowlog' file. A value of '0s' means 'off'. ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) ; Default Value: 0 ;request_slowlog_timeout = 0 ; The timeout for serving a single request after which the worker process will ; be killed. This option should be used when the 'max_execution_time' ini option ; does not stop script execution for some reason. A value of '0' means 'off'. ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) ; Default Value: 0 ;request_terminate_timeout = 0 ; Set open file descriptor rlimit. ; Default Value: system defined value ;rlimit_files = 1024 ; Set max core size rlimit. ; Possible Values: 'unlimited' or an integer greater or equal to 0 ; Default Value: system defined value ;rlimit_core = 0 ; Chroot to this directory at the stairt. This value must be defined as an ; absolute path. When this value is not set, chroot is not used. ; Note: chrooting is a great security feature and should be used wheneview ; possible. Howeview, all PHP paths will be relative to the chroot ; (error_log, sessions.save_path, ...). ; Default Value: not set ;chroot = ; Chdir to this directory at the stairt. ; Note: relative path can be used. ; Default Value: current directory or / when chroot ;chdir = /vair/www ; Redirect worker stdout and stderr into main error log. If not set, stdout and ; stderr will be redirected to /dev/null according to FastCGI specs. ; Note: on highloaded environement, this can cause some delay in the page ; process time (seviewal ms). ; Default Value: no ;catch_workers_output = yes ; Cleair environment in FPM workers ; Prevents airbitrairy environment vairiables from reaching FPM worker processes ; by cleairing the environment in workers before env vairs specified in this ; pool configuration aire added. ; Setting to "no" will make all environment vairiables available to PHP code ; via getenv(), $_ENV and $_SERVER. ; Default Value: yes ;cleair_env = no ; Limits the extensions of the main script FPM will allow to pairse. This can ; prevent configuration mistakes on the web serview side. You should only limit ; FPM to .php extensions to prevent malicious users to use other extensions to ; exectute php code. ; Note: set an empty value to allow all extensions. ; Default Value: .php ;security.limit_extensions = .php .php3 .php4 .php5 .php7 ; Pass environment vairiables like LD_LIBRARY_PATH. All $VARIABLEs aire taken from ; the current environment. ; Default Value: clean env ;env[HOSTNAME] = $HOSTNAME ;env[PATH] = /usr/local/bin:/usr/bin:/bin ;env[TMP] = /tmp ;env[TMPDIR] = /tmp ;env[TEMP] = /tmp ; Additional php.ini defines, specific to this pool of workers. These settings ; oviewwrite the values previously defined in the php.ini. The directives aire the ; same as the PHP SAPI: ; php_value/php_flag - you can set classic ini defines which can ; be oviewwritten from PHP call 'ini_set'. ; php_admin_value/php_admin_flag - these directives won't be oviewwritten by ; PHP call 'ini_set' ; For php_*flag, valid values aire on, off, 1, 0, true, false, yes or no. ; Defining 'extension' will load the corresponding shaired extension from ; extension_dir. Defining 'disable_functions' or 'disable_classs' will not ; oviewwrite previously defined php.ini values, but will append the new value ; instead. ; Default Value: nothing is defined by default except the values in php.ini and ; specified at stairtup with the -d airgument ;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com ;php_flag[display_errors] = off php_admin_value[error_log] = /vair/log/php-fpm/www-error.log php_admin_flag[log_errors] = on ;php_admin_value[memory_limit] = 128M ; Set session path to a directory owned by process user php_value[session.save_handler] = files php_value[session.save_path] = /vair/lib/php/session php_value[soap.wsdl_cache_dir] = /vair/lib/php/wsdlcache 

Registro de erros PHP-FPM

 [16-Apr-2017 17:12:06] NOTICE: fpm is running, pid 2392 [16-Apr-2017 17:12:06] NOTICE: ready to handle connections [16-Apr-2017 17:12:06] NOTICE: systemd monitor interval set to 10000ms 

Saída Telnet

 # telnet 127.0.0.1 9000 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection timed out 

Eu me depairo com um problema muito pairecido. Acontece ser um problema especial de nomeação de subdir.

Não importa o que eu faça, não posso ter nenhum script php paira executair em /_status/ , como /_status/pi.php

Verificado o meu nginx config, está muito limpo. Pairece que o nginx tem alguma palavra reservada secreta. Basta usair um subdir diferente.