Php 如何在Web服务器压力测试期间监控内存消耗?
我想在本地主机上运行的Apache Web服务器上进行压力测试。测试将请求Web服务器执行我编写的PHP应用程序。我想看看Web服务器(和/或相关的PHP进程)在测试期间消耗了多少内存(RAM)。或者看看测试完成后消耗了多少 我的操作系统是Ubuntu 13.10 我查看了ApacheBench、ApacheJMeter和httperf。他们似乎都没有提供这样的信息。我最多可以在httperf中看到一些CPU负载(在大多数情况下是100%,所以不太相关)Php 如何在Web服务器压力测试期间监控内存消耗?,php,linux,performance,apache,benchmarking,Php,Linux,Performance,Apache,Benchmarking,我想在本地主机上运行的Apache Web服务器上进行压力测试。测试将请求Web服务器执行我编写的PHP应用程序。我想看看Web服务器(和/或相关的PHP进程)在测试期间消耗了多少内存(RAM)。或者看看测试完成后消耗了多少 我的操作系统是Ubuntu 13.10 我查看了ApacheBench、ApacheJMeter和httperf。他们似乎都没有提供这样的信息。我最多可以在httperf中看到一些CPU负载(在大多数情况下是100%,所以不太相关) 是否有一些工具可以为我提供内存消耗信息?
是否有一些工具可以为我提供内存消耗信息?它不必是一个Web服务器基准测试工具,也可以是另一个与基准测试工具并行运行的Linux软件。我只是认为通过
top
命令手动监视测试有点不准确。提前谢谢。htop
可能正是您想要的
就我个人而言,我最近发现了一个名为byobu
——它在底部提供了一个方便的读数(您可以通过按F9进行配置)——
这正是我个人最喜欢的,因为你所描述的
尽管如此,您也可以查看xdebug——并在您测试的php脚本中使用类似于
xdebug\u memory\u usage()
——在脚本的关键点将信息转储到日志文件中例如top、htop、memstat、iotop、mysqltop。所有这些工具都非常适合在您对服务器进行围攻(以及它的朋友apachebench)时查看到底是什么在彻底破坏您的服务器。我使用vmstat进行内存、磁盘和CPU监控。下面是在基于Linux的Raspberry Pi堆底部复制文件时的一些度量。我在20世纪80年代第一次使用vmstat,监视早期Unix系统上的DB活动。详情请参阅:
vmstat要么从单独的终端运行,要么在组合脚本文件中运行
pi@raspberrypi /mnt $ time sudo sh -c "cp -r 256k /mnt/new2 && sync"
40 samles at 1 second intervals
vmstat 1 40 > vmstatRes.txt
real 0m38.781s
user 0m0.400s
sys 0m8.400s
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 304684 15208 65952 0 0 0 0 1109 319 39 2 59 0
1 0 0 282788 15208 87308 0 0 10292 0 4018 2994 5 57 9 29
1 1 0 256996 15208 112768 0 0 12380 0 4687 3863 3 53 0 44
2 2 0 231452 15212 138028 0 0 12288 40 4781 4024 5 55 0 40
0 1 0 216576 15216 152476 0 0 7004 10512 5649 3580 5 50 0 46
2 2 0 201688 15216 167288 0 0 7144 17488 5341 3527 2 52 0 46
1 0 0 195064 15216 173808 0 0 3192 9016 5909 3214 2 34 0 64
3 0 0 169520 15216 199152 0 0 12304 0 4704 3914 2 60 0 38
2 3 0 149988 15220 218288 0 0 9252 9892 5003 3614 2 52 0 45
0 2 0 131008 15224 237072 0 0 9112 10324 5086 3568 2 54 0 44
1 0 0 120160 15224 247784 0 0 5232 0 4976 2935 0 34 0 66
0 1 0 110424 15224 257404 0 0 4628 12864 5097 3034 4 36 0 60
1 0 0 86556 15224 281120 0 0 11536 0 4965 3874 3 54 0 43
1 1 0 73784 15224 293816 0 0 6188 11592 5545 3514 2 46 0 52
1 1 0 63252 15232 304132 0 0 4968 10320 4617 2748 2 34 0 64
0 1 0 43148 15232 323960 0 0 9652 7184 5126 3749 2 54 0 43
0 1 0 29336 15232 337560 0 0 6596 10036 4311 2796 2 38 0 59
1 1 0 23944 11696 346276 0 0 7480 0 5465 3455 2 46 0 52
2 1 0 23076 9580 349184 0 0 2860 10524 4521 2323 1 35 0 64
2 1 0 24440 5300 351508 0 0 8864 5188 4586 3215 1 66 0 33
0 1 0 24500 3900 352704 0 0 4896 11448 5974 3308 2 49 0 49
1 1 0 24432 3772 352700 0 0 10424 6208 4851 3682 2 60 0 38
1 1 0 23764 3772 353736 0 0 6568 5184 5970 3526 1 45 0 53
1 1 0 24068 3776 353500 0 0 4900 11388 5449 3142 0 40 0 60
0 1 0 24400 3780 352552 0 0 10068 8848 4821 3531 2 57 0 40
1 1 0 24152 3772 352588 0 0 8292 2784 5207 3588 2 50 0 48
1 1 0 23516 3772 353620 0 0 6800 7816 5475 3475 1 49 0 49
0 1 0 24260 3772 352940 0 0 7004 7424 5042 3284 4 43 0 52
2 1 0 24068 3776 353060 0 0 4624 10292 4798 2801 0 39 0 61
2 0 0 23820 3780 353340 0 0 8844 5508 5251 3609 0 56 0 44
2 1 0 24252 3772 352528 0 0 4552 12000 5053 2841 2 44 0 54
1 1 0 23696 3772 353120 0 0 10880 2176 4908 3694 2 58 0 40
1 0 0 24260 3772 352212 0 0 3748 11104 5208 2904 2 34 0 63
3 2 0 24136 3780 352084 0 0 10148 1628 4637 3568 1 55 0 44
0 1 0 24192 3780 352120 0 0 4016 10260 4719 2613 1 31 0 68
1 1 0 24392 3772 352076 0 0 6804 10972 5386 3473 1 52 0 47
1 1 0 24392 3772 351704 0 0 8568 8788 5101 3502 2 61 0 36
0 1 0 24376 3780 351764 0 0 0 30036 6711 1888 0 36 0 64
0 1 0 24252 3780 351928 0 0 28 2072 5629 1354 0 10 0 90
0 0 0 24768 3780 351968 0 0 40 20 1351 579 9 6 13 72
1 0 0 24768 3780 351968 0 0 0 0 1073 55 1 1 98 0
当我通过控制台手动启动脚本时,我也创建了一些PHP cronjob,我也想看到调试和其他东西 我提出了这样一种方法:
protected $consoleUpdate;
protected function printMemoryUsage() {
if ((time() - $this->consoleUpdate) >= 3) {
$this->consoleUpdate = time();
echo "Memory: ",
round(memory_get_usage(true) / (1024 * 1024)),
" MB",
"\r";
}
}
只要您想打印脚本内存使用情况,就可以随时调用此方法
注意控制台中的最后一个
\r
,它将光标返回到行首并覆盖该行。如果您没有任何其他输出,这会造成屏幕不移动的效果,相反,它会被更新。您可以使用top
或sar
。我首先选择top
。我使用图形化的pimpedhtop
。