在 Jelastic 上的 Wildfly 服务器上进行服务器负载测试时出现 503 错误

503 error on server load tests on Wildfly server on Jelastic

我在 Jelastic PaaS 上的 wildfly 服务器上部署了一个应用程序。此应用程序在少数用户下正常运行。我正在尝试使用 JMeter 进行一些负载测试,在这种情况下,在 1 秒内调用 REST api 300 次。

这导致请求的错误率在 60% 左右,都是 503(服务暂时不可用)。我不知道我必须在环境中进行哪些调整才能消除这些错误。我很确定这不是我的应用程序的错,因为它并不重,即使尝试在索引页面上测试负载我也得到相同的结果。

环境的拓扑结构只是 1 个 wildfly 节点(有 20 个小云)和一个有 20 个小云的 Postgres 数据库。我有更高级的拓扑,但为了缩小问题的范围,我削减了负载均衡器 (NGINX) 和多个 wildfly 节点。

I don't know what things I have to tweak in the environment to get rid of those errors

我们也不知道,由于您的问题没有提供足够的详细信息,我们只能提出一般性建议,例如:

  1. 检查 WildFly 日志是否有任何可疑条目。 HTTP 503 是服务器端错误,因此它应该与 stacktrace 一起记录,这将引导您找到根本原因
  2. 检查 Wildfly 实例是否有足够的空间在 CPU、RAM 等方面进行操作,可以使用 JMeter PerfMon Plugin
  3. 来完成
  4. 使用 JVisualVM 或上述 JMeter PerfMon 插件检查 JVM 和 WildFly 特定的 JMX 指标
  5. 仔细检查 Undertow subsystem configuration 是否有任何 connection/request/rate 限制条目
  6. 使用 JProfiler or YourKit 等分析器工具查看最慢的函数、最大的对象等。

通过共享负载均衡器发出的请求(即当您面向互联网的节点没有 public IP 时)面临严格的 QoS 限制以保护平台稳定性。共享负载均衡器的全部意义在于它由许多用户共享,因此您不能将其 100% 的资源据为己有。

使用 public IP,您的流量直接从互联网传输到您的节点,因此不需要或不适用这些 QoS 限制。

如文档中所述,您需要一个 public IP 用于生产工作负载(在此上下文中应考虑负载测试 'production')。