PHP memcache未关闭连接?
我在各种web服务器上使用连接memcache服务器 我是这样连接的:PHP memcache未关闭连接?,php,memcached,Php,Memcached,我在各种web服务器上使用连接memcache服务器 我是这样连接的: $memcache = new Memcache; $memcache->addServer('memcache_host', 11211); $memcache->addServer('memcache_host2', 11211); 然后使用get&set获取或设置数据 在大多数情况下,它都可以正常工作,但如果速度变慢,那么我会看到memcache连接突然增加,这将产生问题 我认为这是因为默认情况下,add
$memcache = new Memcache;
$memcache->addServer('memcache_host', 11211);
$memcache->addServer('memcache_host2', 11211);
然后使用get&set
获取或设置数据
在大多数情况下,它都可以正常工作,但如果速度变慢,那么我会看到memcache连接突然增加,这将产生问题
我认为这是因为默认情况下,addServer
会创建持久连接&在处理请求后可能不会很快关闭它们
还报告了类似的问题
所以请让我知道这只是因为
addServer
函数的默认行为。我应该通过传递false
作为addServer
函数中的第三个参数来使用非持久连接。因为如果客户端没有明确关闭memcached open connections,内核可能会在keepalive模式下保持memcached open connections,因此降低以下参数可能会有所帮助,但会影响任何其他连接,如SSH。因此,将tcp_keepalive_时间放得太低不是一个好主意。创建以下文件:
vim /etc/sysctl.d/low-tcp-timeout.conf
# Keep connections in keepalive for 600 seconds. Default 7200s = 2h.
net.ipv4.tcp_keepalive_time = 600
# 0 probes. Default 9
net.ipv4.tcp_keepalive_probes = 0
# Default 75 seconds between each probe
net.ipv4.tcp_keepalive_intvl = 75
然后运行sysctl-p
应用这些值。
您还可以查看
net.ipv4.tcp\u fin\u timeout
tcp keep alive可能设置为高秒数。这与PHP无关。不要相信我的数据。看看netstat
@true我检查了我的netstat-nat&我可以看到这么多已建立的连接,在正常情况下,这个数字大约是13000,但当发生减速时,它们会增加到23000。此外,没有连接处于TIME\u WAIT状态。我的tcp\u keepalive\u时间为600。