当前位置:   article > 正文

用locust测试tcp并发_locust 模拟socket客户端

locust 模拟socket客户端

直接上代码

  1. import random
  2. import sys
  3. import os
  4. import time
  5. from socket import *
  6. from locust import User, events, task, TaskSet, between,constant_pacing
  7. import datetime
  8. class UserBehavior(TaskSet):
  9. # wait_time = between(1, 1)
  10. def on_start(self):
  11. self.tcp_client_socket = socket(AF_INET, SOCK_STREAM)
  12. server_addr = ("10.87.13.12", 514)
  13. self.tcp_client_socket.connect(server_addr)
  14. @task
  15. def buy(self):
  16. try:
  17. # 发送数据
  18. # print("ready to sending")
  19. start_time = time.time()
  20. date = (datetime.datetime.now()).strftime("%Y-%m-%d %H:%M:%S")
  21. data = f'<46>USM |1|{date}|1|1|dfs1|10.5.68.136|登录系统: 密码登录||\n'
  22. data1 = f'<46>USM |1|{date}|1|1|dsf1|10.5.68.136|登录系统: 密码登录||\n'
  23. _tmp = random.randint(1, 2)
  24. if _tmp == 1:
  25. self.tcp_client_socket.send(data.encode("utf-8"))
  26. else:
  27. self.tcp_client_socket.send(data1.encode("utf-8"))
  28. total_time = int((time.time() - start_time) * 1000)
  29. # print("success to send---")
  30. events.request_success.fire(request_type="TCP_bon", name="new_face", response_time=total_time,
  31. response_length=0)
  32. except Exception as e:
  33. events.request_failure.fire(request_type="TCP_bon", name="new_face", response_time=0, exception=e,
  34. response_length=0)
  35. def on_stop(self):
  36. # 释放socket
  37. self.tcp_client_socket.close()
  38. class ApiUser(User):
  39. wait_time = constant_pacing(1)
  40. tasks = [UserBehavior]
  41. if __name__ == "__main__":
  42. wokersSum = int(sys.argv[1])
  43. os.system('ulimit -n 65535')
  44. # 正式开始发送日志
  45. print(f"开始起服务准备测试日志性能————————————————————————————————————————————————————")
  46. os.system('ps auxf | grep locust | grep -v grep | awk \'{print$2}\'|xargs kill -15')
  47. for i in range(wokersSum):
  48. os.system(f'locust -f main50percent.py --master-port=11111 --worker &')
  49. time.sleep(1)
  50. print(f"开启中{i}")
  51. os.system(f'locust -f main50percent.py --master --expect-workers={wokersSum} --master-bind-port=11111')

运行方法:

pyhon3 main50percent.py 5

后面这个5表示用5个工作进程来跑

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/911698
推荐阅读
相关标签
  

闽ICP备14008679号