我有一个stream利的服务器,正在处理平均1000请求/秒。 这个服务器由32个cpus组成。 在这台服务器上运行32个相同configuration的fluentd docker容器。 服务器的入口点是一个nginx作为负载均衡器configuration循环algorithm,并将其发送到不同的容器。 容器和nginx都在24224 / tcp上侦听。
这个节点的input是6个使用fluent-logger-csharp发送给Fluentd服务器的C#应用程序。 所以,对于每个应用程序打开一个连接到Fluentd服务器,并由于stream量大,应用程序保持打开套接字。 这会导致只有6个docker正在处理请求。
如何在不修改C#客户端的情况下更好地使用服务器利用率?
首先,我会检查是什么瓶颈:
如果你的应用没有超载fluentd服务,那为什么还要使用32核?
如果fluentd输出是瓶颈,那么可以使用带有num_thread选项的multithreading; 这样你可能想要在6个fluentd实例上使用5个线程,最多可以添加30个内核,而不是32个使用6个的单个实例。
至于input,如果你的服务器保持连接打开,那么这确实是你的瓶颈,然后你可能想要部署更多的这些服务来增加日志输出的数量到你的stream畅的input。