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

问题描述

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

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

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

解决方法

我不知道我必须在环境中进行哪些调整才能消除这些错误

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

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

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

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

如文档中所述,您需要一个用于生产工作负载的公共 IP(在这种情况下,负载测试应被视为“生产”)。