« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
| 公告 |
暂无公告... |
Blog信息 |
blog名称:南海大狼的blogger 日志总数:41 评论数量:34 留言数量:-7 访问次数:270801 建立时间:2005年8月15日 |

| |
(转)HP-UX中CLOSE_WAIT问题解决 电脑与网络
南海大狼 发表于 2010/1/25 10:32:20 |
作者一直被某个项目的HP-UX折磨,系统运行一段时间后就会出现大量的CLOSE_WAIT连接,然后Apusic应用服务器就一直处于非常繁忙的状态,但是Dump JVM发现Apusic的许多线程处在空闲状态,此时将Apusic重新启动将连接全部释放系统就恢复正常了。分析认为因为系统在公网上受到攻击有关,攻击会建立大量的空闲连接,然后使连接处于CLOSE_WAIT状态,从而系统需要消耗大量的资源去维护这些连接直到断开,从而影响系统运行的效果。为此,作者调整了相关的网络参数,效果比较明显,CPU压力大幅下降。ndd -set /dev/tcp tcp_keepalive_interval 120000但是,对于生产系统许多时候是不希望宕机的,有没有直接断开CLOSE_WAIT连接呢?可以,先用ndd -get /dev/tcp tcp_status |grep CLOSE_WAIT把已经CLOSE_WAIT的连接找出来,然后使用ndd -set /dev/tcp tcp_discon 0x<TCP地址>例如:输入 ndd -get /dev/tcp tcp_status |grep 133结果000000005843e168 010.010.010.133 48a68cfa 48a68cf8 00008000 00008072 b64b7c33 b64b7c33 00008000 00500 01460 [17,c539] TCP_ESTABLISHED 再输入 ndd -set /dev/tcp tcp_discon 0x000000005843e168 连接就会被主动断开了。如果有人可以写个脚本定期执行,至少能够解决临时性问题,如果要真正解决可能还需要想其他办法,欢迎大家一起来讨论。
posted on 2008-06-20 07:56 朱远翔 阅读(1754) 评论(4) 编辑 收藏 所属分类: 1.Java世界 500)this.width=500'>
-->
评论
# re: HP-UX中CLOSE_WAIT问题解决 2008-06-21 00:56 dennis
服务器进入CLOSE_WAIT,说明服务器是被动关闭,没有发FIN,停留在CLOSE_WAIT状态。解决办法就是强制关闭,socket设置SoLinger选项。 回复 更多评论
# re: HP-UX中CLOSE_WAIT问题解决 2008-07-07 22:00 朱远翔-Apusic技术顾问
@dennis 不好意思,没明白你的留言,希望能再补充解释一下,谢谢。 回复 更多评论
# re: HP-UX中CLOSE_WAIT问题解决 2009-01-15 15:56 myloveunix
这个问题解决很简单 你在监听套接字创建之后, int on=1; if(setsockopt(ListenSock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) != 0) ....错误返回 连接套接字创建之后, if(setsockopt(nLocalSock,SOL_SOCKET,SO_LINGER,(const char*)&ling,sizeof(ling)) !=0) ...错误返回 这样系统就不会出现close_wait状态的tcp套接字了。 回复 更多评论
# re: HP-UX中CLOSE_WAIT问题解决 2009-01-15 16:04 myloveunix
补充: struct linger ling; ling.l_onoff=1; ling.l_linger=5;/* (容许逗留的时间为5秒) */ |
|
|