我正在针对 Java 进程运行一些JMeter测试,以确定 Web 应用程序在负载下的响应速度(500 多个用户)。JMeter 将给出每个 Web 请求的响应时间,并且我编写了一个脚本来每 X 秒 ping 一次 Tomcat 管理器,这将获得 JVM 堆的当前大小。
我想在服务器上收集 Tomcat 使用的 CPU 百分比的统计信息。我尝试使用ps
这样的 shell 脚本来执行此操作:
PS_RESULTS=`ps -o pcpu,pmem,nlwp -p $PID`
...每 X 秒运行一次命令并将结果附加到文本文件中。(对于任何想知道的人,pmem
= % 内存使用率并且nlwp
是线程数)
但是,我发现这给出了与我想要的不同的“CPU 利用率百分比”定义 - 根据 ps 的联机帮助页,pcpu
定义为:
“##.#”格式的进程的cpu利用率。它是使用的 CPU 时间除以进程运行的时间(cputime/realtime 比率),以百分比表示。
换句话说,pcpu
给了我进程生命周期内进程的 % CPU 利用率。
由于我想每 X 秒采样一次,我想只收集当前时间进程的 CPU 利用率 - 类似于top
给我的结果(自上次更新以来进程的 CPU 利用率)。
如何从 shell 脚本中收集它?