当前位置:  开发笔记 > 编程语言 > 正文

可以通过编程方式杀死TCP/IP堆栈吗?

如何解决《可以通过编程方式杀死TCP/IP堆栈吗?》经验,为你挑选了1个好方法。

我们的服务器应用程序正在侦听端口,一段时间后它不再接受传入连接.(虽然我很乐意解决这个问题,但这不是我在这里要求的;)

奇怪的是,当我们的应用程序停止接受端口44044上的连接时,IIS也是如此(在端口8080上).杀死我们的应用程序修复了一切 - IIS再次开始响应.

所以问题是,应用程序可以搞乱整个TCP/IP堆栈吗?或许,应用程序如何做到这一点?

无意识的细节:我们的应用程序是用C#编写的,在.Net 2.0下,在XP/SP2上.

澄清:IIS不会"拒绝"尝试连接.它永远不会看到它们.客户端正在获取"服务器未及时响应"消息(使用.Net TCP客户端.)



1> stephbu..:

你很可能正在挨饿.很容易在每秒高开/关事务环境中流失,例如服务于大量未池化请求的Web服务器.

这可以通过默认的TIME-WAIT延迟来实现 - 在回收之前必须关闭套接字的时间默认为90秒(如果我没记错的话)

有一堆可以调整的注册表项 - 建议至少创建/编辑以下键

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

TcpTimedWaitDelay = 30
MaxUserPort = 65534 
MaxHashTableSize = 65536 
MaxFreeTcbs = 16000 

MSDN和Technet上有很多关于这些密钥功能的文档.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有