我有一台 fluentd 服务器,平均每秒处理 1000 个请求。该服务器由 32 个 CPU 组成。该服务器运行 32 个具有相同配置的 fluentd docker 容器。服务器的入口点是一个 nginx,作为配置了循环算法的负载均衡器,并将其发送到不同的容器。容器和 nginx 都监听 24224/tcp。
该节点的输入是 6 个使用fluent-logger-csharp发送到 fluentd 服务器。因此,每个应用程序都会打开一个到 Fluentd 服务器的连接,由于流量很大,应用程序会保持打开套接字。这导致 32 个 docker 中只有 6 个正在处理请求。
如何在不修改 C# 客户端的情况下更好地利用服务器?
答案1
首先,我会检查瓶颈是什么:
如果您的应用程序没有导致fluentd
服务超载,那么为什么还要使用 32 个核心呢?
如果fluentd
输出是瓶颈,则可以使用带有选项的多线程num_thread
;这样,您可能希望在 6 个fluentd
实例上使用 5 个线程,总共 30 个核心,而不是仅使用 6 个核心的 32 个单个实例。
至于输入,如果您的服务器保持连接打开,那么这确实是您的瓶颈,然后您可能需要部署更多此类服务以增加到您的 fluentd 输入的日志输出数量。