Hello all,
We have recently upgraded our software to utilize Tomcat 8.5.32 from Tomcat 
7.0.81.
With the upgrade, we are seeing an increased amount of I/Os happening between 
the Tomcat Server and the DB.
We are looking for help to understand the cause of the increased amount of I/Os 
and possible solutions to improve our software to get a workaround.

Issue:
Tomcat is one of the core components of our software. With 8.5.32 upgrade, due 
to the increased amount of I/Os, we are seeing a latency in our software.
Due to the latency, the overall performance of the software has been degraded 
and the end users are seeing issues like
- longer login times
- longer wait time to load/reload the data.

Troubleshooting:
We ran a bunch of tests and confirmed that our packet captures show that 20x 
increase in the I/O operations between Tomcat 7.0.81 and 8.5.32.

Here’s the matrix which shows number of I/O we captured between different 
versions of Our Software version and Tomcat versions.

Our Software Version

Tomcat 7.0.81

8.5.32

18

200

23,000

19

1200

240,000



Server Information:
OS: Windows Server 2012 R2
Java : JRE1.8.0.111
Initial Memory Pool: 512 MB
Maximum Memory Pool : 1024 MB
Note: There are other software running on the server.

DB Connection Configuration:
Here’s how the connection from the Tomcat Server to DB Server look like:

Tomcat 7.0.81:

<Resource name="jdbc/heartbeatdb" auth="Container" type="javax.sql.DataSource"
                                          maxActive="200" maxIdle="30" 
maxWait="10000"
                                          
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
                                          
url="jdbc:sqlserver://<Server>\<instance>;database=heartbeat;integratedSecurity=true"
                                          validationQuery="SELECT 1"
                                          testWhileIdle="true"
                                          
timeBetweenEvictionRunsMillis="3600000"
                                          numTestsPerEvictionRun="30"
                                          minEvictableIdleTimeMillis="14400000"
                                          removeAbandoned="true"
                                          removeAbandonedTimeout="300"
                                          logAbandoned="true"/>

Tomcat 8.5.32:

<Resource name="jdbc/heartbeatdb" auth="Container" type="javax.sql.DataSource"
              maxTotal="200" maxIdle="30" maxWaitMillis="10000"
              driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
              
url="jdbc:sqlserver://<Server>\<instance>;database=heartbeat;integratedSecurity=true"
              testWhileIdle="true"
              validationQuery="SELECT 1"
              timeBetweenEvictionRunsMillis="3600000"
              numTestsPerEvictionRun="30"
              minEvictableIdleTimeMillis="14400000"
              removeAbandonedOnBorrow="true"
              removeAbandonedOnMaintenance="true"
              removeAbandonedTimeout="300"
              logAbandoned="true" />

Let me know if you need more information from our side. We can also provide 
full server.xml configuration from both the versions of the software.

We are new to Tomcat Support group, so let us know if this is the right way to 
request for help.

If you want to learn more about our company, you can click the links in the 
signature.

Thanks,
Aadit
--
Aadit Shah | Mobile Heartbeat<http://www.mobileheartbeat.com/>
Solutions Engineer
aadit.s...@mobileheartbeat.com<mailto:aadit.s...@mobileheartbeat.com>
Phone: (781) 238-0000,,2036

Reply via email to