• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運轉(zhuǎn),開心的工作
            簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            原文地址: http://zhangxugg-163-com.iteye.com/blog/873378

            服務(wù)器環(huán)境:redhat linux 5.5 , nginx ,? phpfastcgi

            ?

            在此環(huán)境下,一般php-cgi運行是非常穩(wěn)定的,但也遇到過php-cgi占用太多cpu資源而導(dǎo)致服務(wù)器響應(yīng)過慢,我所遇到的php-cgi進程占用cpu資源過多的原因有:

            ?

            1. 一些php的擴展與php版本兼容存在問題,實踐證明 eAccelerater與某些php版本兼容存在問題,具體表現(xiàn)時啟動php-cgi進程后,運行10多分鐘,奇慢無比,但靜態(tài)資源訪問很快,服務(wù)器負載也很正常(說明nginx沒有問題,而是php-cgi進程的問題),解決辦法就是從php.ini中禁止掉eAccelerater模塊,再重啟php-cgi進程即可

            ?

            2. 程序中可能存在死循環(huán),導(dǎo)致服務(wù)器負載超高(使用top指令查看負載高達100+), 需要借助Linux的proc虛擬文件系統(tǒng)找到具體的問題程序

            ?

            3. php程序不合理使用session , 這個發(fā)生在開源微博記事狗程序上,具體表現(xiàn)是有少量php-cgi進程(不超過10個)的cpu使用率達98%以上, 服務(wù)器負載在4-8之間,這個問題的解決,仍然需要借助Linux的proc文件系統(tǒng)找出原因。

            ?

            4. 程序中存在過度耗時且不可能完成的操作(還是程序的問題),例如discuz x 1.5的附件下載功能: source/module/forum/forum_attachement.php中的定義

            ?

            function getremotefile($file) {
            ??? global $_G;
            ??? @set_time_limit(0);
            ??? if(!@readfile($_G['setting']['ftp']['attachurl'].'forum/'.$file)) {
            ??? ??? $ftp = ftpcmd('object');
            ??? ??? $tmpfile = @tempnam($_G['setting']['attachdir'], '');
            ??? ??? if($ftp->ftp_get($tmpfile, 'forum/'.$file, FTP_BINARY)) {
            ??? ??? ??? @readfile($tmpfile);
            ??? ??? ??? @unlink($tmpfile);
            ??? ??? } else {
            ??? ??? ??? @unlink($tmpfile);
            ??? ??? ??? return FALSE;
            ??? ??? }
            ??? }
            ??? return TRUE;
            }

            ?

            沒有對傳入的參數(shù)作任何初步檢查,而且設(shè)置了永不超時,并且使用readfile一次讀取超大文件,就可能存在以下問題:
            ?A. 以http方式讀取遠程附件過度耗時

            ?B. FTP無法連接時,如何及時反饋出錯誤?

            ?C. readfile是一次性讀取文件加載到內(nèi)存中并輸出,當(dāng)文件過大時,內(nèi)存消耗驚人

            ????? 根據(jù)實驗發(fā)現(xiàn)采用readfile一次性讀取,內(nèi)存消耗會明顯增加,但是CPU的利用率會下降較多。如果采用分段讀取的方式,內(nèi)存消耗會稍微下降,而CPU占用卻會明顯上升。

            ?

            對discuz x 1.5的這個bug較好解決方法就是后臺重新正確設(shè)置遠程附件參數(shù)。

            ?

            以下是我逐步整理的故障排除步驟:

            1. 得到占用cpu資源過多的php-cgi進程的pid(進程id), 使用top命令即可,如下圖:

            ?


            經(jīng)過上圖,我們發(fā)現(xiàn),有兩個php-cgi進程的cpu資源占用率過高,pid分別是10059,11570,這一般都是程序優(yōu)化不夠造成,如何定位問題的php程序位置?

            ?

            2. 找出進程所使用的文件

            /proc/文件系統(tǒng)保存在內(nèi)存中,主要保存系統(tǒng)的狀態(tài),關(guān)鍵配置等等,而/proc/目錄下有很多數(shù)字目錄,就是進程的相關(guān)信息,如下圖,我們看看進程10059正在使用哪些文件?


            顯然,使用了/home/tmp/sess_*文件,這明顯是PHP的session文件, 我們查看這個session文件的內(nèi)容為:view_time|123333312412

            ?

            到這里,我們已經(jīng)可以懷疑是由于php程序?qū)懭胍粋€叫view_time的session項而引起, 那么剩余的事件就是檢查包含view_time的所有php文件,然后修改之(比如改用COOKIE),這實話, 這個view_time并非敏感數(shù)據(jù),僅僅記錄用戶最后訪問時間,實在沒必要使用代價巨大的session, 而應(yīng)該使用cookie。

            ?

            3. 找出有問題的程序,修改之

            使用vi編輯以下shell程序(假設(shè)網(wǎng)站程序位于/www目錄下)

            ?

            ?#!/bin/bash
            ?find /www/ -name "*.php" > list.txt
            ?
            f=`cat ./list.txt`
            ?
            for n in $f
            do?
            ??? r=`egrep 'view_time' $n`
            ??? if [ ! "$r" = "" ] ; then
            ??????? echo $n
            ???? fi?
            done

            ?

            運行這個shell程序,將輸出包含有view_time的文件, 對記事狗微博系統(tǒng),產(chǎn)生的問題位于modules/topic.mod.class文件中

            • 大小: 99 KB
            • 大小: 59.7 KB

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国产精品对白刺激久久久| 成人久久综合网| 久久久亚洲精品蜜桃臀 | 久久久久免费精品国产| 色天使久久综合网天天| 无码精品久久久久久人妻中字| 成人妇女免费播放久久久| 久久精品国产精品亚洲艾草网美妙 | 色欲综合久久躁天天躁| 亚洲国产另类久久久精品小说| 久久精品国产一区| 婷婷久久五月天| 国产精品久久久久久久午夜片| 伊人色综合九久久天天蜜桃| 久久精品亚洲一区二区三区浴池| 亚洲一本综合久久| 久久久久久精品无码人妻| 99久久夜色精品国产网站| 亚洲中文久久精品无码ww16| 国产巨作麻豆欧美亚洲综合久久| 伊人久久综合成人网| 久久夜色精品国产www| 青青青青久久精品国产 | 久久精品麻豆日日躁夜夜躁| 超级97碰碰碰碰久久久久最新| 国产精品99久久久久久宅男| 久久精品9988| 久久99精品国产自在现线小黄鸭| 亚洲国产成人久久一区WWW| Xx性欧美肥妇精品久久久久久| 久久中文骚妇内射| 久久婷婷国产综合精品 | 亚洲精品高清国产一久久| 国产精品欧美久久久天天影视| 性欧美丰满熟妇XXXX性久久久 | 72种姿势欧美久久久久大黄蕉| 久久AV高潮AV无码AV| 久久精品国产色蜜蜜麻豆| 久久www免费人成看片| 亚洲精品乱码久久久久久蜜桃图片| 97精品伊人久久大香线蕉|