摘要:大家好,我叫湯金城,今天和大家分享一下我在公司業(yè)務方面故障排查遇到的一些坑,以及進行性能調優(yōu)的解決方法。性能的優(yōu)化在我看來,性能優(yōu)化和監(jiān)控是分不開的,現(xiàn)在關于優(yōu)化的配置非常多,適合自己的才是最好的。
本期主講:湯金城,多年從事移動互聯(lián)網(wǎng)相關運維工作,帶領團隊維護數(shù)百臺服務器,擁有豐富的故障排查和性能優(yōu)化實戰(zhàn)經(jīng)驗,擅長業(yè)務拆分,高可用架構設計。
大家好,我叫湯金城,今天和大家分享一下我在公司業(yè)務方面故障排查遇到的一些坑,以及進行性能調優(yōu)的解決方法。記得剛來公司接手業(yè)務的時候,IT架構亂的一塌糊涂,前任留下來很多坑:服務器資源緊張,初期架構沒考慮擴展性等等,不過對于初創(chuàng)企業(yè)來說這些問題都是正常的。
故障的及時發(fā)現(xiàn)與實時分析
首先來講下公司初期的一個需求,因為公司對業(yè)務很重視,所以領導需要第一時間了解故障原因是什么以及怎樣做才能預防故障的再次發(fā)生。前期我考慮的就是監(jiān)控日志,通過實時分析日志發(fā)現(xiàn)問題,開始我們使用的是一款python寫的開源工具ganglia-logtailer,相當于對log進行tail實時獲取并截取想要的信息進行監(jiān)控,但是一段時間后發(fā)現(xiàn)這種工具的效率不高,并且數(shù)據(jù)并不是很準確。
然后就用了ELK,采用Logstash進行數(shù)據(jù)采集,存入redis,再由logstash從redis獲取數(shù)據(jù),中間進行一個過濾以及分析,存入到elasticsearch,通過kibana進行數(shù)據(jù)展示,同時logstash還可以對獲取的數(shù)據(jù)進行監(jiān)控以及郵件報警。
通過上面這種方式,確實能對后端服務器、存儲等設備的故障和系統(tǒng)信息進行統(tǒng)計,但很多業(yè)務故障并不單純是內部IT系統(tǒng)問題造成的,我們經(jīng)常發(fā)現(xiàn)前端出現(xiàn)掉流量,掉訪問的現(xiàn)象,而后端運行完全正常,通過這種內部監(jiān)控是找不出原因的,這時候就需要考慮一些外部原因了。
下面給大家看一些故障排查案例:
實例1:服務器計算時長
有一段時間,每到晚上業(yè)務最高峰網(wǎng)站訪問都會變慢,從內網(wǎng)并沒看出什么明顯訪問異常,那時候剛上了監(jiān)控寶,于是就部署上了監(jiān)控外部分析,白天都很正常,一到晚上業(yè)務高峰期報警就增多了。監(jiān)控寶的分析做的還不錯,是基于curl來做的監(jiān)控,curl本身就可以打印出相關連接時間 ,監(jiān)控寶的響應時間報告包括一下參數(shù):
DNS域名解析時間:訪問網(wǎng)站的第一步就是DNS解析,如果這個時間消耗長,就得看看是不是DNS解析商那塊出了問題;
建立連接:TCP三次握手建立連接的時間,如果5秒內無法建立連接,就會報無法連接服務器;
服務器計算:監(jiān)控服務器的處理能力;
內容下載:網(wǎng)頁內容下載到本地的時長;
通過以上報警可以看出訪問消耗在了服務器計算能力上,那么很明顯還是服務端的問題,于是又對服務器進行了一次檢查,這次著重檢查了服務器配置,結果發(fā)現(xiàn)被入口的nginx給坑了,nginx有個worker_connections參數(shù),早期服務器沒什么訪問量的時候設置的比較低,只設置了8000,難怪每到晚上estab連接數(shù)最高就到32000左右,從未看到飆到32000以上,于是將worker_connections調到對應的數(shù),這個問題就解決了,后面訪問量自然就漲上去了,相比以前訪問峰值PV漲了足足45%。
實例2:移動用戶無法訪問網(wǎng)站
上面是4月21日交換機的入口出口圖,在20點整的時候出現(xiàn)一個流量的掉坑,根據(jù)這張圖可以很明顯的看到流量在進來的時候就已經(jīng)減少了,這個時候內部監(jiān)控系統(tǒng)卻沒發(fā)現(xiàn)有其他異常,下面再看下nginx的入口出口圖:
可以很明顯的看到流量進來就減少了,造成出去的流量減少,那么問題肯定出在外部。
這是監(jiān)控寶的告警信息,可以很明顯的看到4月21日20點之后,持續(xù)25分鐘的移動用戶節(jié)點無法訪問。
這時候就不是我們的問題,而是機房的事了,馬上打電話給機房反饋情況,機房幫我們做了路由優(yōu)化之后故障得到解決,整個過程持續(xù)了將近20分鐘。
性能的優(yōu)化
在我看來,性能優(yōu)化和監(jiān)控是分不開的,現(xiàn)在關于優(yōu)化的配置非常多,適合自己的才是最好的。我通常會在修改配置后,先進行壓力測試,然后觀察內部監(jiān)控、外部監(jiān)控的性能表現(xiàn)進行調整。這里給大家推薦一些常用的系統(tǒng)參數(shù):
net.ipv4.tcp_fin_timeout = 30
net.core.somaxconn = 8196
net.ipv4.tcp_max_syn_backlog = 8196
net.ipv4.ip_local_port_range = 1024 65000
再強調一次,因為每個公司的業(yè)務場景都不一樣,只有了解了自己業(yè)務的真實需求才能針對性的進行性能調優(yōu),千萬不要盲目對照別人的參數(shù)去調整配置,以上參數(shù)對我們的業(yè)務來說是最優(yōu)的,但可能在某些業(yè)務場景下反而會影響性能。所以建議大家先留一份原有參數(shù)的備份,如果調試有問題可以回滾。
下面給大家分享幾篇干貨,都是關于time_wait tcp listen backlog這些受爭議的參數(shù),大家可以參考,然后自己做調整,記得先對照參數(shù)備份原有參數(shù),另外有些參數(shù)sysctl -p后生效時間可能要2到5分鐘。
http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3NA==&mid=403319808&idx=1&sn=ddae082f5b844d040b9ab23c9c0eb778&scene=23&srcid=0311SD5dPUGnPq7sTqzC2vHn#rd
http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3NA==&mid=403232978&idx=1&sn=4ed396ac1999add1c866419bd62b0e75&scene=23&srcid=0307e64zzFVkDViC4iDlvIbD#rd
http://dngood.blog.51cto.com/446195/988968
http://blog.hellosa.org/2011/04/21/tcp-kernel-nat.html
http://www.udpwork.com/item/6909.html
http://blog.csdn.net/largetalk/article/details/16863689
https://www.douban.com/note/178129553/
http://mp.weixin.qq.com/s?__biz=MjM5NzUwNDA5MA==&mid=201005717&idx=1&sn=74036633114ee6212e57ee4576dbfcbc&3rd=MzA3MDU4NTYzMw==&scene=6#rd
http://www.cnxct.com/something-about-phpfpm-s-backlog/
還有更多的干貨這里就不方便貼出了,有需要的可以找我要。以上就是今天的分享,如有不足之處請大家多多包涵。
問:你現(xiàn)在外部監(jiān)控是怎么做的?
答:目前外部監(jiān)控我們通過監(jiān)控寶監(jiān)控了靜態(tài)頁面和動態(tài)頁面,靜態(tài)頁面監(jiān)控我的緩存服務器,動態(tài)頁面監(jiān)控的后端服務器。我們主要是URL監(jiān)控,如果你們API使用比較多,也可以用監(jiān)控寶進行API監(jiān)控。此外,監(jiān)控寶也提供內部系統(tǒng)監(jiān)控的,采用agent方式對系統(tǒng)所關注的應用組件性能做監(jiān)控,并不比zabbix差,而且還支持電話報警。
問:請問運維和領導溝通有什么技巧嗎?
答:直接曬數(shù)據(jù)最有力,領導喜歡看數(shù)據(jù)報告,要把各個方面的性能圖和數(shù)據(jù)給他看,然后給他挑刺,用數(shù)據(jù)說話抵得上千言萬語。不過這需要做到全面的監(jiān)控,才可能獲取有說服力的完整數(shù)據(jù),特別是隨著業(yè)務的增長,以前遺留下的一些問題在量小的時候并不怎么明顯,訪問壓力大了才會爆發(fā)出來,這時候如果有前后的對比分析,就可以讓領導為業(yè)務增長買單。
問:那數(shù)據(jù)用什么樣的方式呈現(xiàn)比較好?
答:當然是圖表,監(jiān)控寶提供一些基礎數(shù)據(jù)的圖表,如果希望根據(jù)自己的業(yè)務定制圖表,可以使用ganglia集群監(jiān)控,搭建方便,模塊多,圖形非常適合分析排查故障。
問:那能不能稍微總結下,對一個初創(chuàng)公司來說,有哪些工作是從一開始就必須要做的?
答:壓測和監(jiān)控是構建彈性、高可用IT架構的基礎,云智慧的監(jiān)控寶、透視寶和壓測寶正好從不同的角度解決這個性能問題,而且SaaS模式也比較適合初創(chuàng)企業(yè),大家可以試試。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/39280.html
摘要:有一次別人的云服務器被攻擊,提供商竟然重啟了物理機然后又諸多悲劇出現(xiàn)。造成微博服務短暫不可用。通過建立工具來診斷問題,并創(chuàng)建一種復盤事故的文化來推動并作出改進,防止未來發(fā)生故障。 showImg(https://segmentfault.com/img/bV0jif?w=900&h=385); 相信小伙伴們在上網(wǎng)或者玩游戲的時候一定都遇到過無法訪問的情況。服務器炸了的原因有各種各樣,下...
摘要:阿里巴巴的共享服務理念以及企業(yè)級互聯(lián)網(wǎng)架構建設的思路,給這些企業(yè)帶來了不少新的思路,這也是我最終決定寫這本書的最主要原因。盡在雙阿里巴巴技術演進與超越是迄今唯一由阿里巴巴集團官方出品全面闡述雙八年以來在技術和商業(yè)上演進和創(chuàng)新歷程的書籍。 showImg(https://segmentfault.com/img/remote/1460000015386860); 1、大型網(wǎng)站技術架構:核...
摘要:微軟響應大眾創(chuàng)業(yè),萬眾創(chuàng)新號召,從年起與中國各級地方政府及本地運營合作伙伴攜手,共同推出了微軟云暨移動技術孵化計劃。年月,由上海市徐匯區(qū)人民政府上海儀電集團有限公司和微軟中國有限公司聯(lián)合創(chuàng)辦的云暨移動技術孵化計劃云賽空間創(chuàng)新孵化器正式啟動。 2017年12月14日,上?!缮虾J行靺R區(qū)人民政府、上海儀電(集團)有限公司和微軟(中國)有限公司聯(lián)合創(chuàng)辦的云暨移動技術孵化計劃——云賽空間創(chuàng)新孵...
摘要:以推出輕舟微服務平臺的網(wǎng)易云為代表,云計算公司正在微服務領域發(fā)力,促進企業(yè)數(shù)字化創(chuàng)新。以網(wǎng)易云輕舟微服務平臺為例,該平臺已經(jīng)在物流工業(yè)和金融等領域得到了深度應用。 所謂數(shù)字化轉型升級,就是以數(shù)字技術優(yōu)化傳統(tǒng)資源,企業(yè)需要謹慎地選擇合適的技術逐步完成自己的數(shù)字化戰(zhàn)略。以推出輕舟微服務平臺的網(wǎng)易云為代表,云計算公司正在微服務領域發(fā)力,促進企業(yè)數(shù)字化創(chuàng)新。那么,微服務對數(shù)字化轉型意味著什么?...
閱讀 2950·2021-10-14 09:42
閱讀 3708·2021-08-11 11:19
閱讀 3553·2019-08-30 13:57
閱讀 3138·2019-08-30 13:49
閱讀 1549·2019-08-29 18:38
閱讀 908·2019-08-29 13:16
閱讀 1864·2019-08-26 13:25
閱讀 3237·2019-08-26 13:24