Hi
We are trying to send some data to fluentd from a high throughput multithreaded app written in java.
While profiling the application we found that the org.fluentd.logger.sender.rawsocketSender.send were acting as a bottleneck and hence slowing down our system.
Commenting out the call to fluentd.append increased the performance of our app 4 times.
On digging deeper in the code, we found the following
1. the send function is ina synchronized block
2. The appender is connecting to fluentd only through a tcp socket
3. There is only one connection and no conection pooling
This will surely slow down any multithreaded app.
I need to know how the following can be achieved
1. Write to Unix Domain socket instead of TCP Socket - Unix sockets are faster thab TCP
2. Use a pool of connections instead of a single connection to fluentd-This will allow my threads to offload the data quickly and pass on the load to
Does somebody have more ideas/suggestions on removing fluentd as the bottleneck in the java code?
Regards
Sanket Gupta