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

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

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 

我无法find任何指示什么是listen queue:max listen queue:listen queue len指标。 任何人都可以解释

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

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

侦听队列len:这定义了将被排队的最大连接数。 达到此限制后,后续连接将被拒绝或忽略。 当连接被接受时,队列长度将会减less。

  • 这个值由php-fpm per poolconfiguration选项'listen.backlog'设置(默认:-1 =无限制)。
  • 由于使用了套接字,因此该值也受系统值“net.core.somaxconn”(大多数Linux系统上的默认值:128)的限制。

鉴于上述情况,有理由认为:

  • 侦听队列:是由尚未被接受的已经发起的连接的数目
  • 最大侦听队列:是php-fpm运行时侦听队列达到的最大值。