我在各种Web服务器上使用PHP-memcache来连接内存缓存服务器。
我这样连接:
$memcache = new Memcache;
$memcache->addServer('memcache_host', 11211);
$memcache->addServer('memcache_host2', 11211);
然后使用get & set
获取或设置数据。
在大多数情况下它工作得很好但是如果某些东西变慢,那么我看到memcache连接突然增加,这会产生问题。
我认为这是因为默认情况下addServer
会创建持久连接&可能没有在提供请求后快速关闭它们。
还报告了类似的问题here。
所以请告诉我这只是因为addServer
函数的默认行为。我应该通过在false
函数中传递addServer
作为第三个参数来使用非持久连接。
答案 0 :(得分:0)
因为如果客户端没有明确地关闭memcached打开的连接可能由内核保持在keepalive模式,降低以下参数可能有所帮助,但会影响任何其他连接,如SSH。所以把tcp_keepalive_time放得太低并不是一个好主意 创建以下文件:
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_fin_timeout