如何使用Tomcat在本地生成503错误?

时间:2017-11-07 11:13:33

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

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

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

有没有办法在本地重现错误?就像把TomCat搁置一段时间不可用?

2 个答案:

答案 0 :(得分:1)

根据MDN,HTTP 503服务不可用服务器错误意味着:

  

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

常见原因是:

  

关闭以进行维护或过载的服务器。

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

这样做可以更改Tomcat可以处理的最大并发请求数。

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

server.tomcat.max-threads = 1

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

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

答案 1 :(得分:1)

您可以使用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