title: Tomcat SAOP web services unavailable sometimes (on burst parallel calls)
body: <p>I am using Apache Tomcat Version 7.0.47 and have deployed some web application with exposed SOAP web service.</p>
  <p>Exposed WSDL is like http://IP:4010/guiding/rr?wsdl</p>
  <p>I am accessing this WSDL from client, and in some cases there are some burst parallel access, as shown bellow:</p>
  <pre><code>192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 -
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 5934
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 -
  
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 500 -
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 500 -
  
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;POST /guiding/rr HTTP/1.1&quot; 200 227
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;POST /guiding/rr HTTP/1.1&quot; 200 227
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;POST /guiding/rr HTTP/1.1&quot; 200 227
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;POST /guiding/rr HTTP/1.1&quot; 200 227
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;POST /guiding/rr HTTP/1.1&quot; 200 227
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;POST /guiding/rr HTTP/1.1&quot; 200 227
  192.168.80.73 - - [26/Jan/2021:00:17:17 +0100] &quot;POST /guiding/rr?wsdl HTTP/1.1&quot; 415 -
  192.168.80.73 - - [26/Jan/2021:00:17:18 +0100] &quot;POST /guiding/rr?wsdl HTTP/1.1&quot; 500 1203
  192.168.80.73 - - [26/Jan/2021:00:17:18 +0100] &quot;POST /guiding/rr?wsdl/mex HTTP/1.1&quot; 415 -
  192.168.80.73 - - [26/Jan/2021:00:17:18 +0100] &quot;POST /guiding/rr?wsdl/mex HTTP/1.1&quot; 500 1207
  192.168.80.73 - - [26/Jan/2021:00:17:18 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:18 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:18 +0100] &quot;POST /guiding/rr HTTP/1.1&quot; 200 227
  192.168.80.73 - - [26/Jan/2021:00:17:20 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:20 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:20 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:20 +0100] &quot;GET /guiding/rr?wsdl HTTP/1.1&quot; 200 2624
  192.168.80.73 - - [26/Jan/2021:00:17:20 +0100] &quot;POST /guiding/rr HTTP/1.1&quot; 200 227
  </code></pre>
  <p>Localhost_access_log is formed this way:</p>
  <pre><code>&lt;Valve className=&quot;org.apache.catalina.valves.AccessLogValve&quot; directory=&quot;logs&quot;
                 prefix=&quot;localhost_access_log.&quot; suffix=&quot;.txt&quot;
                 pattern=&quot;%h %l %u %t &amp;quot;%r&amp;quot; %s %b&quot; /&gt;
  </code></pre>
  <p>You can see in localhost_access_log that some of the calls are returning error code 500, while some of them is with return status 200, but bytes sent is - or too big, and that is resulting with bad WSDL info on client side.</p>
  <p>This is happening only on burst calls like this. Otherwise it is working pretty good all day.</p>
  <p>Most of these calls are just pinging server to get WSDL info.</p>
  <p>I tried increasing JAVA_OPTS allocated to this tomcat and by increasing connectionTimeout in connector like:</p>
  <pre><code>xms 1024m
  xmx 10240m
  xx perm size 512m
  
  &lt;Connector executor=&quot;tomcatThreadPool&quot;
                 port=&quot;4010&quot; protocol=&quot;HTTP/1.1&quot;
                 connectionTimeout=&quot;20000&quot;
                 redirectPort=&quot;4443&quot;
                 compression=&quot;on&quot;
                 compressableMimeType=&quot;text/html,text/xml,text/plain&quot;/&gt;       
  </code></pre>
  <p>My question is now what to check more, or which options to tune? Or maybe extend these logs and catch more detailed message, but I am now sure how.</p>
  <p>I am not able to install wireshark on this server, so this is not an option.</p>