100万回に1回の失敗をデバッグする:Pinterestの検索インフラストラクチャをKubernetesへ移行する
Pinterestの検索インフラストラクチャであるManasはKubernetesに移行されましたが、100万回の検索リクエストに1回、通常よりも100倍時間がかかるというパフォーマンスの問題が発見されました。この問題は調査され、原因は監視プロセスであるcAdvisorであることが判明しました。cAdvisorは、プロセスが参照するメモリの合計バイト数を計算するために30秒ごとにページテーブル全体をスキャンしており、Manasのメモリ集約的なリーフ処理との競合を引き起こしていました。これが検索リクエストのレイテンシスパイクの原因となっていました。調査には、検索システムのプロファイリング、パフォーマンス問題のデバッグ、Linuxカーネルの機能、メモリ管理が含まれていました。根本原因は、デフォルトで有効になっておりメモリ競合を引き起こしていたcAdvisorのワーキングセットサイズ(WSS)推定であることが特定されました。この問題は、すべてのPinComputeノードでcAdvisorのWSS推定を無効にすることによって解決されました。この修正はPinterestのKubernetesプラットフォームにとって大きな成果であり、他のオンラインサービスをプラットフォームに移行できるようになりました。この調査は、リソース分離、問題空間の絞り込み、ブラックボックスデバッグ戦略の重要性を浮き彫りにしました。この経験から、時には十分な解決策で十分であり、前進するために正確な解決策を見つける必要はないことも示されました。