Deploying to Apache Tomcat often requires making changes to default configuration.
These changes are often environment specific.
Also, when upgrading a Tomcat to new version you need to be sure that all your custom changes have not been lost and were applied to new configuration.
To deal with all that stuff Tomcat via separation of the configuration.
This post contains step-by-step instruction will help you to establish custom tomcat configuration.
Setting entropy pool for Java server on linux is fair simple. Just add a system property to specify a device to read from.
Video: Scalable Memory Allocation using jemalloc - Tech Talk (1/11/2011)
jemalloc project: https://github.com/jemalloc/jemalloc
Chronicle by Peter Lawrey:
This library is an ultra low latency, high throughput, persisted, messaging and event driven in memory database. The typical latency is as low as 80 nano-seconds and supports throughput of 5-20 million messages/record updates per second.
This library also supports distributed, durable, observable collections (Map, List, Set) The performance depends on the data structures used, but simple data structures can achieve throughput of 5 million elements or key/value pairs in batches (eg addAll or putAll) and 500K elements or key/values per second when added/updated/removed individually.
There is no sense to run profiler in instrumentation mode on a high load.
Instead of using instrumentation you should use sampling mode.
This article describes the difference between instrumentation and sampling modes. JVisualVM is a good free tool for this task.
When configuring executors in multithreaded application, do not forget to assign names to your threads. It simplifies later profiling a lot, when you see a meaningful thread names in your profiler.
For example, you may use CustomizableThreadFactory from SpringFramework for that.
Studying algorithms can be fun if you like to dance 😄 💃
You can learn how to dance Shell-sort and Binary search flamenco.
This article with a video about how the guys from FogCreek software has integrated SolariBoard into BigBoard to monitor their support team activity.
I’ve recently switched logback configuration of our application from XML to Groovy.
Configuration file is not about 5 times smaller and can be displayed on one screen!
Groovy helped to remove duplicating parts of configurations by using for loop.
The moving was easy thanks to online conversion tool. And don’t forget to add a groovy-all runtime dependency to your project config.
I have had spent some time recently making netty 3.6 sending some message when connection has been established.
What documentation suggests to do is to extend
SimpleChannelUpstreamHandler and override method
It works fine unless
SslHandler is used in the pipeline.
If handler is present,
channelConnected() was never called on my handler.