PHP memcache没有关闭连接?

时间:2014-08-13 04:13:17

标签: php memcached

我在各种Web服务器上使用PHP-memcache来连接内存缓存服务器。

我这样连接:

$memcache = new Memcache;
$memcache->addServer('memcache_host', 11211);
$memcache->addServer('memcache_host2', 11211);

然后使用get & set获取或设置数据。

在大多数情况下它工作得很好但是如果某些东西变慢,那么我看到memcache连接突然增加,这会产生问题。

我认为这是因为默认情况下addServer会创建持久连接&可能没有在提供请求后快速关闭它们。

还报告了类似的问题here

所以请告诉我这只是因为addServer函数的默认行为。我应该通过在false函数中传递addServer作为第三个参数来使用非持久连接。

1 个答案:

答案 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