php-fpm 状态页:这份报告中的“队列”项目是什么?

reg*_*ero 5 php-fpm

所以我有一个可用的 nginx+php-fpm 安装。php-fpm 状态报告页面被激活,我得到类似的东西(不关心设置,它是压力测试下的测试服务器):

pool:                 foobar
process manager:      dynamic
start time:           31/Jan/2012:08:18:45 +0000
start since:          23592
accepted conn:        3354
listen queue:         0
max listen queue:     0
listen queue len:     0
idle processes:       0
active processes:     10
total processes:      10
max active processes: 10
max children reached: 25
Run Code Online (Sandbox Code Playgroud)

我找不到任何关于listen queue:,max listen queue:listen queue len指标的指示。谁能解释一下?

cyb*_*x86 16

PHP-FPM 连接通过套接字(基于 TCP 或文件)进行。因此,PHP-FPM 必须“侦听”该套接字,然后“接受”连接。

由于可以接受连接的速率是有限的,因此在高负载下,启动连接和接受连接之间可能存在延迟。处于该状态的连接被“排队”。

listen queue len:这定义了将排队的最大连接数。一旦达到此限制,后续连接将被拒绝或忽略。随着连接被接受,队列长度将减少。

  • 该值由 php-fpm 每个池配置选项“listen.backlog”设置(默认值:-1=unlimited)。
  • 由于正在使用套接字,因此该值还受系统值“net.core.somaxconn”(大多数 Linux 系统上的默认值:128)的限制。

综上所述,理所当然的是:

  • 侦听队列:是尚未接受的已启动连接数
  • 最大侦听队列:是在 php-fpm 运行时侦听队列达到的最大值。