溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

云服務(wù)器集群性能故障排查手記

發(fā)布時間:2020-07-16 18:55:10 來源:網(wǎng)絡(luò) 閱讀:2933 作者:sery 欄目:系統(tǒng)運(yùn)維

作者:田逸(wx formyz)

本人的忠告

當(dāng)前依然有部分人(包括一些程序員)認(rèn)為,用了云主機(jī),網(wǎng)上搜搜,安裝文檔配置一下,哪里還需要什么專業(yè)的系統(tǒng)管理員(俗稱運(yùn)維狗)。當(dāng)然,這也有云服務(wù)商宣傳上的暗示(買了云主機(jī),穩(wěn)定無憂,數(shù)據(jù)扔上去一勞永逸)。事實(shí)果真如此么?如果你的應(yīng)用沒什么流量,一天沒幾個人訪問,還真不用花錢雇用專職系統(tǒng)管理員;如果你靠互聯(lián)網(wǎng)養(yǎng)活一幫人,而且希望有更多的用戶訪問,還有上述認(rèn)知的話,我只能呵呵…

?

非系統(tǒng)管理員部署的環(huán)境

某個應(yīng)用,全部在某公有云上。由負(fù)載均衡、四臺web應(yīng)用、共享數(shù)據(jù)磁盤(程序代碼共享)、數(shù)據(jù)庫(主從)等及部分組成。從結(jié)構(gòu)上看,嗯,沒什么問題。因此,好長一段時間,也沒有人來找我們做支持,我們也不知道有這些應(yīng)用存在。

?

秋天來了,帝都的天氣不錯嘛,想必大家心情跟天氣一樣,也是開心的嘛!可是最近,技術(shù)支持的qq群,老有人在呼喚,說項(xiàng)目的四臺服務(wù)器全部負(fù)載飆高。晚上9點(diǎn)到11點(diǎn)load能到好幾百。說相關(guān)人員排查了好幾天,沒有效果(俺獨(dú)自偷笑一番)。

云服務(wù)器集群性能故障排查手記

?

?

勘察現(xiàn)場

應(yīng)用程序?yàn)閚ginx + php + mysql,那么可能的存在瓶頸與可以調(diào)整的地方大致包括:系統(tǒng)配置、php配置、數(shù)據(jù)庫配置(云服務(wù)商的負(fù)載均衡沒啥可調(diào)的)。閑話少說,催得那么急,先看看運(yùn)行狀況吧。

云服務(wù)器集群性能故障排查手記

My god,跑這么高還沒死,贊一個先。除了cpu負(fù)載高而外,內(nèi)存也基本耗盡。按照以往的經(jīng)驗(yàn),有可能是系統(tǒng)參數(shù)的設(shè)置問題(默認(rèn)systcl.conf未進(jìn)行設(shè)置),于是安排我的小弟從別的服務(wù)器參考一下,對其進(jìn)行設(shè)置,執(zhí)行sysctl –p使其生效。等訪問高峰期跟蹤觀察,結(jié)果效果不佳,看來得親自出馬了。

?

排查及處理過程

選定時間點(diǎn),即訪問高峰期前一個小時,登錄系統(tǒng)。

?

先看看是什么把內(nèi)存給干完了,ps 查看進(jìn)程,發(fā)現(xiàn)大量的php進(jìn)行。初步懷疑用戶請求完數(shù)據(jù)后,為了有效關(guān)閉進(jìn)程并釋放資源,在征得同意后,重啟php服務(wù)。片刻,進(jìn)程又把內(nèi)存耗光了,不太對勁呢!

?

重復(fù)執(zhí)行下列命令對php進(jìn)程進(jìn)行統(tǒng)計(jì):

ps auxww|grep php|grep –v grep |wc? -l

ps?auxww|grep?php|grep?–v?grep?|wc??-l

進(jìn)程數(shù)一直保持不變,數(shù)量為601。一個進(jìn)程占用好幾兆內(nèi)存,600個進(jìn)程,最低下限耗費(fèi)數(shù)G的內(nèi)存,負(fù)載不高才怪了。

?

打開配置文件php-fpm.conf,一眼就看到問題所在

云服務(wù)器集群性能故障排查手記

進(jìn)程管理被錯誤的設(shè)置成static(靜態(tài)),最大子進(jìn)程為600,那么一旦啟動php,不管有沒有必要,都會啟動一個主進(jìn)程加600個子進(jìn)程。配置文件php-fpm.conf 最大子進(jìn)程這一行以后與動態(tài)管理相關(guān)的參數(shù),如最大開始進(jìn)程、最大空閑進(jìn)程數(shù)等一律無效。修正這個問題后,時間差不多到了訪問高峰期。通過人工跟蹤加監(jiān)控報(bào)警,基本上算是有很大改進(jìn),負(fù)載峰值load在50以下。

?

進(jìn)一步的優(yōu)化措施

雖然通過修正php參數(shù)設(shè)置,性能得以改善,但我對這個結(jié)果還是不太滿意。想再看看有么有可以調(diào)整的地方。于是,思路到了磁盤io這個問題上了。

?

四個服務(wù)器共享一個云nas硬盤,只保存一份程序員寫的php代碼。如果io性能不佳,也會嚴(yán)重影響整個應(yīng)用的性能。

?

用mount指令查看nfs掛接情況,主要是掛接參數(shù),結(jié)果如下:

云服務(wù)器集群性能故障排查手記

用的是tcp協(xié)議,而在以前的實(shí)踐中,我通常用udp協(xié)議(vers=3)進(jìn)行掛接??紤]到云服務(wù)商提供的磁盤性能,用tcp未必就能比udp更好。于是跟其他人協(xié)商,在不影響性能訪問的情況下,先修改一臺服務(wù)器對nfs的掛接方式,有進(jìn)一步性能提升后再修改其他的服務(wù)器,最后留一臺不做更改,以便觀察對比效果。

?

關(guān)服務(wù),切換出掛接點(diǎn)目錄,卸載nfs,用下列指令掛接重新掛接nfs:

/usr/bin/mount -t nfs -o nolock,vers=3 6e46868719-pgn67.cn-qingdao.nas.aliyuncs.com:/ ? /data

/usr/bin/mount?-t?nfs?-o?nolock,vers=3?6e46868719-pgn67.cn-qingdao.nas.aliyuncs.com:/???/data

再啟動php等相關(guān)服務(wù),高峰時期,效果非常明顯,load值降低到5以下。

云服務(wù)器集群性能故障排查手記

?

經(jīng)過數(shù)天的觀察,對比,云服務(wù)器nfs掛接方式對性能的影響也比較大。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI