web-dev-qa-db-ja.com

Fluentdサーバーの使用率を最大化する方法は?

私は平均1000req/sを処理しているFluentdサーバーを持っています。このサーバーは32CPUで構成されています。このサーバーでは、同じ構成で32個のfluentddockerコンテナーを実行しています。サーバーのエントリポイントは、ラウンドロビンアルゴリズムで構成されたロードバランサーとしてのnginxであり、さまざまなコンテナーに送信します。コンテナとnginxの両方が、24224/tcpでリッスンします。

このノードの入力は、 fluent-logger-csharp を使用してfluentdサーバーに送信する6つのC#アプリケーションです。そのため、アプリごとにFluentdサーバーへの接続を1つ開くと、トラフィックが大きいため、アプリはソケットを開いたままにします。これにより、32個のDockerのうち6個だけがリクエストを処理します。

C#クライアントを変更せずにサーバー使用率をより有効に活用するにはどうすればよいですか?

5
MiquelB

まず、ボトルネックを確認します。

アプリがfluentdサービスをオーバーロードしていないのなら、なぜ32コアを使用するのでしょうか。

fluentd出力がボトルネックである場合は、num_threadオプションを使用してマルチスレッドを使用できます。そうすれば、6つだけが使用される32の単一インスタンスの代わりに、6つのfluentdインスタンスで5つのスレッドのように使用し、最大30のコアを追加することができます。

入力に関しては、サーバーが接続を開いたままにしている場合、これがボトルネックになります。これらのサービスをさらにデプロイして、Fluent入力へのロギング出力の数を増やすことをお勧めします。

1
MrE