服務器性能測試是一項比較繁瑣的事情,作為沒有做過性能測試的同學可能需要理清楚以下幾個事情。
1.1. 協議分析
首先是協議分析,性能測試本質上是我們用代碼來模擬真實的用戶請求,所以我們必須要知道發送出去的請求內容才能模擬。在典型的CS服務器中很多使用了protobuf,thrift,tdr(騰訊自研)來序列化以及反序列號請求內容。
序列化之后一方面可以對數據進行壓縮處理,另一方面也避免請求內容明文傳輸造成被抓包·泄漏數據的危險。之前有過服務器傳輸數據的時候使用的是明文直接發送,而且這個數據是一些敏感的sql語句,這樣首先暴露了數據庫的表結構,同時不法分子可以通過模擬發包造成“脫褲”甚至是數據被清空。
1.1.1. Protobuf
谷歌出品,必屬精品。Protobuf使用起來很方便,學習成本非常低,而且序列化和反序列號的接口很容易使用。同時它相對于xml以及json,極大的的減小了數據占用的空間,減少了傳輸成本。目前支持包括C++,java以及python等多個語言。Protobuf目前用的比較多,打解包也很方便,比較推薦使用。
1.1.2. Thrift
Thrift是一個跨語言的輕量級rpc消息和數據交換框架。Thrift支持幾乎絕大部分主流的語言,包括C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml,雖然大部分我都沒有用過。相對于protobuf,thrift提供了全套RPC解決方案,包括序列化機制、傳輸層、并發處理框架等,也因為如此thrift的學習成本比較高。
1.1.3. 騰訊自研協議tdr
Tdr是騰訊自研跨平臺多語言數據表示組件,主要用于基于數據的序列化反序列化(支持二進制方式和XML文本方式)以及ORM數據存儲。廣泛用于互娛研游戲和部分代理游戲。在性能上基本和protobuf差不多,主要應用在C++程序中。
在做服務器性能測試之前,我們需要了解它的協議是怎么定義的。
1.2. 機器人管理
本質上機器人管理就是一個調度控制器,在獲取需要發送的請求協議之后,需要有一個框架來管理所有的機器人,控制機器人的啟動,發送請求以及停止的動作??蚣艿倪x擇需要根據服務器的實際情況來,不同的業務場景,使用不同的框架產生的壓力上限也會不一樣。