昨天凌晨三點,服務(wù)器突然宕機,早上起來看了一下,日志報錯、數(shù)據(jù)庫鏈接超時,cpu、內(nèi)存 磁盤利用率占比虛高 ,還好當(dāng)初系統(tǒng)采用了springcloud 架構(gòu),通過日志剖析,服務(wù)器凌晨1點-3點接發(fā)大量請求,10分鐘后宕機。一開始程序總認(rèn)為是負(fù)載均衡失效,進(jìn)一步分析,流量集中在inner 接口,應(yīng)該是FeignClient 請求,同時日志中出現(xiàn)sql 批量操作,進(jìn)一步確定是Eurake 負(fù)載失效或者項目內(nèi)部代碼邏輯問題。
高防服務(wù)器出現(xiàn)堵塞的原因,代碼邏輯中使用了多線程,并且頻繁操作數(shù)據(jù)庫,導(dǎo)致了程序運行一段時間之后,整個運營模塊宕機。排查難點:宕機時,服務(wù)器日志丟失,MySQL數(shù)據(jù)庫 鏈接不足導(dǎo)致服務(wù)器宕機,而導(dǎo)致鏈接不足的邏輯代碼較難定位。
服務(wù)器宕機一般分為兩種:假死機和死機第一種假死機(非藍(lán)屏死機):
1、是硬件資源暫時性地被消耗殆盡,因而無法對外部指令進(jìn)行響應(yīng)的現(xiàn)象, 通常是網(wǎng)站處于訪問高峰期,流量負(fù)載過大導(dǎo)致,帶寬等資源跑滿。
2、是否是遭受黑客入侵攻擊導(dǎo)致、最簡單的就是關(guān)掉服務(wù)器,等待一段時間,待服務(wù)器騰出更多的硬件資源即可恢復(fù)正常。
3、檢查是否是誤操作導(dǎo)致,可能原因和解決方案:進(jìn)程過多或者不斷創(chuàng)建,耗盡資源導(dǎo)致。數(shù)據(jù)庫程序死鎖,應(yīng)用程序異常導(dǎo)致,連接數(shù)過多導(dǎo)致。
4、數(shù)據(jù)丟失問題通常由于drop table的錯誤操作導(dǎo)致,并總是便隨著缺少可用備份的問題。糟糕的Schema和索引設(shè)計是第二大影響性能的問題。
5、在性能問題中,最普通的服務(wù)器宕機原因確實是運行很糟糕的SQL, 但也不一定都是這個原因,比如也有很多問題時由于服務(wù)器Bug或錯誤的行為導(dǎo)致的。
6、復(fù)制問題通常由于主備數(shù)據(jù)不一致導(dǎo)致。是否是應(yīng)用程序?qū)е聝?nèi)存溢出或者泄露,out of memory導(dǎo)致
第二種死機:如果通過ping測試服務(wù)器,鍵盤切換數(shù)字鎖定鍵(NumLock)或大寫鎖定鍵(Caps Lock)功能, 顯示器無畫面輸出,或者鼠標(biāo)光標(biāo)沒有任何反應(yīng)則表明服務(wù)器硬件故障,這就是服務(wù)器最麻煩的宕機情況。
服務(wù)器出現(xiàn)宕機的原因和解決方案1、定時任務(wù)設(shè)計不合理,批量處理程序設(shè)計不合理。生產(chǎn)環(huán)境中 往往沒有直接登錄服務(wù)器權(quán)限,一般思路從代碼邏輯入手,畢竟MySQL Linux 或者spring cloud 都是經(jīng)過時間檢驗的,服務(wù)器宕機更有可能是自己寫的代碼邏輯有問題。
2、要即時發(fā)現(xiàn)服務(wù)器宕機的問題。第一時間, 發(fā)現(xiàn)宕機的問題。如果服務(wù)器宕機時,為了避免造成不必要的損失,要盡早通知服務(wù)商解決相關(guān)問題。
3、準(zhǔn)備2個網(wǎng)站空間,他們存放的內(nèi)容相同,而ip不同,并且機房的地理位置不同。這樣2個主機, 同時宕機的可能性就大大降低了。第一時間發(fā)現(xiàn)宕機問題后,可以迅速的通過修改dnspod.com中的域名記錄,指向目前正常的網(wǎng)站空間。Dnspod解析生效的時間是實時的, 而一般的dns服務(wù)器,刷新時間較長,對外聲稱24小時內(nèi)生效,按照實際經(jīng)驗看來,差不多30分鐘內(nèi)生效,否則就要檢查域名綁定是否正確了。
域名解析其實就2個步驟:aa.在dns服務(wù)器上,將域名指向ip.bb.在網(wǎng)站空間上,將主機綁定域名(也是在這里,申請網(wǎng)站備案的!)。一個是,發(fā)送給誰?另一個是,接受誰的請求?
4、數(shù)據(jù)下載至本地網(wǎng)絡(luò),完成一次請求
有的朋友遇到在自己的機器上不能訪問網(wǎng)站。而在別人的電腦上,卻是可以打開。那測試一下是不是你所在地的網(wǎng)絡(luò)不穩(wěn)定,而造成的訪問中斷。如果沒問題,那再通過”在線代理”打開你的網(wǎng)站試一試。百度一下”在線代理”,有一些網(wǎng)站能提供,用其它的ip,或國外ip代理訪問某個網(wǎng)站的服務(wù)。如果在線代理,能夠打開你的網(wǎng)站,基本上可以確定,你所在的本地網(wǎng)絡(luò),出現(xiàn)了暫時的不穩(wěn)定情況。
從上面幾個方面可以看出,服務(wù)器宕機是指服務(wù)器因為某些原因而導(dǎo)致服務(wù)器無法運轉(zhuǎn),造成網(wǎng)絡(luò)無法正常使用。 對于網(wǎng)站來說,服務(wù)器宕機所造成影響很大,它不但造成訪客無妨對網(wǎng)站進(jìn)行訪問,甚至還可能影響到網(wǎng)站在搜索引擎上的收錄和排名, 因而在租用服務(wù)器時,建議站長選擇像互聯(lián)數(shù)據(jù)這種香港新機房,宕機概率比較低。在服務(wù)器使用的過程中,服務(wù)器宕機可能都出現(xiàn), 首先我們要找到服務(wù)器可能出現(xiàn)宕機的原因嗎,才能找到對應(yīng)的解決辦法。