首页 文章

Perl Web应用程序问题:DBI连接失败:无法创建TCP / IP套接字(10106)

提问于
浏览
3

我的Perl Web应用程序存在问题,在Windows 2008r2上的Apache 2.2上运行,在CentOS服务器上使用独立的MySQL数据库 .

这是问题:我定期收到错误:

DBI connect('host=10.148.xxx.xxx:database=XXX','root',...) failed: Can't create TCP/IP socket (10106)

当我周期性地说,这意味着大多数时候一切都按预期工作,但我不时得到这个消息,它导致我的应用程序抛出错误页面 .

我在互联网上搜索了很多,发现了一些对我不起作用的推荐解决方案 .

首先,我认为我的数据库服务器无法访问,但使用MySQL企业监控器我发现事实并非如此 .

然后我认为我可能已经用完了TCP端口,所以我增加了临时端口的数量并减少了超时时间,如本文所述:http://www.outsystems.com/forums/discussion/6956/how-to-tune-the-tcp-ip-stack-for-high-volume-of-web-requests/

总之,我这样做了:

通过将Windows注册表项HKLM \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters上的TcpTimedWaitDelay TCP / IP参数设置为30秒来减少TIME_WAIT,作为DWORD值 . 通过命令netsh int ipv4 set dynamicportrange tcp start = 32767 num = 32768将dynamicportrange设置为更高的值来增加临时端口的范围,这将设置端口范围从32768到65535 .

但没有运气,仍然有超时

接下来,我使用这些参数更新了我的Apache配置文件,以进一步减少 KeepAliveTimeout

Timeout 100
MaxKeepAliveRequests 100
KeepAliveTimeout 5

不过,没有运气 .

我的主要问题是一切都在大部分时间都在工作,我甚至无法复制这个问题,但它每天都会出现,我的客户也很恼火 .

我甚至不确定去哪个方向,是MySQL,它是Perl DBI模块问题,是Apache,它是TCP / IP配置,所以任何帮助将不胜感激 .

1 回答

  • 0

    看起来您有一个单独的问题,表现在“无法创建TCP / IP套接字(10106)”的症状中 .

    除非你扭转了大量非常快速的连接,否则你不需要编辑短暂的端口或超时 . 通过这样做,你只是推迟了以后发生的事业 .

    我会检查你的应用程序(完整的)是否正在关闭连接?这包括数据库连接,客户端http套接字,文件/目录句柄等...使用“netstat”监视应用程序运行时当前打开的端口/连接 . 找出不断增加的内容,然后在您的应用程序(或同一台计算机上运行的其他应用程序)中追踪导致这些连接的原因 . 然后,您可以采取措施正确关闭连接,解决您的问题 .

    希望这可以帮助 . 祝好运 .

相关问题