我们正在使用Locust来对弹性负载平衡后的rest API服务进行负载测试。我遇到了this article关于负载平衡和自动伸缩,这是我们正在测试的东西。
Locust使用的是python-requests,而python-requests使用的是urllib 3**,所以我的问题是,python-requests是否会为每个连接进行dns查询,如果不是,它是否可配置?
我们正在使用Locust来对弹性负载平衡后的rest API服务进行负载测试。我遇到了this article关于负载平衡和自动伸缩,这是我们正在测试的东西。
Locust使用的是python-requests,而python-requests使用的是urllib 3**,所以我的问题是,python-requests是否会为每个连接进行dns查询,如果不是,它是否可配置?
3条答案
按热度按时间oyt4ldly1#
Locust正在使用python requests,它正在使用urllib3,它正在使用socket.getaddrinfo,根据this SO thread禁用了DNS缓存(假设您的测试机器运行Linux)。
fjaof16o2#
python-requests
为每个连接执行DNS查询。要禁用此功能,可以使用
dns cache
。现在可以使用
systemctl enable systemd-resolved
启用systemd-resolved
更多信息-https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html
xoshrz7s3#
是的,Python
requests
库在每次请求时执行DNS查询;但是,您可以使用requests-cache来改善这种行为。
requests-cache是一个持久的HTTP缓存,它提供了一个简单的方法来获得更好的性能与python请求库。
它真的很容易使用,1分钟,2行代码,你就可以开始了。
(This解决了一个问题,我正试图批处理的东西,突然停止工作后,10 K调用,不是因为服务不可用,而是因为DNS请求将被拒绝在我的内部网DNS服务器。)