本地環境:redhat6.7系統。 nginx1.12.1 ,php7.1.0, 代碼使用yii2框架php
問題:本地的web站須要用到elasticsearch服務。當php使用本地服務器搭建的elasticsearch時,本地的負載都是正常。 當我使用aws 的elasticsearch service服務時,本地服務器出現負載常常太高的狀況。查看nginx 和php日誌,發現沒有異常。系統的併發鏈接數也不高。這時候想到咱們老大給我講的一個strace診斷工具。nginx
調試過程:web
查找一個php的子進程id服務器
strace -cp pid 跟蹤進程的調用yii2
系統當時的負載:php7
strace 調試過程併發
這邊就發現php調用elasticsearch的時候,會去本地找一個文件,這個文件是不存在的。從而致使服務器負載偏高。經過對比aws elasticsearch 和本地es 集羣的區別。發現只有調用的方法不同。代碼裏面是用https的方法調用的,因此他會去本地找這個證書庫文件。我當即聯繫開發,把調用方式改爲http以後,觀察一段時間,服務器負載恢復正常了。框架
strace -T -e access -p 1379yii