事情的起因是我们写的项目总是莫名其妙的被linux系统给kill掉,这件事拖着也有好久了,我一开始就怀疑是内存的问题,但是一直没有去管。毕竟心里觉得,内存的问题真的轮不到我管,一个Java进程跑起来200M,服务器就2个G,查看已经占有的内存1.9G或者1.8G。。我内心满满的绝望。。经不住老师的催促,只能硬着头皮想办法搞。。

想来想去,这1.8G到底都是谁在用,想到小组以前是走的PHP,可是总以为PHP是解释型语言,项目就干放在那会占内存吗?项目是怎么部署的,总感觉这么多项目在这 一定会吃内存,可就是想不到怎么吃。实在不行了,问了爱民学长,这一搞,就是4个小时。。。里面涉及到了一些Linux常用的指令和处理问题的思路,我在这里记录一下。

df -h查看磁盘

ps auxw --sort=rss 查看内存占用情况

netstat -tunlp 扫描使用中的端口

apachectl -k graceful 优雅地重启Apache 详情 []

uname -a 查看系统内核

free -h 查看内存使用情况

后来怀疑会不会是项目oom了,或者是内存泄漏,我是真的害怕内存泄漏,但是我昨晚在自己机器上用visualVM监控了一下GC情况,最起码我写的定时任务看起来是没有泄漏。。后来去打开了一个系统日志,监控系统kill oom的一个日志 /var/log/messages,修改了一下。

vim /etc/rsyslog.d/50-default.conf 编辑了一下那个配置文件

改成这样

sudo service rsyslog restart

后来来了个查看Java程序内存状况的指令 jmap -heap pid

再后来聊到了牛逼哄哄的学长写项目时候弄的一个PHP的消息队列,可是我怎么关都关不掉他们。配置在 /etc/supervisor/conf.d下,然后需要重启 supervisorctl restart 文件名 每个文件,但是这时候出错了,环境被人改了。。这时候想着重新把supervisor卸载安装一下,apt-get remove supervisor apt-get install supervisor,可是python环境哪又出了问题。。

这个角度有点刁钻,现在学长去忙了,我自己还有几条路可以选。

1.看看能不能优化一下项目的jvm参数

2.写个shell脚本,项目kill了自己跑起来

3.把php的消息队列都停掉,一步一步从python环境开始搞。

今天估计就这样结束了,啊,恐怖。

有关的项目源码在我的个人项目中均可以找到,甚至发现更神奇的东西噢~(在线表单项目,可自定义表单组件)