記一次介面呼叫耗時服務端優化
最近測試人員不時有反饋,APP首頁開啟會出現除了基本的頁面佈局,需要展示資料的地方都是空白。
想著最近首頁介面有過調整,新增資料。會不會是介面改動導致的??
但APP首頁介面都是讀取redis的,應該不至於出現介面異常的問題啊!!
手上本來有迭代任務進行中,沒怎麼花時間去看這個問題。
昨天快下班那會手上任務快做完了。上伺服器看看nginx日誌,php日誌,同時登入阿里雲伺服器管理控制檯檢視ecs機器的記憶體和cpu使用記錄,redis使用情況。
發現問題出現得有規律,一般是運營人員在管理後臺釋出訊息推送,隨後幾分鐘就會出現resquest_time耗時比較厲害。平時大部分介面0.01-0.09秒介面請求完成呼叫返回。但釋出訊息推送後,介面呼叫記錄顯示耗時上升厲害0.1秒->0.5秒->1秒->3秒->7秒,最多的達到15點幾秒。
檢視最近的nginx錯誤日誌:
網上搜索相關資料,找到如下:
https://blog.csdn.net/leonnew/article/details/79738593
排除1和3,看來是2的問題,看php錯誤日誌:
搜尋“WARNING: [pool www] server reached pm.max_children setting (5), consider raising it” 錯誤原因,找到如下:
https://lirongyao.com/server-reached-pm-max_children-setting.html
看php配置:
心估計是運維搭建生產環境把php-fpm啟動後進程數配置太小,和運維協商後,發個郵件讓運維更改php7配置。
今天中午吃飯時候運維把配置給改了重啟,不久後運營人員那邊新發一個push訊息推送。
再上生產伺服器,竟沒有錯誤日誌了。。又開啟APP,同事們沒有出現白屏無資料的情況,我手機偶現白屏一次。
上阿里雲檢視請求記錄,發現push發出後,單個介面一分鐘內超出200,想著專案剛上線不久,把laravel框架的介面呼叫次數限制一分鐘200。
再上調laravel次數限制為500,重新上線快下班時,運營再次傳送push訊息推送,APP已不見白屏的情況。
登入阿里雲檢視介面呼叫時間正常: