—-编辑:问题解决了。 不知何故,我的提供者似乎阻止testing到互联网。 远程机器testing成功1k r / s
我正在ubuntu 10.04.03 LTS上运行一个全新的Apache 2.2.1编译版本。 根服务器有32GB RAM,是一个i7-2600k。 内部networking上的虚拟机箱内可以使用相同的硬件和软件进行testing。
尽pipetesting服务器运行良好,每秒服务约800次的“真实”服务器每秒只能处理大约15次事务。
运行围困:sudo siege -b -c50 -d10 -i http:/ …服务器开始提供文件,但是大约20-40s之后,它会变得越来越慢,直到它几乎停顿。
unix top显示apache进程开始跨度,但很快它们全部消失,而系统只在0.1 – 0.3的平均负载下运行。几乎没有资源被使用。 这个过程大约吃0-1%的CPU。
httpd.conf的configuration与testing服务器上的configuration大致相同。 我也试图改变一些有意义的价值观,但没有帮助。
在遇到与nginx相同的问题后,我用netperf运行了一个networking基准testing,从远程位置成功返回600MB / s,但是从Intranet只有0.13MB
有没有人有一个想法如何解决这个问题。 我维护10年的Linux系统,从来没有见过类似的东西。
感谢您的任何帮助!
有了你为什么select编译而不是为你的环境使用预编译包的好奇心,你是否确保在系统上启用了交换function? 如果是RHEL,你应该有物理+ 2G交换(在你的情况下是34G)。
是否有任何奇怪的插件或不寻常的mod_ *项目configuration和运行(Java等)?
在我看来,最有可能的地方是确保你已经正确编译了这个软件包(或者使用一个来自你的平台的公共仓库),并且确保swapconfiguration正确。
这听起来像你在你的networking中的双工不匹配。 您将交换机设置为全双工,即closures双工协商协议,并将服务器设置为自动协商双工。 当它没有从交换机得到答复时,服务器默认为半双工,导致不匹配。 这将导致你看到的可怕的networking性能。