在工作中遇到一个奇怪的问题。
在通过内网访问安装 memcached 的缓存机的时候,时不时 php 会产生大量连接缓存 time_out 的报错。
检查 memcached 所在机器的负载和网络均无问题。
后来想到 memcached 是通过短链接进行连接的,怀疑是防火墙的问题。
果然在网上查找相关资料发现,由于 iptables 会记录每个连接的跟踪信息,而连接 Mencached 打开关闭过于频繁会导致 iptables 跟踪表爆满,出现丢包现象。
解决办法,加大 iptables 跟踪表大小,调整对应的系统参数:
vi /etc/sysctl.conf
添加或修改以下参数
net.nf_conntrack_max = 6553500
net.netfilter.nf_conntrack_max = 6553500
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_established = 180
执行生效:
sysctl –p
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于