我是Locust负载测试框架的新手,在将现有基于Azure云的性能测试C#脚本迁移到Locust的Python脚本的过程中。我们的团队几乎完成了脚本的迁移。但是在我们的负载测试中,我们会收到以下错误,因为CPU利用率很高,或者因为Locust上的异常太多,所以无法从机器上创建新的请求。我们正在运行基于蝗虫网络的模式-详情如下所示。这些scritps在50到100个用户的较小负载上运行良好。
“错误1-(‘连接中止。’,RemoteDisconnected(‘远程结束没有响应的关闭连接’,))”
“错误2:连接池已满,丢弃连接”
“*错误3 :urllib3.exceptions.NewConnectionError::未能建立新连接: Errno 110连接超时*”
是的,我们在实用工具类上使用UrlLibs。但前两个错误似乎是蝗虫的错误。
我们的负载测试配置是:"3500用户的孵化速率为每秒5用户“。在Azure上的8 Core,16 Gb的Linux虚拟机上本地运行(没有码头容器)。在Linux机器上设置为50,000。
请帮助我们了解你的想法
样本测试如下所示:
import os
import sys
sys.path.append(os.environ.get('WORKDIR', os.getcwd()))
from locust import HttpLocust, TaskSet, task
from locust.wait_time import between
class ContactUsBehavior(TaskSet):
wait_time = AppUtil.get_wait_time_function(2)
@task(1)
def post_load_test_contact(self):
data = { "ContactName" : "Mane"
, "Email" : "someone@someone.com"
, "EmailVerifaction" : "someone@someone.com"
, "TelephoneContact" : ""
, "PhoneNumber" : ""
, "ContactReason" : "Other"
, "OtherComment" : "TEST Comments 2019-12-30"
, "Agree" : "true"
}
self.client.post("app/contactform", self.client, 'Contact us submission', post_data = data)
class UnauthenticatedUser(HttpLocust):
task_set = ContactUsBehavior
# host is override-able
host = 'https://app.devurl.com/'发布于 2020-02-20 19:02:51
Locust的默认HTTP客户端使用python-请求,在内部使用urllib3。如果您正在进行大规模测试,则应该考虑另一个HTTP客户端。urllib 3 (PoolManager )的连接池将重用连接,并在任何给定时间限制每个主机允许多少个连接,以避免积累太多未使用的套接字。因此,您可以选择调整池:https://urllib3.readthedocs.io/en/latest/advanced-usage.html#customizing-pool-behavior
或者您可以尝试任何其他高性能HTTP客户端。例:格温赫特 Locust还提供了一个构建int客户机,它比默认python请求:https://docs.locust.io/en/stable/increase-performance.html更快。
如果客户端仍然无法处理大负载,则应该考虑在不同的节点上以集群模式运行Locust。
https://stackoverflow.com/questions/60326472
复制相似问题