在 php5-fpm 状态页面上,哪些瓶颈导致我的服务器无法accept()
足够快地处理新套接字?
pool: www
process manager: static
start time: 20/Jan/2015:16:37:18 +0000
start since: 176705
accepted conn: 903749
listen queue: 0
max listen queue: 129
listen queue len: 128
idle processes: 59
active processes: 69
total processes: 128
max active processes: 128
max children reached: 0
如您所见,我已经到达了监听队列,这种情况经常发生。我了解监听队列背后的基本逻辑,下面详细介绍了它:php-fpm 状态页面:此报告中的“队列”项目是什么?
我知道我应该增加队列长度,我会这样做。但我的问题是为什么我的监听队列是否已满?首先,防止其满载的瓶颈是什么?我假设如果有大量监听积压,那么一定有什么东西没有“跟上”?这是 CPU 瓶颈/负载问题,速度不够快吗accept()
?
答案1
您似乎没有足够的 PHP 工作进程来处理您接收的流量。
显而易见的解决方案是:
- 允许更多总进程。但您需要有 CPU 和 RAM 来处理此问题,而且您没有说明您有哪些可用资源或消耗了多少资源。
- 让您的应用程序运行得更快。更好的编程,适当使用页面缓存和操作码缓存等。