gpt4 book ai didi

java - linux下负载测试(内存,总时间,%cpu)

转载 作者:行者123 更新时间:2023-11-28 21:33:41 25 4
gpt4 key购买 nike

我必须使用标准软件在 Red Hat Linux 6.2 下执行负载测试,即我不能在那里安装任何东西。它旨在考虑 1000 10000 100000 和 1000000 次迭代的总时间、总内存使用量和 CPU 百分比。

我要测试的软件包含生产者和消费者。两者都作为独立进程启动。我的想法是在批处理模式下使用 top linux 命令。

我为此写了两个 bash 脚本:

#!/bin/bash
# $1 of repetitions

echo $$
java -jar jms-test-tool-0.0.1-SNAPSHOT.jar -S -N$1 -F./IN -Ddummy > ./input.log

java -jar jms-test-tool-0.0.1-SNAPSHOT.jar -C -N$1 -F./OUT -Ddummy > ./output.log

这个脚本做的第一件事是将他自己的 pid (echo $$) 发送到标准输出。此脚本接收迭代次数 ($1) 作为参数,它用作 java 进程的参数 (-N$1)。第一个 java 调用将向第二个进程发送一个文件 $1 次,第二个进程将读取 $1 次文件。

第二个脚本 (master.sh) 有一个 for 循环,其中包含所需的步骤(1000 10000 100000 和 1000000),在每次迭代中调用从属设备并接收从属设备的 pid

master.sh
#!/bin/bash
for steps in 1000 10000 100000 1000000
do
pid=`./slave.sh $steps `

echo "Slave pid is : $pid"
top -b -p$pid
done

使用 top 我想获取内存、时间和使用的 %cpu,但是从进程的 pid 没有出现在进程表中。

然后是两个问题。我在这里做错了什么?有人知道执行此测试的更好方法吗?

最佳答案

首先,“pid=prog”只有在 prog 完成后才会在 pid 中给你 prog 的输出。

您想做类似“prog & pid=$!”的事情将进程的 pid 启动到后台。然后你可以做任何你喜欢的事情来分析这个过程,如果你想暂停直到过程终止,使用“wait $pid”。

关于java - linux下负载测试(内存,总时间,%cpu),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9092884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com