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
[email protected]<mailto:[email protected]>
Phone: (781) 238-0000,,2036