亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php-fpm重啟導致的程序執行中斷問題詳解

2024-05-05 00:08:43
字體:
來源:轉載
供稿:網友

背景和初步排查

  • 訂單業務對賬時報警了,有筆訂單在我們自己的mongo庫里沒有找到
  • 業務接口  /3/xx/vgift/send 調用禮物系統  sendPresent 接口完成送禮, 之后寫mongo,但是php error log 里卻查不到任何mongo異常日志
  • 寫mongo沒有異常,但是庫里卻沒記錄,推斷只有2個可能

1是error log 丟日志了
2是程序執行過程中操作完sendPresent后down掉了,導致沒寫入mongo
-第一個情況工作多年的經驗來看應該不至于,那就先根據第二種情況繼續查吧

  • 那就去看下php-fpm 的日志,看對應的時間點有沒有什么異常
[wu.daolin@web001.m6~]$ grep "2017 05:28" /var/log/php-fpm.log[25-Jun-2017 05:28:01] NOTICE: Terminating ...

跟訂單時間剛好吻合,那肯定有必要研究下了

熟悉下 php-fpm 的管理

php-fpm 是通過 php-fpm這個命令進行管理的,我們先看下這個命令

man php-fpm

這里有提到,php-fpm then responds to several POSIX signals php-fpm 會對下面幾個信號作(自己的)處理

  • SIGINT, SIGTERM: immediate termination
  • SIGQUIT: graceful stop
  • SIGUSR1: re-open log file
  • SIGUSR2: graceful reload of all workers + reload of fpm conf/binary

動手驗證下

sudo kill -QUIT {php-fpm-pid}

[26-Jun-2017 13:58:22] NOTICE: Finishing ...            [26-Jun-2017 13:58:22] NOTICE: exiting, bye-bye!

sudo kill -TERM {php-fpm-pid}

[26-Jun-2017 13:59:21] NOTICE: Terminating ...            [26-Jun-2017 13:59:21] NOTICE: exiting, bye-bye!

sudo kill -USR2 12583

[26-Jun-2017 14:00:48] NOTICE: Reloading in progress ...          [26-Jun-2017 14:00:48] NOTICE: reloading: execvp("/usr/sbin/php-fpm", {"/usr/sbin/php-fpm", "--daemonize"})    [26-Jun-2017 14:00:48] NOTICE: using inherited socket fd=8, "10.30.60.87:9000"        [26-Jun-2017 14:00:48] NOTICE: using inherited socket fd=8, "10.30.60.87:9000"        [26-Jun-2017 14:00:48] NOTICE: fpm is running, pid 12696          [26-Jun-2017 14:00:48] NOTICE: ready to handle connections

從驗證結果推斷

在 05:28:01這個時間有人給php-fpm 發送了SIGTERM信號,在這個點發生很可能是個定時任務, 確認果然是這樣 28 5 * * * root /etc/init.d/php-fpm restart> /dev/null

我們的 php-fpm 管理

  • init script 是  /etc/init.d/php-fpm
  • 其中stop 是  killproc -p ${pidfile} php-fpm, 顯然從日志結果來個是kill -TERM  . 文檔里也說了默認信號就是TERMkillproc sends signals to all processes that use the spec­ified executable. If no signal name is specified, the signal SIGTERM is sent.

看下這個情況下nginx的反應

php-fpm,重啟,程序執行中斷

總結原因

  • 業務請求時執行完 sendPresent這個動作后 , 還沒來得及寫mongo庫, php-fpm就剛好被 terminate 了,....  剛好趕上了

替代方案

  • 雖然php-fpm 沒有解釋 terminate 跟 graceful stop 的具體含義, 但猜的話前者是直接就終止程序的執行了,后者可能是溫柔點,把處理中的請求里的所有操作都執行完再殺死。。。
  • 總之 SIGTERM terminate 調php 工作進程太粗暴了,應該要改一下比較好
  • 改成 SIGUSER2  reload 方式
  • 改成 SIGQUIT方式 ,把killproc -p ${pidfile} php-fpm 這句 改成 killproc -p ${pidfile} php-fpm -QUIT
  • php-fpm 的worker 是計數n次后就會殺掉重新拉一個,如果用reload感覺功能重復了,根本沒必要定時重啟了, 我還是選 graceful stop(SIGQUIT) 吧
  • 當然還有個問題時,為啥要配置個定時重啟,將上面的內容發給sa看了

與sa 的問答

sa 說了3點意見

  • 建議看下 -QUIT 時,Nginx的狀態碼是否正常?另外在某種情況下,可能會造成 PHP-FPM 進程退出時間比較長,會影響部署嗎?
  • 用 reload(SIGUSER2) 而不是用SIGTERM停掉再啟動.
    我們之前的測試結果看 reload 之后,nginx會報 502,并不 graceful stop。建議做好測試確認,包括部署php代碼時是不是 reload?Bug #60961 Graceful Restart (USR2) isn't very graceful
  • php-fpm每天定時重啟腳本 這個定時腳本大概是在2012年部署的,當時是擔心 PHP-FPM 存在內存泄漏的情況而添加的。到現在是不是還適用?建議找一臺機器關掉定時腳本觀察一段較長時間看看。

我回復

  • SIGQUIT 是否正常還不清楚,但現在的默認 SIGTERM 是立即停掉php 進程是肯定不正常的 --  從nginx error log 看,對于nginx 和 php-fpm已經建立好的連接,錯誤是 “104: Connection reset by peer”; 準備去連的是“111: Connection refused”;
  • “111: Connection refused” 是還可以接受的,連不上而已,用戶稍后重試就可以;“104: Connection reset by peer” 這個就很難接受,這個錯我理解的意思是連接已經建好了,php突然terminate了,然后發了個RST分節給nginx;背后就表示當前請求可能只執行了一半動作,還有動作沒執行完,這可能就造成丟數據了。。。比如文章開頭說的這個問題
  • reload 那個其實就是 -USR2信號,這個bug看起來還沒解決。。。不過-USR2 應該說是偶現terminate,但 -TERM 肯定是必現terminate
  • 現在代碼部署邏輯是同步代碼+清理opcache和yac緩存, 不對php-fpm進程做操作
  • php-fpm 會自己對worker進程處理的請求數計數,達到一定數量就干掉再重新拉一個; 所以worker進程應該沒有什么內存泄露的問題; manager 進程就不清楚了,但我想概率應該是極其低的。這個適不適用感覺很難去證偽啊。。。
  • 所以要不找3臺機器, 一臺用 -QUIT, 一臺用 -USR2,  一臺去掉這個定時任務;先觀察下
  • sa 回復可以,我們自己看著辦

尾聲

改成 SIGQUIT 信號nginx里還是有 104: Connection reset by peer, 看來手冊里說SIGQUIT: graceful stop 也不能保證一次請求里的所有動作都執行完啊

最終結果 去掉這個定時重啟php-fpm 的任務, 已經3個多月了,沒發現問題,oh yeah~

參考文檔

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线日韩精品视频| 一区二区三区国产在线观看| 亚洲国产另类久久精品| 欧美激情一区二区三区在线视频观看| 久久久电影免费观看完整版| 国外成人在线播放| 欧美激情视频播放| 久久久久久高潮国产精品视| 亚洲欧美国产日韩天堂区| 国产亚洲精品综合一区91| 38少妇精品导航| 国产视频观看一区| 97avcom| 国产精品91免费在线| 欧美—级高清免费播放| 日本欧美爱爱爱| 日韩视频在线观看免费| 最近中文字幕mv在线一区二区三区四区| 欧美另类精品xxxx孕妇| 这里只有精品视频在线| 久久久女人电视剧免费播放下载| 色综合视频网站| 日韩免费在线观看视频| 亚洲国产欧美一区二区三区久久| 欧美精品videosex牲欧美| 中国china体内裑精亚洲片| 日韩第一页在线| 中文字幕欧美日韩在线| 国产精品国产自产拍高清av水多| 国产专区欧美专区| www.欧美免费| 欧美成人激情视频| 亚洲综合在线中文字幕| 国产xxx69麻豆国语对白| 久久久久久久999精品视频| 97久久伊人激情网| 国产三级精品网站| 国产视频久久久久久久| 亚洲精品国产精品久久清纯直播| 欧美日韩激情美女| 国产精品人人做人人爽| 国内自拍欧美激情| 一本色道久久88精品综合| 91精品国产综合久久香蕉| 国产精品白嫩初高中害羞小美女| 国产欧美最新羞羞视频在线观看| 色偷偷88888欧美精品久久久| 九九热这里只有在线精品视| 成人羞羞国产免费| 日韩电影大全免费观看2023年上| 国语自产精品视频在线看一大j8| 久久这里有精品视频| 国产又爽又黄的激情精品视频| 亚洲男人天堂2023| 中文字幕亚洲欧美在线| 久久久久久久影视| 欧美国产极速在线| 精品福利樱桃av导航| 91网在线免费观看| 欧美激情成人在线视频| 69久久夜色精品国产69乱青草| 亚洲国产精品久久久久秋霞蜜臀| 日韩精品久久久久久久玫瑰园| 国产精品99久久久久久久久| 亚洲性av网站| 久久久久中文字幕2018| 欧洲日韩成人av| 国产一区视频在线| 欧美xxxx18性欧美| 日韩女优人人人人射在线视频| 韩国日本不卡在线| 亚洲视频自拍偷拍| 亚洲人午夜精品| 国产精品美女免费视频| 成人国产在线激情| 午夜精品久久久99热福利| 欧美裸体xxxxx| 国产精品青青在线观看爽香蕉| 亚洲伊人第一页| 在线电影欧美日韩一区二区私密| 欧美成人免费大片| 欧日韩在线观看| 欧美精品国产精品日韩精品| 97视频在线观看视频免费视频| 日韩电影中文字幕一区| 成人黄色av网站| 欧美精品生活片| 久久99国产综合精品女同| 日本在线精品视频| 91爱爱小视频k| 亚洲新声在线观看| 美女视频黄免费的亚洲男人天堂| 国产精品第8页| 国产精品视频精品视频| 中文字幕日韩综合av| 国产精品狼人色视频一区| 亚洲成人激情视频| 性色av一区二区三区在线观看| 欧美激情在线狂野欧美精品| 亚洲国产天堂久久国产91| 中文字幕欧美国内| 久久夜色精品国产亚洲aⅴ| 黑人巨大精品欧美一区二区免费| 精品人伦一区二区三区蜜桃免费| 国产91网红主播在线观看| 九色精品免费永久在线| 美女精品久久久| 国产精品你懂得| 国产一区二区激情| 国产精品成人aaaaa网站| 欧美成人精品三级在线观看| 国产精品免费久久久久影院| www.亚洲成人| 伊人成人开心激情综合网| 中文亚洲视频在线| 欧美大片在线看| 日韩h在线观看| 国产亚洲欧美日韩一区二区| 久久在线免费视频| 久久精品久久久久久国产 免费| 国产精品久久久久久久9999| 精品国产一区二区三区久久| 日韩精品中文字幕在线| 国产精品女人久久久久久| 欧美国产亚洲视频| 成人黄色片网站| 97色伦亚洲国产| 欧美日韩国产一区在线| 狠狠躁夜夜躁人人爽天天天天97| 在线电影欧美日韩一区二区私密| 日韩电影中文字幕av| 国产一区二区黑人欧美xxxx| 成人久久一区二区| 成人欧美一区二区三区黑人孕妇| 欧美一区二粉嫩精品国产一线天| 亚洲欧美综合区自拍另类| 精品国产电影一区| 在线播放日韩欧美| 中文亚洲视频在线| 久久久久久亚洲精品中文字幕| 中文字幕亚洲二区| 免费97视频在线精品国自产拍| 久久久久久久国产精品| 国产精品日日摸夜夜添夜夜av| 97精品免费视频| 亚洲最大成人在线| 中文字幕欧美专区| 日韩精品电影网| 亚洲黄色www| 亚洲第一福利在线观看| 国产最新精品视频| 色无极亚洲影院| 久久精品亚洲94久久精品| 欧美日韩另类视频| 亚洲欧美激情精品一区二区| 91chinesevideo永久地址| 黄色一区二区在线观看| 久久久久久久久久婷婷| 日韩高清电影免费观看完整| 国产精品久久久久久久久免费看| 4438全国亚洲精品在线观看视频| 国产精品你懂得| 亚洲天堂成人在线视频| 国产精品露脸av在线|