在 Gatling 中指定套接字选项
Specifying socket options in Gatling
在对虚拟 RESTful 服务进行性能测试时,我 运行 遇到了 ConnectException: Cannot assign requested address
问题,描述为 here or here, and applied the tuning recommendations - increased the ephemeral port range to 10000-65000, my ulimit -n
is 64000 and I have even enabled net.ipv4.tcp_tw_reuse
and net.ipv4.tcp_tw_recycle
- more info about these on this excellent blogpost Coping with the TCP TIME-WAIT state on busy Linux servers 。
这仍然没有帮助,我仍然可以模拟最多每秒 10k 个请求(因为在我的测试中每个用户只做一个请求),所以我 scaled out 到 4 台和后来的 8 台客户端机器.在 4 台机器上,我可以每台机器做 5k requests/s(总共 20k),但在 8 台机器上我什至不能 运行 那 5k,所以问题可能出在其他地方。
尽管如此,我想问一下是否有任何选项可以通过模拟或通过 gatling.conf 在 gatling 连接上设置 SocketOptions
- 我想使用 SO_REUSEADDR 那里。一些选项(连接超时)可以在gatling.conf中设置,但我没有找到这个。
另外,有没有文档描述Gatling是如何共享连接的?我希望 'users' 获取连接实例的大连接池或虚拟每个用户打开他的连接,但我在某处读到每个用户都有一个连接池(他是谁共享连接然后呢?或者这些只是他之前请求中使用的缓存连接?)。
编辑: 所以最终解决方案很简单:在设置 ScenarioBuilder.protocols(...)
时使用 .shareConnections
。我尝试使用 -Dgatling.core.http.shareConnections
作为命令行 arg(我正在 运行ning 来自 maven 插件的测试)但它没有用;程序化方法做到了。
I'd like to use SO_REUSEADDR there.
不可能的自动取款机。将在 2.2.
is there any document describing how does Gatling share connections?
是的,here。默认是每个虚拟用户一个连接池,因为虚拟用户在获取资源时可以使用多个并发连接,就像浏览器一样。然后您可以切换到一个共享的全局池。
在对虚拟 RESTful 服务进行性能测试时,我 运行 遇到了 ConnectException: Cannot assign requested address
问题,描述为 here or here, and applied the tuning recommendations - increased the ephemeral port range to 10000-65000, my ulimit -n
is 64000 and I have even enabled net.ipv4.tcp_tw_reuse
and net.ipv4.tcp_tw_recycle
- more info about these on this excellent blogpost Coping with the TCP TIME-WAIT state on busy Linux servers 。
这仍然没有帮助,我仍然可以模拟最多每秒 10k 个请求(因为在我的测试中每个用户只做一个请求),所以我 scaled out 到 4 台和后来的 8 台客户端机器.在 4 台机器上,我可以每台机器做 5k requests/s(总共 20k),但在 8 台机器上我什至不能 运行 那 5k,所以问题可能出在其他地方。
尽管如此,我想问一下是否有任何选项可以通过模拟或通过 gatling.conf 在 gatling 连接上设置 SocketOptions
- 我想使用 SO_REUSEADDR 那里。一些选项(连接超时)可以在gatling.conf中设置,但我没有找到这个。
另外,有没有文档描述Gatling是如何共享连接的?我希望 'users' 获取连接实例的大连接池或虚拟每个用户打开他的连接,但我在某处读到每个用户都有一个连接池(他是谁共享连接然后呢?或者这些只是他之前请求中使用的缓存连接?)。
编辑: 所以最终解决方案很简单:在设置 ScenarioBuilder.protocols(...)
时使用 .shareConnections
。我尝试使用 -Dgatling.core.http.shareConnections
作为命令行 arg(我正在 运行ning 来自 maven 插件的测试)但它没有用;程序化方法做到了。
I'd like to use SO_REUSEADDR there.
不可能的自动取款机。将在 2.2.
is there any document describing how does Gatling share connections?
是的,here。默认是每个虚拟用户一个连接池,因为虚拟用户在获取资源时可以使用多个并发连接,就像浏览器一样。然后您可以切换到一个共享的全局池。