Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 蝗虫负载测试脚本出错-连接中止。“,RemoteDisconnected_Python_Performance Testing_Locust - Fatal编程技术网

Python 蝗虫负载测试脚本出错-连接中止。“,RemoteDisconnected

Python 蝗虫负载测试脚本出错-连接中止。“,RemoteDisconnected,python,performance-testing,locust,Python,Performance Testing,Locust,我不熟悉蝗虫负载测试框架,正在将现有的基于Azure云的性能测试C脚本迁移到蝗虫基于Python的脚本。我们的团队几乎完成了脚本的迁移。但是在我们的负载测试期间,我们得到了如下错误,由于CPU利用率高或由于蝗虫上有太多异常,无法从机器创建新请求。我们使用基于网络的蝗虫模式运行-详情如下所示。这些ScritP在50到100个用户的较小负载上运行良好 错误1-“连接中止”。“远程断开连接”“远程端关闭连接而无响应” 错误2:连接池已满,正在放弃连接 ****错误3:urllib3.exception

我不熟悉蝗虫负载测试框架,正在将现有的基于Azure云的性能测试C脚本迁移到蝗虫基于Python的脚本。我们的团队几乎完成了脚本的迁移。但是在我们的负载测试期间,我们得到了如下错误,由于CPU利用率高或由于蝗虫上有太多异常,无法从机器创建新请求。我们使用基于网络的蝗虫模式运行-详情如下所示。这些ScritP在50到100个用户的较小负载上运行良好

错误1-“连接中止”。“远程断开连接”“远程端关闭连接而无响应”

错误2:连接池已满,正在放弃连接

****错误3:urllib3.exceptions.NewConnectionError::未能建立新连接:[Errno 110]连接超时****

是的,我们在实用程序类上使用UrlLibs。但前两个错误似乎确实是蝗虫造成的

我们的负载测试配置为:3500个用户,孵化率为每秒5个用户。在Azure上的8核16 Gb Linux Ubuntu虚拟机上运行nativelyno docker容器。ulimit在Linux机器上设置为50000

请帮助我们了解您的想法

样本测试如下所示


蝗虫的默认HTTP客户端使用python请求,该请求在内部使用urllib3。 如果您正在进行大规模测试,则应该考虑另一个HTTP客户端。urllib 3 PoolManager的连接池将重用连接,并限制在任何给定时间每个主机允许的连接数,以避免累积太多未使用的套接字。 因此,您可以选择调整池:

或者您可以尝试其他任何高性能HTTP客户端。如: 蝗虫还提供了一个内置的int客户端,它比默认的python请求更快:


在客户端无法处理大负载的情况下,应考虑在群集模式下运行蝗虫。p> Locust的默认HTTP客户端使用python请求,该请求在内部使用urllib3。 如果您正在进行大规模测试,则应该考虑另一个HTTP客户端。urllib 3 PoolManager的连接池将重用连接,并限制在任何给定时间每个主机允许的连接数,以避免累积太多未使用的套接字。 因此,您可以选择调整池:

或者您可以尝试其他任何高性能HTTP客户端。如: 蝗虫还提供了一个内置的int客户端,它比默认的python请求更快:


在客户端无法处理大负载的情况下,应考虑在群集模式下运行蝗虫。p> 非常感谢,我将很快尝试并让您知道。我们检查了FastHttpOccast和gevenhttp客户端,但它们在响应对象上都没有帮助响应URL的属性。这意味着我们正在检查默认蝗虫http客户端上http响应的Url,以比较用户在某些操作后到达的位置。你有什么想法吗?我们通过在同一台机器上添加更多的从机来解决这个问题,因为python一次只使用一个内核。因此,我们在同一台机器上打开了新的蝗虫从机,以便它使用其他未使用的内核来创建更多请求/连接非常感谢,我将很快尝试此操作,并让您知道。我们检查了FastHttpOccast和gevenhttp客户端,但它们在响应对象上都没有有助于响应URL的属性。这意味着我们正在检查默认蝗虫http客户端上http响应的Url,以比较用户在某些操作后到达的位置。你有什么想法吗?我们通过在同一台机器上添加更多的从机来解决这个问题,因为python一次只使用一个内核。因此,我们在同一台机器上打开了新的蝗虫从机,以便它使用其他未使用的内核来创建更多请求/连接

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/'