熱點來的太快就像龍卷風,明星的八卦總能作為事件引發熱點。
10月8日,鹿晗與關曉彤戀情公布,瞬間上了熱搜,粉絲炸了,微博的服務器也跟着癱瘓了。
微博癱瘓,讓一位微博工程師在結婚的當口放下酒杯,開始擴容服務器,真是哭笑不得。更有網友吐槽,鹿晗其實是個老黑客,讓眾碼農汗顏。
雖然微博這次癱瘓防不勝防,畢竟明星公布戀情如何預警?然而服務器准備不足也是一點。看看這條微博:頂級流量,可怕的傳播層級,如下圖所示...
聊完八卦,回歸主題:服務器壓力。所以你家的服務器還好么?雖不是所有產品都能像微博擁有億萬量級,但在產品預期范圍內出現問題,那即便再精美的產品也無法留住用戶的心。
一、先談談服務器相關的性能指標,有很多,但不可能全看,那么有哪些核心呢?
1、90%響應時間
是指所有用戶的響應時間由小到大進行排序,第90%的響應時間,是用來評估系統容量的重要指標之一。
2、TPS性能,關注服務器的服務能力
每秒系統處理事務(通過、失敗以及停止)的數量。通過它可以確定系統在任何給定時刻的時間事務負載。
3、支持的最大在線人數
指同時登錄站點的最大人數或者服務器同時接收下載的最大數量。
4、服務器自身壓測過程總CPU、內存等的變化情況
CPU利用率是指:CPU執行非系統空閑進程的時間/CPU總的執行時間;內存占用率指的是此進程所開銷的內存。
5、事務成功率
事務成功率=成功處理的事務/所有事務*100%,是檢測服務器處理事務成功幾率的重要指標。
二、市面上有哪些服務器壓測方法
為了能夠幫助用戶更快捷的獲得服務器的核心數據,市場產生了諸多各式各樣的壓測方法,但也存在各式各樣的問題:
1、現網數據預估
根據壓力測試過程中的部分數據,對未來大量用戶訪問的情況機型預估。
存在問題:只適合簡單的服務器擬合,復雜服務器數據就不太准確。
2、真人壓測
通過邀請一定數量的真實用戶來玩游戲,從而對服務器達到一個測試效果。
存在問題:暴露出的性能問題有限,封測人數通常還是太少,雖然有幾百或者幾千用戶在玩,但是並發並不夠,不足以暴露服務端性能問題;另外不適合調優,真人無法完全重復相同行為,服務器就難以進行回歸調優。
3、接口測試
選擇一些具有代表性的功能,通過以小見大的方式,來評估整套服務器性能。
存在問題:無法遍歷整個服務器的接口,難以避免一些微小的問題。
4、錄制回放
通過抓取數據包的方式,來獲取游戲時的協議,再把這些捕獲的協議重新發送給服務端,通過工具放大協議量級達到性能測試的目的。
存在問題:面對復雜的協議交互,單純的放大數據包,無法產生足夠壓力。
5、機器人模擬
通過高還原真實玩家的用戶行為,模擬高並發場景,從而得到類似很多人同時游戲的測試效果。
這些方法各有優劣,騰訊內部普遍使用“機器人模擬”的方法進行壓測,而“機器人模擬”的壓測方法需要充足的測試時間和很大的人力投入,為此騰訊制定了一個較為通用的測試流程,用以提升壓測效率。
三、騰訊內部服務器性能的測試流程介紹
根據騰訊內部游戲和產品的使用需求,騰訊WeTest團隊首先針對http與https協議的頁面,梳理了一個通用的壓測流程。
1、 確定壓測場景,比如登錄,獲取信息列表等
測試人員第一步要做的就是測試方案的確認,主要就是提前模擬實際業務中涉及的場景以及場景中用戶的使用行為,通常需要確認這樣幾點:
1) 確認用戶的登錄狀態,用戶的登錄態是否會不斷變化
2) 用戶登錄后的訪問路徑之間的上下文關系
3) 訪問路徑之間的參數傳遞關系
2、 測試人員編寫測試用例
編寫測試用例就是將上述模擬場景具體化的過程,包括確認壓測的人數,人數遞增邏輯,具體需要壓的接口,接口之間的參數傳遞等。
3、 啟動機器人進行測試,漸進增加機器人數量
在確認了測試方案后,這一步就是執行的過程,根據測試方案中預估的壓力人數,漸進的增加壓力的人數。
4、 記錄分析數據及事務處理情況,查看服務器負載的變化以及服務器的當前承載能力。
上一步提到了要漸進增加機器人,那么為什么要漸進增加機器人?因為在服務器並發增加的過程中需要不斷監控上文服務器的核心數據,不斷挑戰服務器處理能力的極限,避免上來就使用一個過高的並發數直接超過了服務器處理能力的極限,從而無法起到性能優化的目的。
一般來說,在機器人增加的過程中,CPU的突然跑滿以及響應時間瞬間變長,都可能是服務器產生了瓶頸。因此壓測人員需要實時監控壓測上升過程中的服務器情況變化,從而定位問題所在。
5、 調整配置,迭代測試,預估服務器的承載能力以及可能存在的性能瓶頸
在發現基本的測試問題后,測試人員需要通過不斷的調試來定位問題,然后重新發起壓測,知道實現最終的測試目的。
根據這個測試流程,騰訊內部也總結了一些壓測產品所需要具備的特點。
1) 簡單易上手
產品的業務場景是多變的,但是好的壓測產品應該讓這個場景配置過程變得簡單易用,用戶在簡單輸入需要壓測的URL即可進行各個接口的測試,大部分測試配置建議提供一個默認值,用戶對功能更加了解之后可以自由配置這些參數。
2) 進階功能完善
除了簡單易用之外,也要給用戶提供一些進階的功能,在簡單輸入URL的基礎上,可以支持用戶自定義變量,從文件讀取變量,甚至從其他URL的返回值獲取變量的值,可以比較真實模擬真實場景,避免請求變量單一。
3) 提供分布式壓力機進行壓測
由於單機的局限性,壓測產品可以使用分布式壓測的框架,根據用戶配置的機器人數量動態分配多個壓測機,極大提升壓力上限。
4) 詳細的測試數據統計
壓測大師會記錄測試過程中的多項數據,包括在線人數變化、TPS變化、響應時間、收發包流量、服務器CPU內存狀態、壓力機硬件負載、測試結果統計等,可以快速定位服務器的容量以及瓶頸。
基於這些需求,騰訊WeTest團隊開發了專注服務器壓測的產品“壓測大師”,簡化了壓測配置過程,用戶可以在線上部署,線上調試,線上查看報告,幫助用戶成為最高效的“壓測大師”。
WeTest壓測大師旨在降低開發者在服務器性能測試方面的門檻,迅速發現服務器端的性能瓶頸,進行針對性的性能調優,降低服務器采購和維護成本,提高用戶留存和轉化率。目前主要優勢如下:
Ø 一分鍾發起測試,無需編寫腳本
Ø 無需配置壓力機,隨開隨用,輕松發起十萬壓力
Ø 支持HTTP、HTTPS等協議,覆蓋Web,H5,APP,游戲等主流場景
Ø 實時查看測試報告,多維度報告對比,迅速定位性能瓶
目前WeTest壓測大師已經正式對外開放,點擊鏈接:http://wetest.qq.com/gaps/ 即可使用。
如果對使用當中有任何疑問,歡迎聯系騰訊WeTest企業QQ:800024531