【问题标题】:How can I produce a 503 error locally with Tomcat?如何使用 Tomcat 在本地产生 503 错误?
【发布时间】:2018-04-19 18:29:28
【问题描述】:

我正在开发一个使用 Tomcat 8.5.9 版本的 Spring Boot 开发的项目。

应用程序在 JAX RS 中提供 RESTfull Web 服务。 在 Prod 环境中,有时会收到错误503 Service not available,但由于我使用本地 Mock 无法重现。

有没有办法在本地重现错误?就像让 TomCat 暂时不可用?

【问题讨论】:

  • 您的 Spring Boot 应用程序在尝试命中端点时是否给出 503?
  • 在本地环境中,没有

标签: java tomcat spring-boot-actuator http-status-code-503


【解决方案1】:

根据MDN,HTTP 503 Service Unavailable server 错误表示:

...响应码表示 服务器尚未准备好处理请求。

常见的原因有:

因维护而停机或过载的服务器。

要以自然的方式重现此错误响应,您可以重载 Tomcat。

为此,请更改 Tomcat 可以处理的最大并发请求数。

如果您使用嵌入式 tomcat,请将 server.tomcat.max-threads Spring Boot 属性设置为易于访问的弱值,例如:

server.tomcat.max-threads = 1

否则,如果您使用我们自己的Tomcat安装,请在server.xml配置文件的Connector元素中将maxThreads设置为弱值:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
           ...
           maxThreads="1"/>

【讨论】:

    【解决方案2】:

    您可以使用 Java 通过 WireMock 模拟它。

    public static WireMockServer wireMockServer = new WireMockServer(8089);
    wireMockServer.start();
        final WireMock wireMock = new WireMock(8089);
        wireMock.register(WireMock.get(WireMock.urlEqualTo("/conf"))
                .willReturn(WireMock.aResponse()
                        .withStatus(503)));
    

    点击 localhost:8089/conf 得到 503 Service Unavailable

    【讨论】:

      猜你喜欢
      • 2019-06-05
      • 1970-01-01
      • 2017-05-06
      • 2021-07-17
      • 1970-01-01
      • 2015-12-10
      • 2021-02-02
      • 2022-06-18
      • 2018-07-16
      相关资源
      最近更新 更多