Performance considerations
If you expect heavy load, consider the following performance recommendations:
- All proxy instances that use the MySQLSessionStoreServlet with the same connect string should have the same master. The connect string is set in the ConnectString parameter of the MySQLSessionStoreServlet.
- Improve session reaping by adding the following entry into the conf table:
INSERT INTO conf (CACHENAME, PARAMETER, VALUE) VALUES ('session', 'REAPER', '0');
With this adaptation, the reaper will replace "0" with its own ID. This is to make sure that just one reaper is reaping at the same time.
If you used the provided SQL script sessionStoreSetup.sql to set up the database, the above entry is added automatically.
- Set the parameter TimeOut of the MySQLSessionStoreServlet to "10" (default is 3600 s).
- The usage of an SSD-based disc is recommended (instead of an HDD disk). In case of high performance systems, we generally recommend SSDs for the nevisProxy hosts as well. For more information, see Appendix C - Performance Samples.
- Set the parameter UpdateTimeStampMinInterval of the SessionManagementFilter to "60" (one minute).
Note that the minimum value of the update timestamp interval must always be less than the inactivity timeout.
- Optimize your database. We got the best results with these settings:
Parameter | Recomended Setting |
---|---|
innodb_buffer_pool_size | As a rule of thumb, take 80 percent of the RAM size for the buffer pool size. Typical values are:5-6 GB (8 GB RAM) 20-25 GB (32 GB RAM) * 100-120 GB (128 GB RAM) |
innodb_log_file_size | Take 25 to 50 percent of the buffer pool size for the size of the log file. The buffer pool size is set in the parameter innodb_buffer_pool_size. |
thread_pool_size | The number of CPU cores. |
innodb_deadlock_detect | 0 (To make sure that the sync process does not stop after a deadlock.) |
innodb_print_all_deadlocks | 1 (To make sure that deadlocks are printed.) |