pmap 挂在 OOM 进程上

pmap 挂在 OOM 进程上

我确实尝试过搜索,但 pmap 上似乎没有太多内容,所以这里是。

我有一个与 WebLogic 实例配合使用的脚本来收集它们的数据,我们可以将这些数据发送给开发人员进行故障排除。数据收集中包含指定实例 PID 上的 pmap,但当实例遇到线程阻塞、OC 较大或处于失败状态时,pmap 会挂起。

由于我们使用的服务器上没有安装超时(也不能安装),我尝试编写一个条件,让 pmap 进程运行不超过 45 秒,如果超过则终止它,但它没有似乎不起作用,因为 pmap 仍然挂在受影响的实例上。

这是代码:

echo "Running pmap for a maximum of 45 seconds..."
pmap -x $1 > /tmp/pmapdump.txt &
pmapPID=$!
sleep 10
 pmapRunning=$(pgrep -fl "${pmapPID}" |head -1 |awk '{print $1}')
if [ "${pmapRunning}" != "" ]; then
  sleep 30
  echo "The pmap appears to be stuck. This typically happens if the instance is in a failed state or has stuck threads."
  echo "Killing the pmap and moving on with the rest of the script..."
  kill -9 "${pmapPID}"
else
  :
fi

这是由主脚本调用的,并且似乎执行正确,除了不终止进程并像我决定创建此脚本之前那样挂起。

非常感谢任何帮助/建议,因为我开始为此烦恼不已。

相关内容