Logstash経由でのレコード転送が不完全に繰り返される


と同一の以下環境で Logstash経由での400万件のレコード転送が240万件程しかされない
という状況となっており、打開策を模索しています。

同様の状況にご経験がある、あるいは何か効果的な対策が浮かぶ、等あれば
ご提示いただけると大変ありがたいと思い、投稿する次第です。
よろしくお願いいたします。

これまでに試してみたことは以下ですが結果変わらず不首尾です。

  • statement の SQL の ORDER BY を ASC から DESC に変更
  • /usr/share/logstash/config/pipelines.yml で
    queue.type: persisted を設定(既定は memory)
  • queue.max_byte, queue.page_capacity を倍以上に増やす
    (1gb->2gb, 64mb->256mb)
  • queue.checkpoint. の acks と writes を 0 に
  • jvm.options の Xmsを2倍・Xmxを3倍に
  • pipeline.batch.size を2倍に

参照した主な情報

該当の pipeline で絞り込むと以下のようなログ出力になっています。

・・・
[INFO ][logstash.inputs.jdbc     ][xxxx_yyyyyys] (143.899960s) SELECT * FROM (SELECT *, UNIX_TIMESTAMP(updated_at) AS unix_ts_in_secs FROM xxxx_yyyyyys WHERE (UNIX_TIMESTAMP(updated_at) > 0 AND updated_at < NOW()) ORDER BY updated_at ASC) AS `t1` LIMIT 100000 OFFSET 2200000,
[INFO ][logstash.inputs.jdbc     ][xxxx_yyyyyys] (146.844210s) SELECT * FROM (SELECT *, UNIX_TIMESTAMP(updated_at) AS unix_ts_in_secs FROM xxxx_yyyyyys WHERE (UNIX_TIMESTAMP(updated_at) > 0 AND updated_at < NOW()) ORDER BY updated_at ASC) AS `t1` LIMIT 100000 OFFSET 2300000,
[INFO ][logstash.inputs.jdbc     ][xxxx_yyyyyys] (0.003917s) SELECT version(),
[INFO ][logstash.inputs.jdbc     ][xxxx_yyyyyys] (0.003362s) SELECT version(),
[INFO ][logstash.inputs.jdbc     ][xxxx_yyyyyys] (3.283475s) SELECT count(*) AS `count` FROM (SELECT *, UNIX_TIMESTAMP(updated_at) AS unix_ts_in_secs FROM xxxx_yyyyyys WHERE (UNIX_TIMESTAMP(updated_at) > 0 AND updated_at < NOW()) ORDER BY updated_at ASC) AS `t1` LIMIT 1,
[INFO ][logstash.inputs.jdbc     ][xxxx_yyyyyys] (4.238177s) SELECT * FROM (SELECT *, UNIX_TIMESTAMP(updated_at) AS unix_ts_in_secs FROM xxxx_yyyyyys WHERE (UNIX_TIMESTAMP(updated_at) > 0 AND updated_at < NOW()) ORDER BY updated_at ASC) AS `t1` LIMIT 100000 OFFSET 0
・・・

この件、Logstash を載せる EC2 のスペックを上げた結果、解決できました。

(以前) t2.medium の Docker Swarm on EC2 × 3
(対策) m4.large × 1 の Docker on EC2

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.