1 首先查看日志文件
命令:tail -f /var/log/messages
2 根據(jù)報錯信息趟紊,定位到內(nèi)存溢出出現(xiàn)在23:19分(連續(xù)2天出現(xiàn)在23點(diǎn)之后)
3 初步判定是定時腳本問題:每天23點(diǎn)有執(zhí)行抓取程序
4 猜測可能是抓取程序死循環(huán)導(dǎo)致的:優(yōu)化了代碼吧雹,檢查是否有死循環(huán)的邏輯(發(fā)現(xiàn)沒有),做了一系列非空判斷:for循環(huán)里數(shù)據(jù)為空continue旺垒,for循環(huán)外數(shù)據(jù)為空 return。
5 檢查crontab定時任務(wù)的執(zhí)行時間:發(fā)現(xiàn)了真正的問題: 定時任務(wù)竟然是這么寫的 * 23 * * *(每天23點(diǎn)間隔一分鐘就會執(zhí)行任務(wù),23:00:00延欠,23:01:00涛酗,23:02:00....) 逆天了铡原;設(shè)計(jì)初衷是每天23點(diǎn)執(zhí)行定時任務(wù),正確的寫法是:0 23 * * *
6 修改crontab之后商叹,服務(wù)器再也沒有宕機(jī)燕刻。
tips:
1 打開crontab: crontab -e
2 crontab表達(dá)式測試工具(力薦):http://tool.lu/crontab