• <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.¢%

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

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

            服務器環境:redhat linux 5.5 , nginx ,? phpfastcgi

            ?

            在此環境下,一般php-cgi運行是非常穩定的,但也遇到過php-cgi占用太多cpu資源而導致服務器響應過慢,我所遇到的php-cgi進程占用cpu資源過多的原因有:

            ?

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

            ?

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

            ?

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

            ?

            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;
            }

            ?

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

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

            ?C. readfile是一次性讀取文件加載到內存中并輸出,當文件過大時,內存消耗驚人

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

            ?

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

            ?

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

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

            ?


            經過上圖,我們發現,有兩個php-cgi進程的cpu資源占用率過高,pid分別是10059,11570,這一般都是程序優化不夠造成,如何定位問題的php程序位置?

            ?

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

            /proc/文件系統保存在內存中,主要保存系統的狀態,關鍵配置等等,而/proc/目錄下有很多數字目錄,就是進程的相關信息,如下圖,我們看看進程10059正在使用哪些文件?


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

            ?

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

            ?

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

            使用vi編輯以下shell程序(假設網站程序位于/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的文件, 對記事狗微博系統,產生的問題位于modules/topic.mod.class文件中

            • 大小: 99 KB
            • 大小: 59.7 KB
            久久精品国产国产精品四凭 | 少妇久久久久久被弄高潮| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 国产精品欧美亚洲韩国日本久久| 久久国产精品波多野结衣AV| 亚洲伊人久久综合影院| 99热成人精品热久久669| 伊人色综合九久久天天蜜桃| 久久精品国产99国产精偷| 久久亚洲精品国产亚洲老地址| 久久国产精品成人影院| 亚洲欧美国产精品专区久久| 久久国产亚洲精品麻豆| 久久精品国产精品亚洲精品| 国产免费久久精品99久久| 色8久久人人97超碰香蕉987| 色播久久人人爽人人爽人人片AV| 99久久精品国内| 久久亚洲欧美国产精品| 亚洲乱码日产精品a级毛片久久| 国产午夜久久影院| 无码精品久久久天天影视| 久久人人爽人人爽人人片AV麻豆| 97久久精品人妻人人搡人人玩| 思思久久精品在热线热| 亚洲午夜无码久久久久小说 | 久久久久亚洲AV无码专区桃色| 亚洲国产成人久久精品动漫| 国产美女久久精品香蕉69| 久久精品aⅴ无码中文字字幕重口| 亚洲精品无码久久毛片| 久久精品极品盛宴观看| 亚洲精品久久久www| 怡红院日本一道日本久久 | 91久久婷婷国产综合精品青草 | 国内精品伊人久久久久av一坑 | 一本色综合久久| 精品熟女少妇AV免费久久| 久久亚洲中文字幕精品有坂深雪| 久久久精品人妻一区二区三区四| 精品无码久久久久久午夜|