Title: 記一次PHP7+opcache+zmq出現SEGSEGV問題的查找(一次不成功的bug查找)docker
bug來歷自述:
線上代碼PHP環境是5.2,爲了提高性能(逼格),因而升級爲PHP7並使用docker部署,爲了方便起見使用yum安裝(懶惰),代碼經測試後準備部署上線,這個時候問題來了。性能
在配置FPM後壓測,發現當FPM子進程重啓時,總會有502錯誤(fpm日誌)。測試
ba la ba la開始找問題:
一、首先確認是否是FPM的配置問題,找了一圈,沒有發現問題
二、從PHP7自己開始,想着PHP7咱們都使用了什麼新東東,很明顯opcache就被這麼抓到了。
在配置裏面關閉opcache,測試沒有再出現502,說明opcache有問題
那到底opcache有問題嗎?是否是本身的代碼裏面有問題呢?
因而乎,開始opcache,只簡單的打印一些東東
噢、噢、噢、噢.....
居然沒有發現502了,好吧看來代碼裏面仍是有別的問題
就這麼又看到了ZMQ,最終發現當opcahce+ZMQ時會有502...................................
最終懶人的解決方案:
一、繼續使用opcache
二、將使用到zmq擴展的文件加入opcache的黑名單裏
日誌