如何使用 Tomcat 在本地产生 503 错误?
Posted
技术标签:
【中文标题】如何使用 Tomcat 在本地产生 503 错误?【英文标题】:How can I produce a 503 error locally with Tomcat? 【发布时间】: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? 在本地环境中,没有 【参考方案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
【讨论】:
以上是关于如何使用 Tomcat 在本地产生 503 错误?的主要内容,如果未能解决你的问题,请参考以下文章