我正在运行一些针对Java进程的JMetertesting,以确定Web应用程序在负载(500多个用户)下的响应速度。 JMeter会给出每个Web请求的响应时间,而且我已经写了一个脚本来每隔X秒ping一次Tomcatpipe理器,这将使我获得当前JVM堆的大小。
我想收集服务器上Tomcat使用的cpu百分比的统计信息。 我试图在一个shell脚本中使用ps这样做:
PS_RESULTS=`ps -o pcpu,pmem,nlwp -p $PID`
…每隔X秒运行一次命令并将结果附加到文本文件中。 (对于任何人想知道, pmem =%mem使用和nlwp是线程数)
但是我发现这给出了“cpu利用率的百分比”的不同定义,根据ps的手册, pcpu被定义为:
xcopy和xcacls脚本
如何使Windows软件作为脚本内的其他用户运行?
使用 XSLT脚本修改XML节点
什么工具和语言可用于Windows Shell脚本?
使用通配符(*)将文件复制到bash脚本中的文件夹 – 为什么它不工作?
“##。#”格式的进程的cpu利用率。 cpu使用时间除以进程运行时间(cputime / realtime ratio),以百分比表示。
换句话说, pcpu在进程的整个生命周期中为我提供了进程占用cpu的百分比。
因为我想每X秒采样一次,所以我希望仅在当前时间收集进程的cpu利用率 – 类似于top给我的(上次更新之后进程的cpu利用率)。
我怎样才能从一个shell脚本收集这个?
如何将Example.bat更改为Example.pl?
在Windows XP系统locking/解锁时触发事件
如何在bash中获取MouseMove和MouseClick?
使用top -b (和其他开关,如果你想要不同的输出)。 它只会转储到stdout而不是跳入curses窗口。
在执行测试(如JMeter)时监控服务器的最有用的工具是dstat 。 它不仅为您提供了一系列来自服务器的统计信息,还将其输出到csv以便于导入到电子表格中,并允许您使用Python编写的模块扩展该工具。
用户负载: top -b -n 2 |grep cpu |tail -n 1 |awk '{print $2}' |sed 's/.[^.]*$//'系统负载: top -b -n 2 |grep cpu |tail -n 1 |awk '{print $3}' |sed 's/.[^.]*$//'空载: top -b -n 1 |grep cpu |tail -n 1 |awk '{print $5}' |sed 's/.[^.]*$//'
每个结果都是十进制的圆形。
关闭我的头顶,我会使用系统状态的/ proc文件系统视图 – 查看man 5 proc以查看/ proc / PID / stat的条目格式,其中包含总cpu使用率信息,并使用/ proc / stat来获取全局系统信息。 要获得“当前时间”使用情况,您可能确实是指“最近N秒使用的cpu”; 分开一小段距离取两个样本来查看当前的cpu消耗率。 然后,您可以将这些值嵌入一些有用的东西。 实际上,这可能比纯shell脚本更像Perl / Ruby / Python作业。
您可能可以通过/ proc / PID / status获得粗略的数据,从而给出进程的平均睡眠时间。 相当粗糙的数据虽然。
也使用1作为迭代计数,所以你将得到当前的快照,而不用等待在$延迟时间得到另一个。
top -b -n 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。