如何使用 Tomcat 在本地产生 503 错误?
How can I produce a 503 error locally with Tomcat?
我正在开发一个使用 Spring 开发的项目,使用 Tomcat 的 8.5.9 版启动。
该应用程序在 JAX RS 中提供 RESTfull Web 服务。
在Prod环境下,有时会报错503 Service not available,但我无法重现,因为我使用的是本地Mock。
有没有办法在本地重现错误?就像暂时搁置 TomCat 不可用?
根据 MDN,HTTP 503 服务不可用服务器错误表示:
... response code indicates
that the server is not ready to handle the request.
常见原因是:
a server that is down for maintenance or that is overloaded.
要以自然的方式重现此错误响应,您可以重载 Tomcat。
要做到这一点,请更改 Tomcat 可以处理的最大同时请求数。
如果您使用嵌入式 tomcat,请将 server.tomcat.max-threads
Spring 引导 属性 设置为易于访问的弱值,例如:
server.tomcat.max-threads = 1
否则,如果您使用我们自己的 Tomcat 安装,请在 server.xml
配置文件的 Connector
元素中将 maxThreads
设置为弱值:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
...
maxThreads="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 服务不可用
我正在开发一个使用 Spring 开发的项目,使用 Tomcat 的 8.5.9 版启动。
该应用程序在 JAX RS 中提供 RESTfull Web 服务。 在Prod环境下,有时会报错503 Service not available,但我无法重现,因为我使用的是本地Mock。
有没有办法在本地重现错误?就像暂时搁置 TomCat 不可用?
根据 MDN,HTTP 503 服务不可用服务器错误表示:
... response code indicates that the server is not ready to handle the request.
常见原因是:
a server that is down for maintenance or that is overloaded.
要以自然的方式重现此错误响应,您可以重载 Tomcat。
要做到这一点,请更改 Tomcat 可以处理的最大同时请求数。
如果您使用嵌入式 tomcat,请将 server.tomcat.max-threads
Spring 引导 属性 设置为易于访问的弱值,例如:
server.tomcat.max-threads = 1
否则,如果您使用我们自己的 Tomcat 安装,请在 server.xml
配置文件的 Connector
元素中将 maxThreads
设置为弱值:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
...
maxThreads="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 服务不可用