999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

goTicket性能測試平臺的開發與應用

2015-07-05 17:01:40劉文韜朱建生任貝貝
鐵路計算機應用 2015年6期
關鍵詞:用戶

于 澎,劉文韜,朱建生,任貝貝

(中國鐵道科學研究院 電子計算技術研究所, 北京 100081)

研究與開發

goTicket性能測試平臺的開發與應用

于 澎,劉文韜,朱建生,任貝貝

(中國鐵道科學研究院 電子計算技術研究所, 北京 100081)

為滿足對互聯網售票系統進行大并發模擬測試的需求,基于開源Grinder框架設計開發goTicket性能測試平臺,并應用該平臺對系統進行壓力測試和性能調優。

互聯網售票;壓力測試;Grinder;性能調優

12306互聯網售票系統的研發與應用,拓展了購票渠道,使旅客出行購票變得更加方便快捷。隨著訂票用戶的逐漸增加,旅客購票習慣的不斷改變和訂票功能的持續優化,系統最大日售票量已超過500萬張,超過全路日售票量的50%。系統實時處理大量用戶訂票并發請求,并確保交易準確、完整,尤其在預售國慶節、春節車票期間,系統承擔著巨大壓力。系統處理用戶請求速度快慢,響應時間長短,直接影響著用戶對系統的體驗度。因此,在系統上線前,有必要對系統進行性能測試,并對其進行性能調優,確保系統功能在大并發請求下正常穩定運行。

1 對比選型

目前業界有多種性能測試工具可用,如Load-Runner,它功能強大,支持眾多常用協議,但是由于是商業產品,其需要依照并發用戶數和協議購買指定時間內的授權,并且軟件較龐大,對系統配置要求較高;Compuware Gomez是一款擁有云服務器的性能測試工具,需要協調各地云服務器來產生壓力,所以每次測試準備和運行的周期較長,使用費用昂貴。眾多開源免費的性能測試工具,如Jmeter、Tsung、Grinder等,對模擬互聯網用戶請求有較好的支持,但較少支持其它協議,缺少對測試結果的分析展示,工具安裝部署比較繁瑣,操作使用不友好,因此用戶使用工具的學習成本較高,體驗度差。各種性能測試工具的對比如表1所示。

表1 各種性能測試工具對比

針對12306互聯網售票高并發的特點,適宜采用模擬HTTP協議的測試架構進行壓力測試,其中Jmeter、Tsung和Grinder都可以模擬HTTP協議請求,但是Jmeter、Tsung架構安裝配置比較復雜,Tsung運行環境中要求安裝并配置Erlang并發語言環境,并且兩種工具的測試腳本編寫不夠靈活,無法真實模擬用戶請求流量。Grinder自身結合了HTTPClient插件,對協議可以靈活處理,可以模擬訪問服務器的數據流量,測試腳本采用Jython語言編寫,可以采用Java第三方依賴包,可擴展性更強,腳本參數化也變得靈活。此外,Grinder架構自身基于Java編寫,壓力系統較輕便,較容易對服務器產生壓力,工具容易使用,學習成本較低,因此可以采用Grinder性能測試工具對互聯網售票系統進行性能測試。

2 平臺架構設計

2.1 開源測試框架

Grinder是一套性能測試框架,如圖1所示,主要是由多臺機器同時運行測試腳本以實現對被測系統產生壓力,并實時收集運行場景的響應時間和TPS等信息。整個測試框架由3部分組成,包括控制臺、代理進程和工作進程。其中,控制臺負責協調代理和工作進程,收集和顯示測試結果,提供測試腳本簡單編輯和分發功能;代理進程在后臺持續運行,主要負責啟動和停止工作進程,并接收控制臺發送的測試腳本進行本地緩存;工作進程主要任務是重復執行測試腳本,每個進程可以有多個線程獨立的運行腳本,并將測試結果發送給控制臺。

圖1 Grinder性能測試框架圖

2.2 平臺改造

Grinder性能測試框架中控制臺為C/S架構,界面不友好,使用過程中測試結果無法實時展現。為了使之在對互聯網售票系統進行性能測試和調優過程中能夠起到指導作用,有必要對其進行以下5方面的開發改造:(1)對其已有功能進行Web化改造;(2)對測試腳本進行版本控制;(3)對測試結果進行實時展示和保存;(4)對歷史結果可查看回放;(5)對系統架構進行優化,使系統易于安裝部署,實現可以根據壓力需求進行橫向拓展的目標。

goTicket測試平臺采用Grinder開源測試框架并進行二次開發,是一整套模擬12306用戶訂票業務的性能測試解決方案,平臺采用B/S架構模式,界面友好,用戶操作簡單方便。goTicket性能測試平臺對不同級別用戶進行角色管理,其中使用者可以進行性能腳本編輯與管理,性能測試場景創建與執行,性能測試結果收集與展示;管理者除具備以上功能外,還可以進行用戶管理、壓力機管理和系統配置修改等功能操作。

2.3 平臺功能邏輯

goTicket性能測試平臺由一個控制臺和多臺壓力機共同組成。其中控制臺負責與用戶進行交互,用戶通過網頁可以在線編輯與管理測試腳本,創建與管理測試場景,啟動與停止性能測試運行,查看性能測試結果。壓力機負責接收控制臺指令,執行測試腳本,并將運行結果返回給控制臺。另外在被測系統上可以部署監控程序,負責收集被測系統性能指標,并回傳給控制臺??刂婆_是整個測試平臺的核心部分,負責與用戶交互,壓力機控制和結果展示,也是整個平臺開發的重點。

goTicket性能測試平臺架構如圖2所示。

goTicket控制臺主要由腳本管理、場景控制、SVN管理、控制臺管理、壓力機管理和監控管理組成。(1)腳本管理模塊與用戶進行交互,提供列表式的腳本展示,可以記錄腳本名稱,腳本附加信息,腳本修改時間,版本和大小等信息,可以實現腳本的新建和已有腳本的刪除。腳本管理整合Grinder腳本調試功能,對于用戶已建的腳本可以單次運行,方便用戶查看腳本的正確性,并且可以進行簡單編輯修改。腳本通過SVN模塊進行版本控制,對于線下編輯的腳本可直接上傳至SVN中,新增腳本顯示在腳本列表中,其它模塊通過調用統一的API接口實現腳本的簽出、提交和分發,以及腳本信息查詢等操作。(2)控制臺管理模塊管理多個控制臺進程,當有用戶計劃測試時,管理模塊給用戶分配一個可用的控制臺,與測試場景綁定,并分配可用的壓力機資源。(3)場景控制模塊負責與用戶進行交互,如測試定義、編輯和運行等操作,以列表形式展示測試場景概要信息,包括已運行完成、正在運行中和計劃運行的測試場景,可以查看測試場景的詳細信息。正在運行的場景通過控制臺將指定的測試腳本分發到壓力機上,并控制壓力機上的代理進程產生相應數量的虛擬用戶,重復執行測試腳本,從而對被測系統產生壓力。(4)壓力機管理模塊負責控制平臺可用的壓力資源,實現在平臺內壓力資源的注冊、分配,以及壓力機系統狀態的實時監控。(5)監控管理模塊收集被測系統上監控進程發送的信息,包括系統CPU使用率、內存使用率和網絡流量信息??刂婆_內部整合了Mysql數據庫,負責存儲用戶、腳本和場景信息,為測試場景結果展示提供數據基礎。

goTicket壓力機組成相對簡單,其采用Grinder架構的代理模式,主要包括代理進程,實時與控制臺進行交互。當測試運行時,壓力機會依據場景設置的虛擬用戶數,啟動相應數量的進程和線程,重復執行測試腳本中定義的操作,最終實現對目標系統進行不間斷的并發請求,并將測試執行的指標,包括運行時間、請求數量、完成數量、壓力機狀態等信息發送到控制臺。

3 關鍵技術

3.1 操作流程Web化

將Grinder測試流程遷移到網頁形式是goTicket性能測試平臺開發的重點,對原控制臺程序操作的過程進行易用性優化。主要包括測試腳本編輯和驗證,測試場景通過頁面形式進行配置,測試運行中實時顯示運行結果和對歷史結果的查詢與展示。整個平臺采用Spring框架模式開發實現,數據庫存儲用戶定義、場景定義等信息,采用Mysql數據庫,采用SVNkit進行版本管理,支持腳本下載本地調試與上載,使用FreeMaker編寫模板引擎,用于表現層界面實現。采用第三方JavaScript庫Jplot實現曲線圖的展示。平臺采用Tomcat服務器,部署在Linux操作系統上,對系統的配置要求較低。

3.2 用戶角色管理

goTicket性能測試平臺對不同級別用戶進行角色管理,明確各角色可操作的范圍。管理員可以查看平臺的運行狀況,增加與減少可用的壓力機數量,新增、修改和刪除用戶。普通用戶更接近測試,可以編輯、修改和調試腳本,執行測試場景等。在壓力資源許可的情況下,多個用戶可以同時運行測試場景。

3.3 測試結果展示

goTicket性能測試平臺對實時測試數據進行收集、處理和展示。測試運行時,壓力機重復運行測試腳本,記錄所定義事務的執行次數、執行時間、運行結果等數據,并將數據發送到控制臺進行處理??刂婆_依據采樣間隔時間對收集的數據進行分析處理,通過表格和動態曲線圖的方式展示測試的響應時間和TPS關鍵數據,使得用戶對運行的測試場景有直觀的了解。所有的測試數據和分析處理后的結果都會存儲在平臺的Mysql數據庫內,這使得用戶查看歷史測試結果更加方便。

3.4 Jython腳本支持

goTicket性能測試平臺的學習和使用成本大大降低,其主要原因是其繼承了Grinder對Jython測試腳本的支持。Grinder架構針對HTTP協議有錄制腳本工具和豐富的插件,并且有大量的HTTP協議處理工具,這些都使得基于HTTP協議的測試腳本容易編寫與維護。Jython是Python解釋器在Java中的完整重現,其繼承Python語法風格,編寫簡單,同時又繼承了Java的類庫,再加上測試腳本支持引用第三方Java類庫,這使得腳本功能極大地提升。

4 平臺應用

4.1 手機訂票性能測試

手機訂票作為互聯網售票系統的拓展,其共用一部分互聯網售票系統組件,但也新增部分應用服務器,為確保上線后手機服務器穩定運行,有必要模擬多客戶端訪問請求產生對應用服務器的壓力。由于移動設備訪問應用服務器需要進行多步確認,模擬操作處理過程相對復雜,單個業務邏輯內請求較多,所以測試腳本編寫較困難,維護也有較大難度。測試過程經過了多天多輪次的壓力測試,又經過數天的系統調優過程。測試模擬Android用戶直壓WorkLight,壓測WorkLight負載均衡,直壓Nginx,壓測Nginx負載均衡多個測試場景,并模擬不同并發用戶數量請求。測試場景模擬10 000個并發用戶,思考時間為100 ms,其中使用10臺壓力機,每臺壓力機啟動10個工作進程,每個進程產生100個線程,總TPS為38 200,平均響應時間150 ms。

手機訂票性能測試TPS曲線圖和響應時間曲線圖如圖3、圖4所示。

圖3 手機訂票性能測試TPS曲線圖

圖4 手機訂票性能測試響應時間曲線圖

4.2 互聯網售票擴能性能測試

為保證互聯網售票系統在春運期間平穩運行,系統進行應急擴能,擴展A5、A6、A7共3組售票節點,且首次使用X86架構平臺承載售票核心數據庫。goTicket測試平臺對線上功能進行壓力測試,模擬用戶登入、訂票、查詢訂單和登出操作。測試場景模擬200個并發用戶訂票,思考時間為100 ms,其中使用5臺壓力機,每臺壓力機啟動2個工作進程,每個進程產生20個線程,總TPS為160,平均響應時間680 ms。

互聯網售票擴能性能測試TPS曲線圖和響應時間曲線圖如圖5、圖6所示。

圖5 互聯網售票擴能性能測試TPS曲線圖

圖6 互聯網售票擴能性能測試響應時間曲線圖

5 結束語

goTicket性能測試平臺作為客票系統的一個組成部分,目前已用于模擬HTTP協議,實現對互聯網售票系統的性能測試,并且在平臺持續產生壓力的情況下對被測系統進行性能調優,平臺將持續提供對系統不同需求的測試服務??推毕到y是一個大型分布式系統,其數據庫的穩定運行和客票核心業務的正確運行同樣重要,因此有必要對goTicket性能測試平臺進行拓展,為以上功能的測試與調優提供更強的技術保障。另一方面,基于互聯網業界迅速發展的云服務,可以研究和部署互聯網云服務器壓力測試環境,模擬互聯網用戶對系統所產生的壓力。

[1] 趙 斌. 軟件測試技術經典教程[M]. 北京:科學出版社,2011.

[2] 陳能技,郭柏雅. 性能測試診斷分析與優化[M]. 北京:電子工業出版社,2012.

責任編輯 陳 蓉

goTicket performance testing platform

YU Peng, LIU Wentao, ZHU Jiansheng, REN Beibei
( Institute of Computer Technologies, China Academy of Railway Sciences, Beijing 100081, China )

In order to meet the test demand on Internet Ticketing and Reservation System with high concurrency simulation, goTicket performance testing platform based on open source Grinder framework was designed, and applied for pressure testing and performance tuning.

Internet Ticketing and Reservation System; pressure testing; Grinder; performance tuning

U293.22∶TP39

A

1005-8451(2015)06-0001-04

2014-11-03

于 澎,助理研究員;劉文韜,副研究員。

猜你喜歡
用戶
雅閣國內用戶交付突破300萬輛
車主之友(2022年4期)2022-08-27 00:58:26
您撥打的用戶已戀愛,請稍后再哭
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年5期)2016-11-28 09:55:15
兩新黨建新媒體用戶與全網新媒體用戶之間有何差別
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
挖掘用戶需求尖端科技應用
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
主站蜘蛛池模板: 日韩在线观看网站| 被公侵犯人妻少妇一区二区三区| 国产无码精品在线播放| 日韩 欧美 国产 精品 综合| 超碰91免费人妻| 国产性爱网站| 久久国产精品嫖妓| 19国产精品麻豆免费观看| 国产自产视频一区二区三区| a级毛片网| 四虎影视库国产精品一区| 亚洲乱强伦| 国产成人夜色91| 国产大片黄在线观看| 日韩天堂在线观看| 亚洲aaa视频| 国产精品女熟高潮视频| 99久久精品国产精品亚洲| 国产导航在线| 欧美日韩一区二区三区四区在线观看| 国产XXXX做受性欧美88| 国产精品久久自在自线观看| 国产手机在线观看| 在线无码九区| 天堂网国产| 欧美激情综合| 在线a视频免费观看| 中文字幕在线免费看| 欧美色图第一页| 成人国产一区二区三区| 欧美视频在线播放观看免费福利资源 | 亚洲精品动漫在线观看| 999精品色在线观看| 二级毛片免费观看全程| 九九免费观看全部免费视频| 熟妇丰满人妻| 欧美激情福利| 日本在线欧美在线| 亚洲第一国产综合| 亚洲va欧美va国产综合下载| 成人在线亚洲| 国产在线91在线电影| 日本在线免费网站| 永久天堂网Av| 国产呦精品一区二区三区下载| 麻豆国产在线观看一区二区| 天堂网亚洲综合在线| 日韩大乳视频中文字幕| 国产精品久久久久婷婷五月| 免费AV在线播放观看18禁强制| 极品av一区二区| 91久久天天躁狠狠躁夜夜| 在线毛片网站| 欧美国产中文| 精品福利国产| h网站在线播放| 成年网址网站在线观看| 日本三级欧美三级| 亚洲精品色AV无码看| 国产三级精品三级在线观看| 国内精自视频品线一二区| 性喷潮久久久久久久久| 免费全部高H视频无码无遮掩| 国产精品久线在线观看| 国产91精品久久| 日本免费精品| 精品欧美日韩国产日漫一区不卡| 亚洲婷婷丁香| 97国产在线视频| 国产日韩精品一区在线不卡| 在线看免费无码av天堂的| 国产成人做受免费视频| 欧美亚洲一二三区| 国产精品无码制服丝袜| 国产1区2区在线观看| 99激情网| 亚洲一区二区三区中文字幕5566| 99中文字幕亚洲一区二区| 久久男人视频| 亚洲高清无码久久久| 婷婷综合在线观看丁香| 成人蜜桃网|