Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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/2/jquery/83.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
Tcp 从服务器读取行时发生Redis错误_Tcp_Redis_Predis - Fatal编程技术网

Tcp 从服务器读取行时发生Redis错误

Tcp 从服务器读取行时发生Redis错误,tcp,redis,predis,Tcp,Redis,Predis,以下是我在linux系统上处理tcp和打开文件的当前值: $cat /proc/sys/fs/file-max # outputs 1,624,164. $cat /proc/sys/net/ipv4/tcp_max_syn_backlog #outputs 1,048,576 $cat /proc/sys/net/core/somaxconn # output 65535 $ulimit -a # open files = 1,024,000, max user processes =

以下是我在linux系统上处理tcp和打开文件的当前值:

$cat /proc/sys/fs/file-max  # outputs 1,624,164.
$cat /proc/sys/net/ipv4/tcp_max_syn_backlog  #outputs 1,048,576
$cat /proc/sys/net/core/somaxconn  # output 65535
$ulimit -a  # open files = 1,024,000, max user processes = 10,240
问题2: 我还将redis中的超时设置为0,tcp keepalive设置为60,tcp backlog设置为65535。我正在使用predis,我将那里的超时设置为0,读写超时设置为-1。但是,我们会定期得到下面的错误

2015-10-28 11:24:14     406309  cron-web        Error while reading line from the server. [tcp://10.0.0.1:6379]
2015-10-28 19:15:13     0       web-billing-3   Error while reading line from the server. [tcp://10.0.0.1:6379]
2015-10-28 19:56:58     0       web-billing-3   Operation timed out [tcp://10.0.0.1:6379]
2015-10-29 10:02:25     437257  web-billing-1   Error while reading line from the server. [tcp://10.0.0.1:6379]
2015-10-29 12:03:54     439897  cron-web        Error while reading line from the server. [tcp://10.0.0.1:6379]
2015-10-29 15:06:23     443772  web-billing-3   Error while reading line from the server. [tcp://10.0.0.1:6379]

我尝试将超时侵入更改为300,但仍然不起作用。linux系统参数的设置也如问题1所示。所有这些都无助于局势的发展。有什么建议吗?

这种情况似乎发生在w/PRedis之前,可能是它使用连接的方式导致服务器上的IP连接跟踪过载。或者您的脚本触发了“太多”连接。无论哪种方法,你都可以很容易地判断出情况是否如此

在Redis服务器上,运行
dmsg | grep conntrack
。如果您看到类似于
ip\u conntrack:table full,droping packet
的消息,那么这就是问题所在。您可以按照中的步骤通过更改
/proc/sys/net/ipv4/ip\u conntrack\u max
设置来修复它,以匹配/超过您在
/proc/sys/net/ipv4/netfilter/ip\u conntrack\u计数中看到的峰值

最终,这可能属于超级用户,因为这可能是一个系统级问题

编辑: 要确定并发连接,您需要查看
info clients
和当前连接数。您需要随着时间的推移跟踪这一点,以确定并发配置文件是什么,以便查看它是否可能是问题所在。显然,您运行的细粒度解析(即检查和存储的频率越高)越有可能捕获并发峰值


我真的怀疑问题出在Predis上,因为它知道连接管理问题。如果可以,请尝试使用phpredis查看是否继续发生。

我得到的输出是[11351916.175115]nf_conntrack版本0.5.0(16384个存储桶,最大65536个)。在我的redis实例上,当我运行“redis cli info stats”时,我总共收到了超过1100万个连接。我的redis超时设置为0,tcp积压设置为65535。tcp keepalive设置为60。接收的
总连接数
统计只是一个计数器,它不包括并发连接计数,这可能是您需要发现的更多。我也在跟踪并发连接。但是我想得到一些反馈,关于输出{{[11351916.175115]nfïconntrack版本0.5.0(16384个桶,65536个最大值)}}是否意味着有问题,因为我没有得到类似的{{{ipïconntrack:table full,droping packet}}