最近測試人員不時有反饋,APP首頁打開會出現除了基本的頁面布局,需要展示數據的地方都是空白。
想着最近首頁接口有過調整,新增數據。會不會是接口改動導致的??
但APP首頁接口都是讀取redis的,應該不至於出現接口異常的問題啊!!
手上本來有迭代任務進行中,沒去看這個問題。
昨天快下班那會手上任務快做完了。上服務器看看nginx日志,php日志,同時登錄阿里雲服務器管理控制台查看ecs機器的內存和cpu使用記錄,redis使用情況。
發現問題出現得有規律,一般是運營人員在管理后台發布消息推送,隨后幾分鍾就會出現resquest_time耗時比較厲害。平時大部分接口0.01-0.09秒接口請求完成調用返回。但發布消息推送后,接口調用記錄顯示耗時上升厲害0.1秒->0.5秒->1秒->3秒->7秒,最多的達到15點幾秒。
查看最近的nginx錯誤日志:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: ***
網上搜索相關資料,找到如下:
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,同事們沒有出現白屏無數據的情況,我手機偶現白屏一次。
PHP-FPM配置已經改了啊,為啥還是有白屏??
立即上阿里雲管理后台查看日志服務,看到push發出后,單是首頁的有個接口一分鍾內超出280的調用。
這讓我想起項目剛上線不久,有對項目使用的laravel框架接口調用次數限制由默認60次一分鍾上調到一分鍾200過。
手機偶爾白屏應該就是laravel框架這個限制次數導致的!
再上調laravel次數限制為500上生產,等運營再次發送push消息推送,APP已不見白屏的情況。
登錄阿里雲管理后台查看日志服務,首頁接口調用時間基本正常,最長的沒超過0.2秒:
如果不做php-fpm配置的修改,正常情況下,沒人攻擊服務器惡意搗亂什么的,不會出現什么問題。
公司商務近期在做該APP推廣,經過我這邊已經接入頭條app廣告,熱葫蘆,小豆故事,還有接入測試完成即將上線的百度app廣告。
用戶數正在不斷上升。運營人員消息推送發布,同一時間大量的用戶打開APP,接口調用急劇增加,需要啟動php進程數會被迅速拉起,原有的配置已經很難滿足需求。