tomcat - Tomcat SAOP Web 服务有时不可用(突发并行调用)
问题描述
我正在使用 Apache Tomcat 版本 7.0.47 并部署了一些带有公开 SOAP Web 服务的 Web 应用程序。
暴露的 WSDL 就像 http://IP:4010/guiding/rr?wsdl
我正在从客户端访问这个 WSDL,在某些情况下会有一些突发并行访问,如下所示:
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 -
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 5934
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 -
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 500 -
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 500 -
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "POST /guiding/rr HTTP/1.1" 200 227
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "POST /guiding/rr HTTP/1.1" 200 227
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "POST /guiding/rr HTTP/1.1" 200 227
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "POST /guiding/rr HTTP/1.1" 200 227
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "POST /guiding/rr HTTP/1.1" 200 227
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "POST /guiding/rr HTTP/1.1" 200 227
192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] "POST /guiding/rr?wsdl HTTP/1.1" 415 -
192.168.80.73 - - [26/Jan/2021:00:17:18 +0100] "POST /guiding/rr?wsdl HTTP/1.1" 500 1203
192.168.80.73 - - [26/Jan/2021:00:17:18 +0100] "POST /guiding/rr?wsdl/mex HTTP/1.1" 415 -
192.168.80.73 - - [26/Jan/2021:00:17:18 +0100] "POST /guiding/rr?wsdl/mex HTTP/1.1" 500 1207
192.168.80.73 - - [26/Jan/2021:00:17:18 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:18 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:18 +0100] "POST /guiding/rr HTTP/1.1" 200 227
192.168.80.73 - - [26/Jan/2021:00:17:20 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:20 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:20 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:20 +0100] "GET /guiding/rr?wsdl HTTP/1.1" 200 2624
192.168.80.73 - - [26/Jan/2021:00:17:20 +0100] "POST /guiding/rr HTTP/1.1" 200 227
localhost_access_log 是这样形成的:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
您可以在 localhost_access_log 中看到一些调用返回错误代码 500,而其中一些返回状态为 200,但发送的字节数 - 或太大,这导致客户端的 WSDL 信息错误。
这只发生在像这样的突发调用上。否则它整天工作得很好。
大多数这些调用只是 ping 服务器以获取 WSDL 信息。
我尝试增加分配给这个 tomcat 的 JAVA_OPTS 并增加连接器中的 connectionTimeout,例如:
xms 1024m
xmx 10240m
xx perm size 512m
<Connector executor="tomcatThreadPool"
port="4010" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="4443"
compression="on"
compressableMimeType="text/html,text/xml,text/plain"/>
我现在的问题是要检查更多内容,或者要调整哪些选项?或者也许扩展这些日志并捕获更详细的消息,但我现在确定如何。
我无法在此服务器上安装wireshark,所以这不是一个选项。
解决方案
推荐阅读
- javascript - ChartJS: Position labels at end of doughnut segment
- node.js - Linking Service Hops with Zipkin and NodeJS
- regex - How can I find all instances of a group in regexp?
- latex - Formatting issues using RevTex 4.2
- kubernetes - Kubernetes: Update pod liveness probe timeoutSeconds
- python - Matlab mle fitting vs Python Scipy
- javascript - jquery focus function not working on checkbox
- google-chrome - UiPath cannot click Chrome Browser popup dialogs
- javascript - How to make Vue import files from assets folder instead of hardcoded script tags inside of index.html
- android - My app is not able to auto read OTP only for Redmi note 5 pro phones