免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2534 | 回复: 4
打印 上一主题 下一主题

大家都怎么解决fb下ipfw+apache的FIN_WAIT_2问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-30 10:10 |只看该作者 |倒序浏览
该调的都已经调了(httpd.conf sysctl.conf)
FIN_WAIT_2依然很高
网上找到如下文章

  1. Freebsd的ipfw会有一些问题,在tcp结束的时候4次握手,server perform active close,那么先向client发个fin,然后进入fin_wait_1状态,等待client发来ack。一旦接受到ack,马上进入 fin_wait_2状态,等待client也发个fin过来,然后ack,然后time_wait.
  2. 可是问题就来了,假设server进入2状态后client没有进行graceful close,或者client发的fin被某种通道上的东西挡住了,那么server端就会等待下去,等待的时间长短lifetime由tcp的一些参数决定,不同平台不同. 而ipfw默认对创建dynamic rules会发keepalive packets,
  3. net.inet.ip.fw.dyn_keepalive: 1

  4. 而对于fin_wait_2,根据参数推测,会等net.inet.ip.fw.dyn_ack_lifetime: 300 秒左右。问题就来了,它在最后20秒又自动keepalive,造成这个状态又自动延续,又会等300秒,似乎永不停歇。。重复重复再重复。。用netstat -an | grep FIN_WAIT 看会有很多。。

  5. 那么解决问题的根本就在于不要发keepalive
  6. ipfw diable dyn_keepalive
  7. 或者
  8. sysctl -w net.inet.ip.fw.dyn_keepalive=0
复制代码

但是个人感觉net.inet.ip.fw.dyn_keepalive=0对客户端不太好,希望有经验的高手给个好的建议

论坛徽章:
0
2 [报告]
发表于 2006-04-30 11:39 |只看该作者
Do NOT use stateful rules!

论坛徽章:
0
3 [报告]
发表于 2006-04-30 12:00 |只看该作者
原帖由 antijp 于 2006-4-30 11:39 发表
Do NOT use stateful rules!

这是最后的选择
也不能说不是个办法

论坛徽章:
0
4 [报告]
发表于 2006-04-30 23:20 |只看该作者
sysctl -w net.inet.tcp.msl=2500

论坛徽章:
0
5 [报告]
发表于 2006-05-01 10:14 |只看该作者
原帖由 iammecn 于 2006-4-30 23:20 发表
sysctl -w net.inet.tcp.msl=2500

这个我早已经用过了,效果不是很明显
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP