事情的起因是我們寫的項目總是莫名其妙的被linux系統(tǒng)給kill掉矮慕,這件事拖著也有好久了,我一開始就懷疑是內(nèi)存的問題啄骇,但是一直沒有去管痴鳄。畢竟心里覺得,內(nèi)存的問題真的輪不到我管缸夹,一個Java進程跑起來200M痪寻,服務(wù)器就2個G,查看已經(jīng)占有的內(nèi)存1.9G或者1.8G虽惭。橡类。我內(nèi)心滿滿的絕望。趟妥。經(jīng)不住老師的催促猫态,只能硬著頭皮想辦法搞。。
想來想去亲雪,這1.8G到底都是誰在用勇凭,想到小組以前是走的PHP,可是總以為PHP是解釋型語言义辕,項目就干放在那會占內(nèi)存嗎虾标?項目是怎么部署的,總感覺這么多項目在這 一定會吃內(nèi)存灌砖,可就是想不到怎么吃璧函。實在不行了,問了愛民學(xué)長基显,這一搞蘸吓,就是4個小時。撩幽。库继。里面涉及到了一些Linux常用的指令和處理問題的思路,我在這里記錄一下窜醉。
df -h查看磁盤
ps auxw --sort=rss 查看內(nèi)存占用情況
netstat -tunlp 掃描使用中的端口
apachectl -k graceful 優(yōu)雅地重啟Apache 詳情 [https://www.cnblogs.com/kakawith/p/10613070.html]
uname -a 查看系統(tǒng)內(nèi)核
free -h 查看內(nèi)存使用情況
后來懷疑會不會是項目oom了宪萄,或者是內(nèi)存泄漏,我是真的害怕內(nèi)存泄漏榨惰,但是我昨晚在自己機器上用visualVM監(jiān)控了一下GC情況拜英,最起碼我寫的定時任務(wù)看起來是沒有泄漏。琅催。后來去打開了一個系統(tǒng)日志居凶,監(jiān)控系統(tǒng)kill oom的一個日志 /var/log/messages,修改了一下恢暖。
vim /etc/rsyslog.d/50-default.conf 編輯了一下那個配置文件
sudo service rsyslog restart
后來來了個查看Java程序內(nèi)存狀況的指令 jmap -heap pid
再后來聊到了牛逼哄哄的學(xué)長寫項目時候弄的一個PHP的消息隊列排监,可是我怎么關(guān)都關(guān)不掉他們。配置在 /etc/supervisor/conf.d下杰捂,然后需要重啟 supervisorctl restart 文件名 每個文件舆床,但是這時候出錯了,環(huán)境被人改了嫁佳。挨队。這時候想著重新把supervisor卸載安裝一下,apt-get remove supervisor apt-get install supervisor蒿往,可是python環(huán)境哪又出了問題盛垦。。
這個角度有點刁鉆瓤漏,現(xiàn)在學(xué)長去忙了腾夯,我自己還有幾條路可以選颊埃。
1.看看能不能優(yōu)化一下項目的jvm參數(shù)
2.寫個shell腳本,項目kill了自己跑起來
3.把php的消息隊列都停掉蝶俱,一步一步從python環(huán)境開始搞班利。
今天估計就這樣結(jié)束了,啊榨呆,恐怖罗标。
有關(guān)的項目源碼在我的個人項目中均可以找到,甚至發(fā)現(xiàn)更神奇的東西噢~(在線表單項目积蜻,可自定義表單組件)
小的在此請大家閑暇之余賞個Star嘻嘻嘻
https://github.com/syhdeclan/OnlineFormJava