起因
今天企业微信应用一直在发警报,某个采购商不接收我们的回调数据.他们开发又没有时间处理该问题.只有对该采购商的回调回写的数据不作判断了.于是快速定位代码,加入判断逻辑语句.测试无问题,可以发布到线上了.
打开Jenkins,爽快输入账号密码,点击发布.然而,tomcat停止后再也没有起来.
疑问
一直以来,使用Jenkins发布是没有任何问题的啊;会不会有是代码有问题.于是快速回滚线上代码.然而tomcat还是起不来.
先不管那么多,先看看tomcat的日志
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c8000000, 805306368, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 805306368 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/hs_err_pid9230.log
一看,才知道内存不够,所以起不来:Cannot allocate memory
;
使用 free -mh
命令一看,果然剩下可用内存: 150M.
因是生产环境的发单业务,故先把自用的Admin给停了,保证发单业务正常运行.
重启tomcat, 此时业务日志已正常输出.
总结
重启服务的时候,不能单单看业务日志,还要看tomcat的启动日志.这样才能快速定位问题所在.而在此事件中,我仅仅是看业务日志,一开始还以为是业务日志的路径定位到错的位置了.找来找去,浪费7 8分钟.
网友评论