一个高并发的测试websocket脚本

根据最近公司上线一个直播项目,但是有一天测试那边一脸苦逼的来找到我,问我有什么好工具可以实现高并发的测试,他使用jmeter限制了400个并发数(个人没去研究过不知道是否真的限制),后来我第一时间想到python写一个脚本,也没想多小就答应帮他搞一个测试脚本。


首先整理思:

  • 要实现高并发不到两点

    • 多进程
    • 多线程

首先安装先要环境:

pip install websocket
pip install threadpool
pip install websocket-client
pip install multiprocessing

直接上脚本:

#!/usr/bin/python
#-*- coding:utf-8 -*-
#__author__ == 'chenmingle'import websocket
import time
import threading
import json
import multiprocessing
from threadpool import ThreadPool, makeRequests#修改成自己的websocket地址
WS_URL = "wss://ws.test.com/"
#定义进程数
processes=5
#定义线程数(每个文件可能限制1024个,可以修改fs.file等参数)
thread_num=1000def on_message(ws, message):print(message)passdef on_error(ws, error):print(error)passdef on_close(ws):print("### closed ###")passdef on_open(ws):def send_trhead():#设置你websocket的内容send_info = {"cmd": "refresh", "data": {"room_id": "58", "wx_user_id": 56431}}#每隔10秒发送一下数据使链接不中断while True:time.sleep(10)ws.send(json.dumps(send_info))t = threading.Thread(target=send_trhead)t.start()def on_start(num):time.sleep(num%20)websocket.enableTrace(True)ws = websocket.WebSocketApp(WS_URL + str(num),on_message=on_message,on_error=on_error,on_close=on_close)ws.on_open = on_openws.run_forever()def thread_web_socket():#线程池pool = ThreadPool(thread_num)num = list()#设置开启线程的数量for ir in range(thread_num):num.append(ir)requests = makeRequests(on_start, num)[pool.putRequest(req) for req in requests]pool.wait()if __name__ == "__main__":#进程池pool = multiprocessing.Pool(processes=processes)#设置开启进程的数量for i in xrange(processes):pool.apply_async(thread_web_socket)pool.close()pool.join()


这样就完成一个高并发的websocket测试脚本,如果觉得这文章不错的,请在本人Github上点个star,感谢!!


参考资料:

  • python thread pool websocket client

转载于:https://blog.51cto.com/legehappy/2144645

一个高并发的测试websocket脚本相关推荐

  1. 如何设计一个高并发的存储系统

    1. 如何设计一个高并发的系统 ① 数据库的优化,包括合理的事务隔离级别.SQL语句优化.索引的优化 ② 使用缓存,尽量减少数据库 IO ③ 分布式数据库.分布式缓存 ④ 服务器的负载均衡 2. 锁的 ...

  2. 一个springboot能支持多少并发_吃透这篇,你也能搭建出一个高并发和高性能的系统...

    " 什么是高并发?高并发是互联网分布式系统架构的性能指标之一,它通常是指单位时间内系统能够同时处理的请求数,简单点说,就是 QPS(Queries Per Second). 那么我们在谈论高 ...

  3. php ssc 源码_吃透这篇,你也能搭建出一个高并发和高性能的系统

    什么是高并发?高并发是互联网分布式系统架构的性能指标之一,它通常是指单位时间内系统能够同时处理的请求数,简单点说,就是 QPS(Queries Per Second). 那么我们在谈论高并发的时候,究 ...

  4. php小程序秒抢高并发,PHP 如何设计一个高并发高可用的秒杀或抢券系统

    一个大型网站应用一般都是从最初小规模网站甚至是单机应用发展而来的,为了让系统能够支持足够大的业务量,从前端到后端也采用了各种各样技术,前端静态资源压缩整合.使用CDN.分布式SOA架构.缓存.数据库加 ...

  5. 【面试题】如何设计一个高并发的系统?

    每个行业都一样,人才都是分层次的,从事技术行业的程序员们更是如此,按照技术能力分为三六九等. 每个层次的人出去面试,面试官考察的方向是不一样的. 刚入职场的小白,会问你很多基础性的知识,有过几年经验的 ...

  6. mysql每秒支持多少并发_如何设计一个高并发系统?

    面试题 如何设计一个高并发系统? 面试官心理分析 说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了.为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先. 如果你确 ...

  7. oom 如何避免 高并发_【面试题】如何设计一个高并发系统?

    面试题 如何设计一个高并发系统? 原文链接:https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/high- ...

  8. 面试题:如何设计一个高并发系统?

    面试官心理分析 说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了.为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先. 如果你确实有真才实学,在互联网公司里干过高 ...

  9. 高并发面试 - 如何设计一个高并发系统?

    高并发面试 - 如何设计一个高并发系统? 面试题 如何设计一个高并发系统? 面试官心理分析 说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了.为啥?因为你没看到现在很多公司招聘的 JD 里 ...

最新文章

  1. 2021年大数据Flink(十五):流批一体API Connectors ​​​​​​​Kafka
  2. Nancy in .Net Core学习笔记 - 初识Nancy
  3. C# 判断字符串是否符合十六进制,八进制,二进制和十进制整数格式的正则表达式...
  4. 【Silverlight】Bing Maps学习系列(七):使用Bing Maps的图片系统(Tile System)
  5. git学习------gt;Git 分支管理最佳实践
  6. 粉丝提问:有没有人会做彩虹表
  7. 图嵌入综述 (arxiv 1709.07604) 译文五、六、七
  8. python数据分析——如何用python连接远程数据库
  9. SQL Server触发器创建、删除、修改、查看示例步骤
  10. 复数矩阵Cholesky分解算法的C++实现
  11. 计算机万能知识,电脑知识讲解ppt课件.ppt
  12. 电压转电流模块电路设计原理解析
  13. 手机android微信文件怎么恢复,微信文件过期或被清理怎么恢复?好工具,帮你安全快速找回文件!...
  14. 怎么用计算机里的坦克大战,坦克大战怎么使用重坦_坦克大战重坦篇_7k7k坦克大战...
  15. 关于Linux、git和github的一些历史事件
  16. IEDA免费在线激活永久使用
  17. 33岁跳槽无路,濒临绝望之际受贵人指点,成功上岸阿里(Java岗)
  18. struts2中No result defined for action xxx.xxx.xxx and result xxx错误的几种解决方法
  19. 对接阿里云内容安全服务(机审视频检测)
  20. 作为菜鸟的我,努力学编程就对了——初来乍到篇

热门文章

  1. 解决数据库导入导出的常见问题集解决办法
  2. SpringMVC @ResponseBody 406
  3. ASP.NET Core WebAPI控制器返回类型的最佳选项
  4. 常用Linux命令:
  5. django 模型 使用 DateTimeFields 字段 auto_now_add 属性 实现 插入数据时 自动记录时间...
  6. summit网页上的smt打不开 提示无法启动应用程序 请与应用程序供应商联系
  7. MySQL5.5安装到最后一步卡住的解决办法(即使删除了隐藏文件内C:\ProgramData的MySQL以后还是没解决问题)
  8. MicrosoftFixit50688 [Windows7事件ID10,WMI错误的解决方法
  9. 解决CentOS6.5下MySQL5.6无法远程连接的问题
  10. 【图解+全文】工信部关于印发“十四五”大数据产业发展规划的通知