jenkins 打安卓包 cpu使用过高处理操作
登录两个控制台
打包开始后 在其中一台机器执行ps -ef |grep jenkins 找到执行打包的主进程
复制pid 在另一个终端上执行 top -H -p pid
将最耗cpu的线程id转换为16进制输出
printf "%x \n" pid
会输出一个16进制的字符串
jstack pid | grep 16进制字符串 -A 30
输出内容
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f7cbc5e0000, 262275072, 0) failed; error='Cannot allocate memory' (errno=12)
后百度发现 由于tomcat使用的内存较少 导致的问题, 定位到问题后 修改setenv.sh,添加如下参数
JAVA_OPTS="-server -Xms2048m -Xmx4096m -XX:PermSize=256M -XX:MaxPermSize=512m"
开始的时候-Xms2048m -Xmx2048m 都为2048 但是在打包测试过程中还是报异常,后来跟开发人员沟通后,大致了解 整个过程所需的内存范围为4个G左右 后来修改 再次测试完全没问题