新聞中心
場(chǎng)景描述

成都創(chuàng)新互聯(lián)公司是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來公司不斷探索創(chuàng)新,始終堅(jiān)持為客戶提供滿意周到的服務(wù),在本地打下了良好的口碑,在過去的十載時(shí)間我們累計(jì)服務(wù)了上千家以及全國(guó)政企客戶,如成都服務(wù)器租用等企業(yè)單位,完善的項(xiàng)目管理流程,嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過硬的技術(shù)實(shí)力獲得客戶的一致贊譽(yù)。
網(wǎng)站上線后一直穩(wěn)定運(yùn)行,事情發(fā)生在今天早上,剛到公司,還沒走到工位,手機(jī)收到告警信息,生產(chǎn)環(huán)境中的某臺(tái)服務(wù)器突發(fā)高負(fù)載!立馬開啟電腦,放下手中早餐,開始排查處理。下面是診斷引起系統(tǒng)CPU性能問題的過程,希望能給到大家一些診斷問題時(shí)的一些思路。
業(yè)務(wù)環(huán)境:PHP
排查過程
1、使用top命令查看當(dāng)前系統(tǒng)情況,并按[1]展開CPU列表
2、上圖可以看出來CPU占用主要是php進(jìn)程導(dǎo)致,當(dāng)前可用內(nèi)存足夠。現(xiàn)在重點(diǎn)看下CPU的情況。
此例子中CPU 主要消耗在內(nèi)核態(tài)「sy」,而非用戶態(tài)「us」。 需要跟蹤程序行為一般會(huì)用到兩個(gè)工具:
- 內(nèi)核態(tài)的函數(shù)調(diào)用跟蹤用「strace」
- 用戶態(tài)的函數(shù)調(diào)用跟蹤用「ltrace」
下面使用strace來分析這次的問題:
- [root@localhost ~]# strace -cp
從上圖可以看到CPU總耗時(shí)最長(zhǎng)的操作是一個(gè)名為clone的調(diào)用函數(shù),單獨(dú)追蹤下這個(gè)命令:
- [root@localhost ~]# strace -T -e clone -p
- # -T: 獲取操作實(shí)際消耗的時(shí)間
- # -e: 指定需要追蹤的操作
可以看到,一個(gè) clone 操作需要幾百毫秒,clone操作的作用簡(jiǎn)單來說就是調(diào)用系統(tǒng)函數(shù)去創(chuàng)建(fork)一個(gè)新進(jìn)程。現(xiàn)在回歸到PHP側(cè)分析為什么會(huì)出現(xiàn)此類系統(tǒng)調(diào)用。
查詢業(yè)務(wù)代碼看到了 exec 函數(shù),這個(gè)命令導(dǎo)致了系統(tǒng)不斷會(huì)fork進(jìn)程,去處理exec執(zhí)行的外部命令,導(dǎo)致CPU開銷很大。
通過如下命令驗(yàn)證它確實(shí)會(huì)導(dǎo)致 clone 系統(tǒng)調(diào)用:
- [root@localhost ~]# strace -e clone php -r 'exec("ls");'
有同學(xué)要疑問了,同是Linux運(yùn)維工程師,自己從來都是登陸服務(wù)器觀察資源使用情況才獲取到高負(fù)載告警,之前還有因未及時(shí)發(fā)現(xiàn)服務(wù)器高負(fù)載情況,使得業(yè)務(wù)短時(shí)間崩潰,損失慘重。
你是如何在還沒到工位時(shí)就收到服務(wù)器高負(fù)載的告警信息的呢?
我是使用了一個(gè)云運(yùn)維工具——王教授,對(duì)于日常運(yùn)維工作幫助確實(shí)非常大,可以及時(shí)提醒我云資源的變化情況,例如:服務(wù)器 CPU 使用率偏高、服務(wù)器安全組設(shè)置不安全、云數(shù)據(jù)庫存在慢SQL等。使用云,運(yùn)維云的同學(xué)可以選擇使用。
王教授工具地址:https://prof.wang。
網(wǎng)站標(biāo)題:生產(chǎn)環(huán)境突發(fā)高負(fù)載!是“誰”偷走了你的服務(wù)器性能?
網(wǎng)頁URL:http://www.5511xx.com/article/ccdcjgi.html


咨詢
建站咨詢
