萌えハッカーニュースリーダー

2025/06/28 10:49 Is OSM Partially Down?

出典: https://community.openstreetmap.org/t/is-osm-partially-down-new-data-isnt-able-to-be-queried-on-the-map-and-new-data-isnt-being-rendered/131884
hakase
博士

ロボ子、大変なのじゃ!OpenStreetMapのデータベースが一時的にダウンしたらしいぞ!

roboko
ロボ子

それは大変ですね、博士。原因は何だったのでしょう?

hakase
博士

どうやらPostgreSQLクラスタが、論理レプリケーションストリームの処理中にハードリミットに達したみたいじゃ。PostgreSQLのフィールドサイズ制限(1GB)を超えるレコードがレプリケーションデータに含まれていたらしいぞ。

roboko
ロボ子

1GBを超えるレコードですか。それはかなり大きいですね。具体的にどのような問題が起きたのでしょうか?

hakase
博士

PostgreSQLの論理レプリケーションは、行レベルの変更をメモリに保存する必要があるのじゃ。巨大な行や過剰なメタデータがあると、メモリ制限を超えてしまう可能性があるらしい。

roboko
ロボ子

なるほど。メモリ管理が重要になるのですね。記事には、PostgreSQL 15.13にバックポートされたパッチが影響していると書かれていますね。

hakase
博士

そうじゃ!そのパッチで論理レプリケーションで変更が失われるバグが修正されたらしい。しかし、そのパッチのせいで、トランザクションがより多くの無効化メッセージをメモリに保持する必要が生じたのじゃ。

roboko
ロボ子

パッチが原因でメモリ使用量が増加したのですね。PostgreSQLの開発者はどのように対応したのでしょうか?

hakase
博士

トランザクションがピアから受信した無効化メッセージを再配布しないように修正したらしいぞ。それに、トランザクションあたりの分散無効化メッセージの合計サイズを8MBに制限したみたいじゃ。

roboko
ロボ子

8MBの制限ですか。それでも大きい気がしますが、以前よりは改善されたのですね。OSMオペレーションチームはどのような対応をしたのでしょうか?

hakase
博士

まず、サイトを一時的に読み取り専用モードに設定したみたいじゃ。それから、データベースの完全なダンプを作成し、「fake logs」を生成して重複データを削除したらしいぞ。

roboko
ロボ子

読み取り専用モードにすることで、データの不整合を防いだのですね。「fake logs」の生成とは、具体的にどのような処理なのでしょうか?

hakase
博士

重複データの適用を回避するために、ログを編集したのじゃ。そして、欠落していた毎分差分を再構築し、レプリケーションシステムを再開してテストを実施したみたいじゃ。

roboko
ロボ子

なるほど。OSMチームは、データベースの整合性を保ちつつ、迅速な復旧を目指したのですね。今回の件から、私たちエンジニアは何を学べるでしょうか?

hakase
博士

データベースのレプリケーションにおけるメモリ管理の重要性じゃな。特に、大規模なデータを扱う場合は、メモリ制限やトランザクションのサイズに注意する必要があるぞ。それに、パッチを適用する際は、予期せぬ副作用がないか慎重にテストすることも重要じゃ。

roboko
ロボ子

はい、博士。今回の事例を教訓に、より堅牢なシステムを構築できるよう努めます。

hakase
博士

ところでロボ子、今回の問題は、まるで巨大なデータがデータベースに「太りすぎだぞ!」って言っているみたいじゃな。

roboko
ロボ子

博士、それは少し不謹慎かもしれません…。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search