搜索引擎Killed原因排查
問題描述
騰訊云單核2G內存,運行程序的時候,程序有時會掛掉了,設置ulimit -c unlimited之后,想要core文件,結果程序運行的時候,直接提示killed,沒有出現core文件
調研查詢
killed的原因多是因為內存不足了,系統自動將程序殺死,此時沒有出現core文件
使用free -h查看內存使用情況
[root@VM_125_247_centos server]# free -htotal used free shared buff/cache available
Mem: 1.8G 699M 325M 424K 814M 963M
Swap: 0B 0B 0B
可用空間還有325M,自己的服務器在使用的時候,每次會將倒排索引的文件加載到內存中,如果是高并發的情況下,就會出現問題
我連續點擊我的服務器網頁,搜索內容,最后程序被killed了,然后打開系統的日志文件
vim /var/log/messages
搜索我的程序名search,發現如下內容,說明程序占用 內存過大,被killed掉了
317799 Aug 14 10:22:09 VM_125_247_centos kernel: Out of memory: Kill process 6280 (search) score 585 or sacrifice child
317800 Aug 14 10:22:09 VM_125_247_centos kernel: Killed process 6280 (search) total-vm:1628312kB, anon-rss:1133948kB, file-rss:156kB, shmem-rss:0kB
也可以使用top命令去查看某個單一進程使用內存的情況
top -p `pidof search`
search就是執行 程序的時候名稱,此時top可以監控單個程序的運行狀況
top指令含義
當我們使用top指令查看CPU使用情況的時候,會顯示如下內容,各個字段的含義解釋一下
%Cpu(s): 4.4 us, 1.7 sy, 0.0 ni, 93.6 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
us 列顯示了用戶模式下所花費 CPU 時間的百分比。us的值比較高時,說明用戶進程消耗的cpu時間多,但是如果長期大于50%,需要考慮優化用戶的程序
sy 列顯示了內核進程所花費的cpu時間的百分比。這里us + sy的參考值為80%,如果us+sy 大于 80%說明可能存在CPU不足。
ni 列顯示了用戶進程空間內改變過優先級的進程占用CPU百分比。
id 列顯示了cpu處在空閑狀態的時間百分比。
wa 列顯示了IO等待所占用的CPU時間的百分比。這里wa的參考值為30%,如果wa超過30%,說明IO等待嚴重,這可能是磁盤大量隨機訪問造成的,也可能磁盤或者磁盤訪問控制器的帶寬瓶頸造成的(主要是塊操作)。
hi 硬件中斷占用CPU
si 軟件中斷占用CPU
st 丟失時間占用CPU
內核機制
內存不足觸發了Linux內核的OOM機制Linux 下有個特性叫作 OOM killer(Out of Memory),從字面的意思可以看出和內存溢出相關,當內存耗盡時,該問題就會出現。在Linux2.6.內核中,當該功能打開后,在內存耗盡時,會根據一定的值計算出一個合適的用戶空間的進程給kill掉,以便釋放更多的內存,保證整個系統的穩定運行。在系統的日志中通常會有下面的打印日志:Out of memory: kill process 959 (sshd) score 55 or a child。
總結
以上是生活随笔為你收集整理的搜索引擎Killed原因排查的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不孕不育黄体过高
- 下一篇: 求一个带莹丫头字唯美qq网名。