这个问题困扰了我,我不认为我自己会find答案,所以我认为最好是寻求帮助。
当我做:
root@server1:~$ ab -n 20 -c 20 http://www.testserver.com/
持续时间是4秒。
当我(同时):
root@server1:~$ ab -n 10 -c 10 http://www.testserver.com/ root@server2:~$ ab -n 10 -c 10 http://www.testserver.com/
合并的持续时间是2.5秒。
我认为testing服务器不会受到请求来自的位置的困扰,我假设testserver和server1和server2没有达到他们的带宽上限(页面不那么重)。
这是什么原因造成的? 答案可能会很愚蠢,但我会很开心,不pipe。
有一些types的负载增加了并发性,导致性能下降。 首先来到我的脑海是顺序硬盘读取 – 如果您有一个读取大文件的线程,您将获得最佳的整体性能。
您需要调查您的服务器负载并find瓶颈。
还有10个要求太less,不能作出任何结论。 正确的testing要求您监控正在进行的系统,并在您的负载系数稳定时确定系统的预热时间。 热身之后,您可以运行实际的testing,并对其结果进行统计研究,以确保其有效性。
当你运行1个进程时,整个CPU只是为这个进程工作。 (好吧,还有一些内核)。 当你运行两个进程时,内核必须在它们之间切换,并且在每个交换机上它必须存储一些数据到RAM,然后检索它,这会导致一些开销,所以更多的进程会产生更多的开销。
另外,这取决于有多less阿帕奇工人正在启动。 如果有10个正在运行,他们只需要服务器页面。 如果启动20个并行连接,则需要启动10个工作,这些工作使用资源(或者请求必须等待)。