在Gatling

时间:2016-01-21 13:58:35

标签: sockets tcp gatling time-wait

在对虚拟RESTful服务进行性能测试时,我遇到了ConnectException: Cannot assign requested address问题,描述了herehere,并应用了tuning recommendations - 增加了短暂的端口范围至于10000-65000,我的ulimit -n为64000,我甚至已启用net.ipv4.tcp_tw_reusenet.ipv4.tcp_tw_recycle - 有关这些内容的更多信息,请访问此Coping with the TCP TIME-WAIT state on busy Linux servers

这仍然没有帮助,我仍然可以模拟每秒最多10k个请求(因为在我的测试中每个用户只做一次请求),所以我{4}到4个以后8个客户机。在4台机器上,我每台机器可以执行5k个请求/秒(总共20k)但是在8个机器上我甚至无法在这些5k上运行,所以可能问题出在其他地方。

尽管如此,我想询问是否有任何选项可以通过模拟或通过gatling.conf在gatling连接上设置SocketOptions - 我想使用{{ 3}}那里。一些选项(连接超时)可以在gatling.conf中设置,但我还没有找到这个选项。

此外,是否有任何文件描述Gatling如何共享连接?我希望有一个很大的连接池,用户可以在这里找到用户。抓住他们的连接实例或虚拟每个用户打开他的连接,但在某个地方我已经读到每个用户有一个连接池(谁与谁共享连接,那么?或者是这些只是在之前的请求中使用的缓存连接?)。

编辑:所以解决方案最后很简单:设置.shareConnections时使用ScenarioBuilder.protocols(...)。我曾尝试使用-Dgatling.core.http.shareConnections作为命令行arg(我正在从maven插件运行测试)但它没有用;程序化方法确实如此。

1 个答案:

答案 0 :(得分:3)

  

我想在那里使用SO_REUSEADDR。

不可能的atm。将在2.2。

  

是否有任何文件描述Gatling如何共享连接?

是的,here。默认值是每个虚拟用户一个连接池,因为虚拟用户在获取资源时可以使用多个并发连接,就像浏览器一样。然后,您可以切换到一个共享全局池。