如何确定我的web服务器可以处理的最大客户端数量


How to determine the max. no. of clients that my web server can handle?

我需要比较3台不同计算机的性能,每台计算机都运行一台web服务器。我的想法是,如果在每台服务器上处理相同的php脚本,那么在给定负载限制下能够为最大数量的客户端提供服务的脚本将是最强大的脚本。

为了实现这一点,我有一个php脚本,它基本上可以进行一些繁重的数学计算。我将客户数保持为一个静态值。脚本将无限运行,直到cpu负载达到95%。当负载达到95%时,所有客户端的脚本都应该停止。在这个限制下,拥有最多客户端的系统将是性能最好的。

这个php脚本的一般结构如下:

static $clients_count=0;
static $sys_load=0;
//increment clients_count
$clients_count++;
while(sys_load<=95)
{
do_heavy_maths();
//calculate current cpu load 
sys_load=get_cpu_load();
}
echo "No. of max. clients this server handled: $clients_count";

所以现在我有几个问题:

  1. 是我比较CPU性能的正确方法。(PS我必须使用基于web的仅基准测试)
  2. 如何确定连接到我的服务器的客户端数量
  3. 请提供一种更好的方法来查找cpu负载。(使用load_averages很难得出最大cpu限制可以从/proc/loadavg中读取)

Thanx。。

尝试从内部执行此操作不如运行外部基准测试工具准确。

请记住,php核心有几个触发器可以避免或限制cpu消耗。

有了操作码缓存,这可以运行得更快,还有其他几个方面。

在以下位置检查一些工具:http://www.opensourcetesting.org/performance.php

我坚信PHP不适合在原始内存/cpu访问语言上编写,该语言具有更紧密的内存和cpu管理功能,如C.

觉得尝试一下很好。听起来是个有趣的项目。

不幸的是,这不是现实的负载测试。配置设置将严重影响单个脚本可以使用的容量。您只运行单线程,而Web服务器强烈依赖多线程容量。还有其他影响,如活动负载、其他进程、分配等,都会产生影响。甚至不考虑网络速度。

荷载通常用2.0这样的数字表示。这实际上并没有说明负载,因为它取决于CPU核心的数量,这是你的实际容量。

对于真正的基准测试,请使用真正的工具,如:http://httpd.apache.org/docs/2.0/programs/ab.html以及许多其他专业解决方案。

  1. 是我比较CPU性能的正确方法。(PS我必须使用基于网络的基准测试)
    不,如上所述。

  2. 如何确定连接到我的服务器的客户端数量
    只有当你知道客户端的实际操作时,才会这样做。与每次请求都运行复杂脚本的服务器相比,只传递静态文件的服务器的设置应该完全不同。

  3. 请提供一种更好的方法来查找cpu负载*使用从/proc/loadavg读取的load_average很难得出最大cpu限制。*
    在一个单独的过程中,记录所有的负载并记录它。把它放在你的测试日志旁边,你就会看到影响。要创建这个限制,PHP中唯一的方法就是执行命令,解析反馈。提到上面关于你必须注意的CPU、内核等的数量的注释。这不仅仅是一个百分比。