首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP TCP连接没有及时终止。

PHP TCP连接没有及时终止。
EN

Server Fault用户
提问于 2015-01-22 17:48:45
回答 1查看 2.3K关注 0票数 2

我通过nginx/PHP5-FPM (通过W3全缓存插件)为Wordpress页面提供服务。Nginx通过端口9000上的TCP套接字与PHP通信。我调整了通过sysctl的最大连接数为1024。我已经将max_execution_time (在php.ini中)和request_terminate_timeout (在FPM文件中)设置为30秒。

不时(比方说每8-10小时,而不是线性地),端口9000上打开的TCP连接数量增加到近1000个(在CLOSE_WAIT状态下,大部分是FIN_WAIT、FIN_WAIT_2),有时超过1000个,而我的web服务器开始返回504个错误。一旦我关闭了该端口上的所有TCP连接并重新启动FPM,它就会再次正常工作。

我启用了缓慢日志来查看发生了什么,如果我正确地阅读了它,它就挂在apc_store()调用上。

这是APC的错误配置,还是我需要调整FPM设置?如果脚本没有发送最终的终止信号,是否有办法强制这些TCP连接终止?

来自FPM慢速日志的示例跟踪:

代码语言:javascript
复制
[22-Jan-2015 09:42:49]  [pool www] pid 20327
script_filename = /var/www/index.php
[0x00007fdc527ec908] apc_store() /var/www/wp-content/plugins/w3-total-cache/lib/W3/Cache/Apc.php:55
[0x00007fdc527ec768] set() /var/www/wp-content/plugins/w3-total-cache/lib/W3/ObjectCache.php:254
[0x00007fdc527ec5e0] set() /var/www/wp-content/plugins/w3-total-cache/lib/W3/ObjectCache.php:300
[0x00007fdc527ec488] add() /var/www/wp-content/plugins/w3-total-cache/lib/W3/ObjectCacheBridge.php:73
[0x00007fdc527ec330] add() /var/www/wp-content/object-cache.php:94
[0x00007fdc527ec200] wp_cache_add() /var/www/wp-includes/option.php:176
[0x00007fdc527ec078] wp_load_alloptions() /var/www/wp-includes/functions.php:1272
[0x00007fdc527ebf40] is_blog_installed() /var/www/wp-includes/load.php:474
[0x00007fdc527ebdb0] wp_not_installed() /var/www/wp-settings.php:109
[0x00007fdc527ebc88] +++ dump failed
EN

回答 1

Server Fault用户

发布于 2015-01-22 18:09:52

看起来,您有许多TCP连接没有正确终止。基本上,CLOSE_WAIT连接意味着服务器已经接收到FIN数据包,现在正在等待最大段生存期或服务器告诉网络堆栈关闭套接字。FIN_WAIT消息是因为“服务器”向客户端发送了一个FIN,但是客户机尚未发送(或者更确切地说,服务器尚未收到)一个FIN-ACK来确认连接已关闭。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/661624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档