Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP memcache未关闭连接?_Php_Memcached - Fatal编程技术网

PHP 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

我在各种web服务器上使用连接memcache服务器

我是这样连接的:

$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。