關於頁面502的一次排查,頁面502排查_PHP教程

來源:互聯網
上載者:User

關於頁面502的一次排查,頁面502排查


一、情境: 系統 Deepin 15;php 5.5.33;nginx 1.9.9

二、狀況: 簡單的頁面輸出正常(比如 phpinfo();),跑公司的任何一個項目,均502

三、排查

1、查詢各種日誌,包括 nginx.error.log、php_error.log、php-fpm.error.log,找到php-fpm報錯如下

[22-Mar-2016 11:06:32] WARNING: [pool www] child 3665 exited with code 127 after 24.657496 seconds from start[22-Mar-2016 11:06:32] NOTICE: [pool www] child 3676 started

2、最開始以為是由php-fpm進程數不足引起,便對php-fpm.ini做出如下修改

(這一步和網上很多的解決方案相同,但是沒有效果)

pm.max_children = 20pm.start_servers = 10pm.min_spare_servers = 10pm.max_spare_servers = 20pm.process_idle_timeout = 10spm.max_requests = 500

3、經過大量查詢,有說是Linux檔案控制代碼數不足

(忘記保留url和改動的地方,經過一番折騰也沒有效果)

4、迴歸 php-fpm.error.log,通過 exited with code 127 查到

(http://www.faqs.org/docs/abs/HTML/exitcodes.html)

5、基於上一步才想起用 strace 來跟蹤 php-fpm進程,方法分兩種

(其實這一步早該嘗試,Rango http://rango.swoole.com/archives/340)

5.1、把php-fpm的進程數限制設定為1,然後直接 strace -p 123456 進行跟蹤單個進程

5.2、直接使用下面的命令批量跟蹤進程

ps -ef | grep fpm | awk '{print "-p " $2}' | xargs strace

由於出問題的是自己的機子,沒有其他人訪問,所以使用第二個方法進行跟蹤,部分結果如下

[pid  6744] fstat(5, {st_mode=S_IFREG|0644, st_size=5016, ...}) = 0[pid  6744] mmap(NULL, 5016, PROT_READ, MAP_SHARED, 5, 0) = 0x7f132588f000[pid  6744] munmap(0x7f132588f000, 5016) = 0[pid  6744] close(5)                    = 0[pid  6744] writev(2, [{"php-fpm: pool www", 17}, {": ", 2}, {"symbol lookup error", 19}, {": ", 2}, {"/usr/local/php/lib/php/extension"..., 71}, {": ", 2}, {"undefined symbol: mmc_queue_pop", 31}, {"", 0}, {"", 0}, {"\n", 1}], 10) = 145[pid  6744] exit_group(127)             = ?

定為到報錯資訊 undefined symbol: mmc_queue_pop

6、既然是 memcache 擴充報錯,便開始折騰,從基本編譯命令開始

cd /data/memcache-3.0.8/
/usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config
#sudo make clean #但存在多次編譯安裝時,最好都進行清除 sudo makesudo make install

仔細尋找,發現 ./configure 報了個 WARNING

configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.

於是開始補齊 re2c,並重新編譯 memcache,重啟 php-fpm,然而依舊報錯

7、最後找到一篇文章,提及“我的memcache原來是從官網下的beta版,重新下載一個stable版本編譯安裝一下問題就OK了”

而我用的正是beta版的 memcache-3.0.8,於是馬上下載stable版的 memcache-2.2.7 重新編譯,問題成功解決。

(http://www.phpjiayuan.com/77/433.html)

四、特別申明:此文章所提及的東西,部分來自某開發群的大神們,在此鳴謝!

五、後記:此問題是不是只存在於 php 5.5.33 + memcache-3.0.8(beta),有待後續跟進

http://www.bkjia.com/PHPjc/1112056.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1112056.htmlTechArticle關於頁面502的一次排查,頁面502排查 一、情境:系統Deepin 15;php 5.5.33;nginx 1.9.9 二、狀況: 簡單的頁面輸出正常(比如 phpinfo();),跑公...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.