POST TIME:2018-12-03 17:19
在一次正常的活動促銷之后,客服開始陸續反饋有用戶反應在搶標的時候打不開網頁或者 APP,在打開的時候標的就已經被搶光了。
剛開始沒有特另外上心,覺得搶標不就是這樣嗎,搶小米手機的時候不也是這樣嗎?
隨著活動繼續推進,有更多的用戶強烈抗議,用戶領了加息券或者抵現券之后搶不上標的,認為是平臺作假故意不讓他們使用以達到節省資源。
分析過程
以前也會有陸續的用戶反饋不減少的情況,給客戶以小米搶手機為例子解釋就過去了,這次用戶反饋太過強烈,才讓我們重視了起來。
我們前端一共有三款產品:APP、官網和 H5,其中 APP 使用量最大,官網其次,H5 平時使用量極少但是做活動期間流量會暴增(活動一般都是 H5 游戲居多,H5 也便于推廣營銷)。
前端的三款產品都是別離使用 LVS 負載到后端的兩臺 Web 辦事器中(如下圖),這次用戶反饋基本在 Web 和 APP 端,所以重點不雅觀察這四臺辦事器。
首先懷疑網絡帶寬是否被涌滿,找到網絡工程師通過工具來監控,在搶標的時候帶寬最高使用率只有 70% 擺布,隨排除之。
再次懷疑 Web 辦事器是否抗不住了,使用 top 命令查看官網負載的兩臺辦事器,在搶標的瞬間會飆到 6-8 擺布,搶標后也慢慢的恢復了正常,APP 兩臺辦事器高峰到 10-12,隨后也恢復正常。
跟蹤 Web 辦事器業務日志,發現在數據庫更新層報請求不到新的數據庫連接或者數據庫連接已經用完,認為是數據庫的最大連接數太小,于是調整 MySQL 數據庫最大連接數為以往的 3 倍。
下次搶標的時候繼續不雅觀察業務日志,發現已經不報數據庫連接的相關錯誤了,但還是很多用戶反饋搶標時候打不開頁面。
繼續跟蹤 Web 辦事器,在搶標時使用命令(ps -ef|grep httpd|wc -l)查看 httpd 的連接數有 1000 擺布,隨機查看 Apache 配置文件中設置的最大連接數為 1024(Apache 默認的最大連接數為 256)。
本來搶標期間連接數已經到達最大連接數,很多用戶在搶標的過程中已經獲取不到 http 連接導致頁面無響應或者 APP 一直在等待中。于是調整 Apache 配置文件中的最大連接數為 1024*3。
在搶標過程中繼續不雅觀察,Apache 的連接數在搶標的時候仍然可以飆到 2600-2800 之間,,按照客服反饋,仍然有很多用戶反饋搶標的問題,但比之前稍微好一點,但是有零星的用戶反饋已經搶到標的,最后又給回退了。
然后繼續不雅觀察數據庫辦事器,使用 top 命令和 MySQL Workbench 查看 MySQL 主庫和從庫的各項負載嚇一跳(如下圖),MySQL 辦事器主庫的各項指標均已經達到峰值,而從庫幾乎沒有太大壓力。
跟蹤代碼發現,三端的業務代碼全部連接主庫,從庫只有后臺的查詢業務在使用,于是立刻啟動改造。
下一篇:企業網站引流方法有哪些