5

I have a fluentd server that is processing an average of 1000 req/s. This server is composed by 32 cpus. In this server are running 32 fluentd docker containers with the same configuration. The entry point of the server is an nginx as a load balancer configured with round-robin algorithm and send it to the differents containers. Both, containers and nginx, listen on 24224/tcp.

The input of this nodes is 6 C# applications that use fluent-logger-csharp to send to fluentd server. So, for each app open one connection to the Fluentd Server and due to the large traffic, the app keeps open the socket. This causes that only 6 of 32 docker is processing requests.

How you could better use of server utilization without modifying the C# client?

1

First, I would check what are the bottlenecks:

If your app is not overloading the fluentd service, then why even use 32 cores?

If fluentd output is the bottleneck, you can use multi threading with the num_thread option; that way you may want to use like 5 threads on 6 fluentd instances, adding up to 30 cores, instead of 32 single instances where only 6 are used.

As for input, if your servers keep connections open, then indeed this is your bottleneck, and then you might want to deploy more of those services to increase the number of logging outputs to your fluentd inputs.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.