聊天服務器故障處理記錄

2019-05-24聊天服務器故障處理記錄



1届宠、故障可能原因分析

在沒有更新前后端代碼邏輯的情況下蛤袒,服務器突然登不上,最有可能的原因是mongodb連接斷開塌衰,或者mongodb死鎖了诉稍。

前幾次服務器故障也是mongodb的問題,因此首先需要確認是不是mongodb出問題了最疆。


2杯巨、初步確認故障原因

確認是不是mongodb掛了,或者mongodb存在死鎖或慢查詢

1)ssh登錄服務器:

2)分析服務器性能:?

輸入命令ps aux --sort -rss 努酸,看cup是否被撐爆

輸入mongo進入mongo shell ,

輸入db.currentOp()?查看當前mongo進程服爷,看能不能找到與huarenchat數(shù)據(jù)庫相關的記錄。


db.currentOp()多輸入幾次获诈,如果存在huarenchat仍源,可以確定是mongo數(shù)據(jù)庫死鎖了。


復制下面命令舔涎,殺進程所有當前的mongo進程:

var ops = db.currentOp().inprog; for(i = 0; i < ops.length; i++){ var opid = ops[i].opid; db.killOp(opid); print("Stopping op #"+opid)

}

注意:進程可能殺不完笼踩,殺了又有,或者在某一刻沒有亡嫌,但不表示殺干凈嚎于。

通過這一步,可以初步故障由mongod數(shù)據(jù)庫引起




3掘而、查看服務器日志,確認故障

輸入pm2 log 可以查看服務器正在生成的日志


response time可能高達20幾秒于购,這一步可以確認故障是由mongodb查詢慢導致



4袍睡、找到慢查詢的原因,通過開啟mongodb性能分析工具

1)輸入mongo進入shell (有可能mongo斷開了連接价涝,進入不了女蜈,需重新啟動mongodb服務,啟動mongo服務命令:輸入 service mongod start)

2)輸入show dbs色瘩,再輸入 use huarenchat 切換到huanrenchat數(shù)據(jù)庫,

3)查看該數(shù)據(jù)庫下性能分析記錄是否開啟

輸入?db.getProfilingLevel(),返回值可能為0逸寓,1居兆,2

為0表示未開啟,1表示記錄大于100ms的查詢竹伸,2表示記錄所有查詢泥栖。

輸入db.setProfilingLevel( 1 )開啟


稍等十幾秒,輸入show profile 勋篓,可以看到最近的數(shù)據(jù)庫請求記錄

可以看到在huarenjie.msgs表中查詢一條消息吧享,docsExamined表示檢索了181631條數(shù)據(jù),nreturned:1 表示返回一條譬嚣, keysExamined表示索引查詢的次數(shù)钢颂,等于0表示沒有用到索引。

因此拜银,故障原因就是在msgs表18萬條數(shù)據(jù)中殊鞭,查詢某一條數(shù)據(jù),卻沒有用到索引尼桶,進行了一次非常耗時的全表查詢操灿;


通過db.system.profile.find( { millis : { $gt : 5000 } } ) 可以查詢大于5秒的查詢,通過此命令可以一條條找到具體的慢查詢泵督,分別予以解決



5趾盐、解決,添加索引

查看之前huarenchat表已添加的索引小腊,記錄如下:

db.users.createIndex({uid:1},{background:1})

db.unreadmsgs.createIndex({to_uid:1},{background:1})

db.socketobjs.createIndex({uid:1},{background:1})


db.msgs.createIndex({to_uid:1},{background:1})

db.msgs.createIndex({gid:-1},{background:1})

db.msgs.createIndex({client_time:-1},{background:1})


db.jpushs.createIndex({uid:1},{background:1})

db.groups.createIndex({gid:-1},{background:1})

db.counts.createIndex({date:-1},{background:1})

db.blacklists.createIndex({myuid:1},{background:1})


發(fā)現(xiàn)msgs表救鲤,沒有設置mid的索引

刪除索引命令db.msgs.dropIndexes()

查看索引命令db.msgs.getIndexSpecs()

添加索引命令db.msgs.createIndex({mid:-1},{background:1})


一行命令解決問題:

db.msgs.createIndex({mid:-1},{background:1})


解決問題后,記得關閉性能分析工具:huarenchat數(shù)據(jù)庫下溢豆,輸入db.setProfilingLevel(0 )蜒简,若長期開啟,會影響數(shù)據(jù)庫性能漩仙。



6搓茬、重啟應用犹赖,查詢性能

1)測試聊天功能是否正常,若正常卷仑,則不需要重啟峻村;

2)若需要重啟:進入項目根目錄:輸入npm run re_prd ,根目錄如下

3)查看性能是否恢復正常

輸入命令ps aux --sort -rss 锡凝,查看cup

輸入pm2 log 查看請求時間



7粘昨、重啟服務器

一般來說不需要重啟服務器,假如重啟了服務器窜锯,一定要清調防火墻設置

shutdown -r now 重啟服務器

等1分鐘张肾,重新登錄服務器,清掉防火墻:iptables?-F




8锚扎、參考資料

https://blog.csdn.net/huyangg/article/details/78918179

https://blog.51cto.com/chenql/2071267

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末吞瞪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子驾孔,更是在濱河造成了極大的恐慌骚亿,老刑警劉巖沛婴,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件示罗,死亡現(xiàn)場離奇詭異埠居,居然都是意外死亡,警方通過查閱死者的電腦和手機对碌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門荆虱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人俭缓,你說我怎么就攤上這事克伊。” “怎么了华坦?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵愿吹,是天一觀的道長。 經(jīng)常有香客問我惜姐,道長犁跪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任歹袁,我火速辦了婚禮坷衍,結果婚禮上,老公的妹妹穿的比我還像新娘条舔。我一直安慰自己枫耳,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布孟抗。 她就那樣靜靜地躺著迁杨,像睡著了一般钻心。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上铅协,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天捷沸,我揣著相機與錄音,去河邊找鬼狐史。 笑死痒给,一個胖子當著我的面吹牛,可吹牛的內容都是我干的骏全。 我是一名探鬼主播苍柏,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼姜贡!你這毒婦竟也來了序仙?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤鲁豪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后律秃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體爬橡,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年棒动,在試婚紗的時候發(fā)現(xiàn)自己被綠了糙申。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡船惨,死狀恐怖柜裸,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情粱锐,我是刑警寧澤疙挺,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站怜浅,受9級特大地震影響铐然,放射性物質發(fā)生泄漏。R本人自食惡果不足惜恶座,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一搀暑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧跨琳,春花似錦自点、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽功炮。三九已至,卻和暖如春埠啃,著一層夾襖步出監(jiān)牢的瞬間死宣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工碴开, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留毅该,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓潦牛,卻偏偏與公主長得像眶掌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子巴碗,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內容

  • Mongodb數(shù)據(jù)庫 [if !supportLists]1.[endif]課程介紹 [if !supportLi...
    6e5e50574d74閱讀 852評論 0 0
  • 一朴爬、MongoDB簡介 1.概述 ? MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫,由C++語言編寫橡淆。旨在為WE...
    鄭元吉閱讀 976評論 0 2
  • 簡介 MongoDB 是一個基于分布式文件存儲的NoSQL數(shù)據(jù)庫 由C++語言編寫召噩,運行穩(wěn)定,性能高 旨在為 WE...
    大熊_7d48閱讀 36,370評論 1 9
  • 1. MongoDB 簡介 MongoDB是一個可擴展的高性能逸爵,開源具滴,模式自由,面向文檔的NoSQL师倔,基于分布式文...
    rhlp閱讀 1,105評論 0 3
  • 背景: 閱讀新聞 12C CDB模式下RMAN備份與恢復 [日期:2016-11-29] 來源:Linux社區(qū) 作...
    陽屯okyepd閱讀 3,360評論 0 7