Servlet Container Performance Report:
Addendum: Persistent Connections
A concern was raised during the final phases of this test regarding the use of persistent connections. The two options (persistent or not) result in somewhat different performance profiles due to the nature of the connection cycle. Non-persistent connections result in a greater overall number of connections (per user) with shorter lifespans. Persistent connections will result in fewer connections, but they are longer lived.
This test was performed without using persistent connections. Future versions of this report may change to use persistent connections.
Possible effects on the results:
- Using non-persistent connections will results in longer page-load times than persistent connections would, since additional network overhead is incurred for each URL request. The purpose of the test, however, is to compare the relative performance of the servers - not to examine individual raw numbers. Since all the servers will experience the same network-level overhead for each connection, the observed performance of each server will be affected equally. Therefore the relative performance comparisons between the servers are valid with or without persistent connections.
- The number of simultaneous open connections is lower when using non-persistent connections, because the connections are shorter-lived. This will benefit servers that have performance that has a non-linear relationship with the number of open connections. For instance, servers that have an inherent one-to-one relationship between an open connection and a Java thread may benefit from non-persistent connections, because the number of threads is a limited resource. That limit is different for different JVM/platform combinations, but all JVMs suffer performance degradation as the number of threads increase past a certain point. Without details about a specific server's design and implementation this is only speculation.
- Some have argued that using non-persistent connections is similar to simulating a higher number of users using persistent connections - because the resulting rate of incoming connections is higher per-user.
It is left to the reader to judge whether the use of non-persistent connections makes the data presented here more- or less-applicable to your application.