蝗虫负载测试给了我ChunkedEncodingError

时间:2020-01-31 14:15:12

标签: python postgresql nginx gunicorn locust

我正在对django gunicorn nginx和postgresql应用程序进行负载测试。 在大约1500个并发用户之后,我的蝗虫“失败”选项卡中出现以下错误:

1   GET /   ChunkedEncodingError(ProtocolError('Connection broken: IncompleteRead(2773 bytes read, 7467 more expected)', IncompleteRead(2773 bytes read, 7467 more expected)))

我已经检查了所有访问和错误日​​志(nginx访问和错误日​​志,gunicorn日志,syslog,postgresql日志),但找不到与上述错误相关的任何内容。

这是蝗虫错误吗?是超时错误吗?我似乎无法找到问题所在。

这是我的蝗虫文件:

from locust import HttpLocust, TaskSet, task, between
from requests.auth import HTTPBasicAuth


class UserBehavior(TaskSet):

    @task(4)
    def index(self):
        self.client.get("", auth=("user", "pass"))

    @task(4)
    def program(self):
        self.client.get("page1/", auth=("user", "pass"))

    @task(1)
    def artist(self):
        self.client.get("page1/sub-page/", auth=("user", "pass"))

    @task(2)
    def tickets(self):
        self.client.get("page2/", auth=("user", "pass"))


class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    wait_time = between(7, 30)

如您所见,我正在使用基本身份验证进入页面。我不知道在很多请求之后这是否真的导致了错误。

什么可能导致此错误?预先感谢!

1 个答案:

答案 0 :(得分:2)

有人(可能是服务器)似乎正在关闭连接,实际上没有更多的蝗虫可以告诉您。

SO上还有许多其他有关此异常的故障单(关于请求库,而不是蝗虫),也许其中之一可能会有所帮助。

您还可以尝试使用新的FastHttpLocust,它使用不同的请求库(您很可能仍然会收到错误,但也许可能会说不同的话)

可能值得在服务器端检查ulimit设置。