インフラ系SEの技術メモ

雑なエンジニアが低信頼性のメモを書いています。参考程度にとどめてください。

(fluentd)大量に負荷がけしてみた時の挙動テスト

Fluentdのバッファーを詰まらせる

大量のリクエストを投げ、そのログが送られて来た時の最新時刻と今の時刻を5秒毎に取ってみました。

最初はこんな感じ。左側が今の時刻で右側がログの時刻。ログ転送のラグで三秒程度遅れていますが・・

16:19:39 16:19:36
16:19:44 16:19:39
16:19:50 16:19:42
16:19:55 16:19:47
16:20:00 16:19:50
16:20:05 16:19:55
16:20:10 16:19:57

負荷を大量にかけているのでだんだん時刻にずれがでてきます。

さらに進めていくと...なんとログ更新が止まりました。

16:29:12 16:26:16
16:29:17 16:26:19
16:29:22 16:26:23
16:29:27 16:26:25
16:29:32 16:26:25

この時にFluentd側には以下のようなワーニングが出てました。

fluentd 2021-12-10 00:25:19 +0000 [warn]: #0 failed to flush the buffer. retry_time=0 next_retry_seconds=2021-12-10 00:25:20 +0000 chunk="xx" error_class=Errno::ECONNREFUSED error="Connection refused - connect(2) for \"..."
fluentd   2021-12-10 00:25:19 +0000 [warn]: #0 suppressed same stacktrace ...  fluentd...

そこからは負荷を送り続けている限り更新が止まらず、負荷がけを16:49:32に止めると1分後にログ更新が始まりました。

16:50:46 16:26:25
16:50:51 16:26:30
16:50:56 16:26:32
16:51:01 16:26:36

結果

一度転送が止まると止まり続ける。
ただ、負荷が落ち着くと自動で再送してくれるのでそこは大丈夫。

そういう意味では届く時刻はあてにできませんねぇ...。