码头高负荷

时间:2015-01-24 16:38:41

标签: jetty load-testing

我在我的MBP上运行负载测试。使用gatling注入负载。

我的网络服务器是jetty 9.2.6

在负载很重的情况下,线程数保持不变:300但是打开套接字的数量从0增加到4000+,这会在操作系统级别生成过多的打开文件。

这是什么意思? 有什么想改善这种情况吗?

这是jetty stat的输出

Statistics: Statistics gathering started 643791ms ago Requests: Total requests: 56084 Active requests: 1 Max active requests: 195 Total requests time: 36775697 Mean request time: 655.7369791202325 Max request time: 12638 Request time standard deviation: 1028.5144674112403 Dispatches: Total dispatched: 56084 Active dispatched: 1 Max active dispatched: 195 Total dispatched time: 36775697 Mean dispatched time: 655.7369791202325 Max dispatched time: 12638 Dispatched time standard deviation: 1028.5144648655212 Total requests suspended: 0 Total requests expired: 0 Total requests resumed: 0 Responses: 1xx responses: 0 2xx responses: 55644 3xx responses: 0 4xx responses: 0 5xx responses: 439 Bytes sent total: 281222714 Connections: org.eclipse.jetty.server.ServerConnector@243883582 Protocols:http/1.1 Statistics gathering started 643784ms ago Total connections: 8788 Current connections open: 1 Max concurrent connections open: 4847 Mean connection duration: 77316.87629452601 Max connection duration: 152694 Connection duration standard deviation: 36153.705226514794 Total messages in: 56083 Total messages out: 56083 Memory: Heap memory usage: 1317618808 bytes Non-heap memory usage: 127525912 bytes

1 个答案:

答案 0 :(得分:2)

一些建议:

  • 在同一台计算机上没有客户端负载和服务器负载(不要作弊并尝试将负载放在单个物理计算机上的2个不同的虚拟机上)
  • 使用多个客户端计算机,而不仅仅是1(当Jetty开发人员测试负载特征时,我们使用至少10:1的客户端计算机与服务器计算机的比率)
  • 不要使用环回,虚拟网络接口,localhost等进行测试。使用真实的网络接口。
  • 了解您的加载客户端如何管理其HTTP版本+连接(例如keep-alive或http / 1.1关闭),并确保您阅读响应正文内容,关闭响应内容/流,最后断开连接。
  • 不要使用不切实际的负载情况进行测试。服务器的实际使用将是大多数HTTP / 1.1流水线连接,每个物理连接有多个请求。一些在快速网络上,一些在慢速网络上,一些甚至在不可靠的网络上(想想移动)
  • 原始速度,提供相同的内容,所有在独特的连接上,最终是一个迷人的数字and can produce impressive results,也完全没有意义,并且没有证明你的应用程序在Jetty上的表现将如何与真实场景一起表现。

最后,be sure you are testing load in realistic ways