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

Apache套接字没有关闭?

如何解决《Apache套接字没有关闭?》经验,为你挑选了2个好方法。

我有一个使用CherryPy编写的Web应用程序,它在本地运行127.0.0.1:4321.我们使用mod-rewrite和mod-proxy让Apache充当反向代理; Apache还处理我们的SSL加密,最终可能用于传输所有静态内容.

这一切都适用于小型工作负载.但是,我最近urllib2编写了一个压力测试脚本,可以模拟100个客户端的工作负载.一段时间后,每个客户端从Apache获得503错误,表明Apache无法连接127.0.0.1:4321.CherryPy运行正常,但我的Apache错误日志显示如下行:

[Thu Oct 02 12:55:44 2008] [error] (OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : proxy: HTTP: attempt to connect to 127.0.0.1:4321 (*) failed

谷歌搜索此错误表明Apache可能已用完套接字文件描述符.由于我只运行了100个客户端,这意味着我的urllib2连接和Apache 之间的连接没有被关闭(我肯定是在调用.close()返回值urlopen),还是在Apache和CherryPy之间.

我已经确认我的urllib2请求是发送HTTP Connection: close标头,尽管KeepAlive On如果重要的话配置了Apache .

如果重要,我使用的是Python 2.5,Apache 2.2,CherryPy 3.0.3,并且服务器在Windows Server 2003上运行.

那么我的下一步是什么阻止这个问题呢?



1> 小智..:

您可以运行netstat命令,看看是否有一堆处于TIME_WAIT状态的套接字.根据您的MaxUserPort设置,您可能会严重限制可用端口的数量.此外,TcpTimedWaitDelay通常设置为240秒,因此使用的任何套接字都不能在四分钟内重复使用.

这里有更多好消息 - > http://smallvoid.com/article/winnt-tcpip-max-limit.html



2> fumanchu..:

SetEnv proxy-nokeepalive 1如果Apache和CP之间存在问题,可能会马上告诉你.有关详细信息,请参阅mod_proxy文档.

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