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