Linux內存小談

事情的起因是我們寫的項目總是莫名其妙的被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 詳情 [https://www.cnblogs.com/kakawith/p/10613070.html]
    uname -a 查看系統內核
    free -h 查看內存使用情況

後來懷疑會不會是項目oom了,或者是內存泄漏,我是真的害怕內存泄漏,但是我昨晚在自己機器上用visualVM監控了一下GC情況,最起碼我寫的定時任務看起來是沒有泄漏。。後來去打開了一個系統日誌,監控系統kill oom的一個日誌 /var/log/messages,修改了一下。
vim /etc/rsyslog.d/50-default.conf 編輯了一下那個配置文件
![改成這樣](https://upload-images.jianshu.io/upload_images/11675149-de5179f96df08314.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
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環境開始搞。

  今天估計就這樣結束了,啊,恐怖。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章