Azkaban Executor进程CPU占用过高(sys占比高)排查求助
问题:Azkaban Executor在阿里云实例上CPU占用异常飙升排查求助
现象
我运行着一个Java版的Azkaban Executor服务,执行随机sleep脚本时,CPU占用率持续超过2000%,且top命令显示sys占比极高。
线程栈分析结果
抓取jstack文件分析后,发现大量线程卡在常规操作上:
- 超60个线程卡在
azkaban.execapp.JobRunner.run(JobRunner.java:652)的Thread.currentThread().setName处 - 96个线程卡在
java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1019)
这些操作本应是快速完成的,不应成为性能瓶颈。
跨环境对比
相同程序在自建10核86GB内存的KVM机器上运行时,CPU占用约200%,可处理约700个并发任务;但在阿里云32核128GB内存实例上,CPU占用超2000%,仅能处理约400个并发任务。怀疑云实例存在性能问题,寻求排查方案。
附相关信息
阿里云服务器ulimit -a输出
core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 506862 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 65535 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 131072 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
测试用随机sleep脚本
rnumber=$((RANDOM%240+60));echo "benchmarks shell: sleep $rnumber";sleep $rnumber;
线程栈补充说明
有线程栈截图可佐证上述线程卡点情况
内容的提问来源于stack exchange,提问作者hehe
相关产品推荐
相关产品推荐

