最近被游戲性能的瓶頸問題,搞得膠頭爛額,這里做一個備忘,供大家共同思考:
1. 不單游戲,在這個星球上的任何的軟件開發,性能測試,性能分析和性能的優化都是提升性能的根本三步驟;
2. 黑盒發現瓶頸,白盒發現問題。性能測試,除了壓力測試(黑盒)外, 在進度允許的情況下,還應當引入到單元測試和某些模塊測試中(白盒),特別是復雜方法,必須在編碼完成后進行性能測試, 這樣保證了原子性的操作足夠優化,才能保證整個系統的性能足夠高;
3. 不管是一個系統,一個模塊,還是一個類,運行次數和單次運行時間的卷積最小,都是性能優化的根本目標;
4. 并發數,響應時間,CPU負載,和內存使用率,是服務器端性能的主要指標;
5. 性能分析必須是主觀分析和實際測試相結合,既不能讓主觀分析變成主觀臆想,也要避免進行了錯誤的測試(方法)導致錯誤的結論;
6. 無論怎么玩,游戲壓力測試的方式,也都是那么三種:機器人模擬;第3方性能測試工具模擬;封測,公測真實性測試;機器人模擬缺點在工作量大,優點是可模擬性強,第3方工具是否能高模擬游戲,還有待驗證;真實測試最靠譜, 但費錢;
7. 玩家的上線,下線,掉線,由于涉及到多個服務器的聯動(數據庫, 場景服,session),具備牽一發而動全身的特點,所以它們是最有可能造成服務器宕機的; 相對而言,純粹的正常游戲狀態,很難讓服務器死掉(除了一些意外的數據操作);
8. 根據以上一點,除了關鍵游戲操作(比如戰斗和任務),壓力測試的重點,也將是玩家的上線,下線以及掉線;
9. 在實測中我們發現,服務器端的性能瓶頸主要集中在以下位置:
a. 玩家登陸數據加載
b. 實體進入場景引起的數據同步,以及由此引起的可能的外圍邏輯;
c. 戰斗, 特別是戰斗動作的執行和數據返回
10. 以下地方,最底層,調用運行次數最多,因而最容易影響性能,它們是否足夠簡單,單次運行時間是否足夠低,對整體性能,有著最重要的影響:
a. 實體屬性設置,特別是hp,mp的設置
b. log
c. 事件分發
文章來源于領測軟件測試網 http://www.kjueaiud.com/