一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python利用JMeter測試Tornado的多線程

python利用JMeter測試Tornado的多線程

2020-04-27 10:42jclian91 Python

這篇文章主要介紹了python利用JMeter測試Tornado的多線程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

JMeter的簡介

  JMeter是Apache組織開發的基于Java的壓力測試工具。用于對軟件做壓力測試,它最初被設計用于Web應用測試,但后來擴展到其他測試領域。 它可以用于測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫、FTP 服務器, 等等。

  JMeter的下載網址為:https://jmeter.apache.org/download_jmeter.cgi,下載前請先確定電腦中安裝了Java,下載完畢后點擊bin文件夾下的"meter.bat"(Windows系統)或者"jmeter"可執行文件(Unix系統)即可,界面如下:

python利用JMeter測試Tornado的多線程

  我們將在下面的章節中學習如何使用JMeter,以Tornado的多線程為例。

JMeter使用,以Tornado多進程為例

  我們將會以Tornado的多線程為例,描述如何使用JMeter。測試的Tornado多線程的Python代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# -*- coding: utf-8 -*-
# author: Jclian91
# place: Sanya Hainan
# time: 2020-01-08 21:48
import time
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
 
from tornado import gen
from tornado.concurrent import run_on_executor
from concurrent.futures import ThreadPoolExecutor
 
# 定義端口為9090
define("port", default=9090, help="run on the given port", type=int)
 
 
# 單線程測試
class SanyaHelloHandler(tornado.web.RequestHandler):
  # get 函數
  def get(self):
    time.sleep(0.5)
    self.write('Hello from Sanya!')
 
# 多線程測試
class ShanghaiHelloHandler(tornado.web.RequestHandler):
  executor = ThreadPoolExecutor(4)
 
  @gen.coroutine
  def get(self):
    result = yield self.doing()
    self.write(result)
 
  # 使用tornado 線程池
  @run_on_executor
  def doing(self):
    time.sleep(0.5)
    return 'Hello from Shanghai!'
 
 
# 主函數
def server():
  # 開啟tornado服務
  tornado.options.parse_command_line()
  # 定義app
  app = tornado.web.Application(
      handlers=[(r'/sanya', SanyaHelloHandler),
           (r'/shanghai', ShanghaiHelloHandler)
           ],  # 網頁路徑控制
     )
  http_server = tornado.httpserver.HTTPServer(app)
  http_server.listen(options.port)
  http_server.start()
  tornado.ioloop.IOLoop.instance().start()
 
server()

對上面的程序做個簡單說面:

  • /sanya路徑對應SanyaHelloHandler,該HTTP接口為get請求,單線程;
  • /shanghai路徑對應 ShanghaiHelloHandler,該HTTP接口為get請求,用線程池實現多線程,線程數為4;

  啟動上述Python程序,下一步描述如何使用JMeter。

  首先新建一個測試計劃(Test Plan),取名為tornao測試,如下:

python利用JMeter測試Tornado的多線程

  右擊選擇Add,選擇Threads(Users),再選擇Thread Group,填寫信息如下:

python利用JMeter測試Tornado的多線程

填寫Thread Group的名稱為“tornado單線程測試”,“Number of Threads”為20,表示模擬20個用戶,“Ramp-Up period”為1,表示1秒內發送所有用戶的請求,“Loop Count”為2,表示每個用戶發送2次請求,因此一共為40次請求。

  在“tornado單線程測試”上右擊選擇Add,選擇Sampler,再選擇HTTP Request,填寫信息如下:

python利用JMeter測試Tornado的多線程

該Thread Group用于測試tornado的sanya這個路徑對應的HTTP請求。

  最后我們添加一下對這個測試的一些監控(Listener),用于統計該測試的性能。在“sanya_test”上右擊Add,選擇Listener,依次選擇“View Results Tree”,“Summary Report”,“Aggregate Report”和“Aggregate Graph”,分別代表每次測試結果,總的測試結果,聚合測試結果,聚合測試圖展示。

  在“tornado單線程測試上”右擊選擇start,測試結果如下(只展示Summary Report和Aggregate Graph):

python利用JMeter測試Tornado的多線程

python利用JMeter測試Tornado的多線程

  可以發現,該壓力測試下,請求的平均時間為7472毫秒,1秒2.0次請求(TPS)。

  我們再以同樣的方式測試shanghai這個接口,測試結果如下:

python利用JMeter測試Tornado的多線程

python利用JMeter測試Tornado的多線程

  可以發現,該壓力測試下,請求的平均時間為1718毫秒,1秒7.7次請求(TPS)。

  根據這次測試,我們也發現tornao的多線程機制發揮了作用。

  以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000021556119

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费在线电视 | 四虎影视免费观看免费观看 | 无限资源在线观看8 | 国产成人综合一区人人 | 欧美透逼视频 | 欧美一区二区三区四区五区六区 | 国产精品久久国产精品99盘 | 亚洲福利一区 | 亚洲激情综合 | 日本色播 | 亚洲成色www久久网站 | 国产欧美又粗又猛又爽老 | 午夜理论片日本中文在线 | 欧美日韩国产一区二区三区在线观看 | 嫩草在线观看视频 | 国产精品久久久天天影视香蕉 | 亚洲AV无码一区二区三区乱子伦 | 天天色色色 | 小sao货ji巴cao死你视频 | 视频精品一区二区三区 | 被18号每天强行榨干acg | 亚洲免费精品 | 亚洲国产剧情中文视频在线 | 精品一区二区三区视频 | 色综合伊人色综合网亚洲欧洲 | 精品国产线拍大陆久久尤物 | 石原莉奈被店长侵犯免费 | 边摸边吃奶又黄激烈视频韩国 | 欧美一级专区免费大片 | 天天射夜夜爽 | 国产精品女同久久免费观看 | 四虎论坛 | 高清不卡一区 | 好女孩韩剧免费观看 | 日韩欧美推理片免费看完整版 | 18亚洲chinese男男1069 | 国产一级网站 | 秒播影视 午夜福利毛片 | 免费观看视频高清在线 | 91麻豆精品国产 | 国产精品女同久久免费观看 |