Я запускаю несколько JMeter тестов на Java-процесс, чтобы определить, насколько быстро реагирует веб-приложение под нагрузкой (более 500 пользователей). JMeter даст время ответа для каждого веб-запроса, и я написал скрипт для проверки связи с Tomcat Manager каждые X секунд, который даст мне текущий размер кучи JVM.
Я бы хотел собрать статистику на сервере% процессорного времени, используемого Tomcat. Я попытался сделать это в сценарии оболочки, используя ps
, например:
PS_RESULTS=`ps -o pcpu,pmem,nlwp -p $PID`
... запуск команды каждые X секунд и добавление результатов в текстовый файл. (для всех, кому интересно, pmem
= использование% mem и nlwp
- количество потоков)
Однако я обнаружил, что это дает другое определение «% загрузки ЦП», чем я хотел бы - согласно man-страницам для ps, pcpu
определяется как:
загрузка процессора процессом в формате "##. #". Это используемое время ЦП, деленное на время выполнения процесса (соотношение cputime / realtime), выраженное в процентах.
Другими словами, pcpu
дает мне% загрузки ЦП для процесса в течение времени жизни процесса.
Поскольку я хочу делать выборку каждые X секунд, я хотел бы собирать данные об использовании ЦП процессом только в текущее время - подобно тому, что top
даст мне
(Загрузка ЦП процесса с момента последнего обновления).
Как я могу собрать это из сценария оболочки?