首页 » 调试日志 » 阅读文章

【memcache】 (tcp 11211) failed with: Cannot assign requested address (99)

2012-12-18 11:30 5206 0 发表评论

原因分析

客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端 口号,所以新的连接没办法绑定端口,即“Cannot assign requested address”。是客户端的问题不是服务器端的问题。
确认办法
命令行直接运行netstat,的确看到很多TIME_WAIT状态的连接。
解决办法:
执行命令修改如下2个内核参数

sysctl -w net.ipv4.tcp_timestamps=1 ##开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用

为什么我的眼里长含泪水

sysctl -w net.ipv4.tcp_tw_recycle=1 表示开启TCP连接中TIME-WAIT sockets的快速回收 忘不了你的温柔

  忘不了你的温柔

有关内核级别的keepalive和time_wait的优化调整

悄悄的,你该走了

vi /etc/sysctl

为什么我的眼里长含泪水

net.ipv4.tcp_tw_reuse = 1

注意:本文抄袭了。大家不要看。

net.ipv4.tcp_tw_recycle = 1

亲爱的你睡了吗?

net.ipv4.tcp_keepalive_time = 1800 为什么我的眼里长含泪水

net.ipv4.tcp_fin_timeout = 30 技术改造未来0abcd

net.core.netdev_max_backlog =8096 aaaaafdfdsf

修改完记的使用sysctl -p 让它生效

亲爱的你睡了吗?

以上参数的注解 www.0abcd.com

/proc/sys/net/ipv4/tcp_tw_reuse 该文件表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接。

andhe

 修改内核参数,快速回收time_wait sockets: andhe

[root@centos ~]# echo “net.ipv4.tcp_tw_reuse = 1″ >> /etc/sysctl.conf
# 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
[root@centos ~]# echo “net.ipv4.tcp_tw_recycle = 1″ >> /etc/sysctl.conf
# 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
[root@centos ~]# sysctl -p

注意:本文抄袭了。大家不要看。


收藏此文



评论 共0条 (RSS 2.0) 发表评论

  1. 暂无评论,快抢沙发吧。

发表评论

  • 使用新浪微博登陆
  • 
    疑问 冷笑 悲伤 坏蛋 感叹 微笑 脸红 大笑 吃惊 惊讶 困惑 酷 大声笑 恼火 古怪 转眼睛 给眼色 好主意 箭头 一般 哭了 绿人
  • want to say:

回到页首