接到一个应用测试,应用实现主要使用websocket保持长链接,使用protobuf格式交换数据,用途为发送消息,需要我们测试评估性能,初步评估需要测试长链接数、峰值消息数以及长期运行稳定性

  整体需求不难,主要困难是第一次接触websocket和protobuf,同时也没有现成的脚本可以使用,jmeter原生也不支持websocket协议,需要安装插件支持,protobuf格式也需要重新编译大包使用

  万里长征第一步,先开发测试脚本,由于目前一直在使用python开发,评估项目的性能要求,不需要严格性能指标,所以直接使用python作为开发语言编写脚本,主要实现脚本如下

  入口主文件,mulitprocess.py,多进程发起建立链接

 1 # -*- coding: utf-8 -*-
 2 # @Author  : monleylu
 3 # @Time    : 2018/7/5 12:22 PM
 4 
 5 from multiprocessing import Process,Pool
 6 import os
 7 from data import user
 8 from protobufcon import ProtoService
 9 import tnlog,logging
10 
11 def consumer(host,port,username):
12     logging.error('启动子进程: %s...' % (os.getpid()))
13     kwargs = {"host": host, "port": port, "username": username }
14     pro=ProtoService(**kwargs)
15     pro.startWebsocket()
16 
17 
18 def consumer2(*args,**kwargs):
19     logging.error('启动子进程: %s...' % (os.getpid()))
20     pro = ProtoService(**kwargs)
21     pro.startWebsocket()
22 
23 
24 
25 if  __name__ =="__main__":
26     logging.error('启动主进程 %s.' % os.getpid())
27 
28     p = Pool(450)
29     for i in range(450):
30         #第一种传参数方法
31         # p.apply_async(consumer, args=("11.31.60.10",8880,user.pop(),))
32 
33         #第二种传参数方法
34         kw={"host": "11.31.60.10", "port": 8880, "username": user.pop()}
35         p.apply_async(consumer, args=(),kwds=kw)
36 
37     logging.error('Waiting for all subprocesses done...')
38 
39     p.close()
40     p.join()
41     logging.error('All subprocesses done.')
View Code

相关文章:

  • 2021-11-17
  • 2021-12-30
  • 2022-12-23
  • 2021-12-10
  • 2022-12-23
  • 2021-04-05
  • 2022-12-23
猜你喜欢
  • 2021-11-10
  • 2021-06-10
  • 2022-12-23
  • 2021-07-19
  • 2022-12-23
  • 2022-12-23
  • 2021-07-06
相关资源
相似解决方案