在 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
我们也不知道,由于您的问题没有提供足够的详细信息,我们只能提出一般性建议,例如:
- 检查 WildFly 日志是否有任何可疑条目。 HTTP 503 是服务器端错误,因此它应该与 stacktrace 一起记录,这将引导您找到根本原因
- 检查 Wildfly 实例是否有足够的空间在 CPU、RAM 等方面进行操作,可以使用 JMeter PerfMon Plugin
来完成
- 使用 JVisualVM 或上述 JMeter PerfMon 插件检查 JVM 和 WildFly 特定的 JMX 指标
- 仔细检查 Undertow subsystem configuration 是否有任何 connection/request/rate 限制条目
- 使用 JProfiler or YourKit 等分析器工具查看最慢的函数、最大的对象等。
通过共享负载均衡器发出的请求(即当您面向互联网的节点没有 public IP 时)面临严格的 QoS 限制以保护平台稳定性。共享负载均衡器的全部意义在于它由许多用户共享,因此您不能将其 100% 的资源据为己有。
使用 public IP,您的流量直接从互联网传输到您的节点,因此不需要或不适用这些 QoS 限制。
如文档中所述,您需要一个 public IP 用于生产工作负载(在此上下文中应考虑负载测试 'production')。
我在 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
我们也不知道,由于您的问题没有提供足够的详细信息,我们只能提出一般性建议,例如:
- 检查 WildFly 日志是否有任何可疑条目。 HTTP 503 是服务器端错误,因此它应该与 stacktrace 一起记录,这将引导您找到根本原因
- 检查 Wildfly 实例是否有足够的空间在 CPU、RAM 等方面进行操作,可以使用 JMeter PerfMon Plugin 来完成
- 使用 JVisualVM 或上述 JMeter PerfMon 插件检查 JVM 和 WildFly 特定的 JMX 指标
- 仔细检查 Undertow subsystem configuration 是否有任何 connection/request/rate 限制条目
- 使用 JProfiler or YourKit 等分析器工具查看最慢的函数、最大的对象等。
通过共享负载均衡器发出的请求(即当您面向互联网的节点没有 public IP 时)面临严格的 QoS 限制以保护平台稳定性。共享负载均衡器的全部意义在于它由许多用户共享,因此您不能将其 100% 的资源据为己有。
使用 public IP,您的流量直接从互联网传输到您的节点,因此不需要或不适用这些 QoS 限制。
如文档中所述,您需要一个 public IP 用于生产工作负载(在此上下文中应考虑负载测试 'production')。