Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ノイジーネイバー問題を解決する 公平なキューイング

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

ノイジーネイバー問題を解決する 公平なキューイング

Gotanda.rb#64の登壇資料です。

Avatar for Shoichi Ochi

Shoichi Ochi

January 28, 2026
Tweet

More Decks by Shoichi Ochi

Other Decks in Programming

Transcript

  1. 2 SmartBank, Inc. 
 Software Engineer 
 越智 翔一
 @ochi11181101


    @sho-work
 おち しょういち
 自己紹介

  2. 3

  3. 6 ノイジーネイバー問題とは?
 ノイジーネイバー問題とは、マルチテナント環境 において、あるテナント(隣人 = ネイバー)のリ ソース使用が他のテナントのパフォーマンスに 悪影響を与える現象のこと。 
 


    長時間実行されるバックグラウンドジョブで問題 になりやすい。
 (昨今トレンドになっている LLMを用いたプロダ クトでは問題になることが多い) 
 引用元①: https://densumesh.dev/blog/fair-queue/
 引用元②: https://zerofilter.medium.com/noisy-neighbor-problem-in-multi-tenant-systems-explained-briefly-3788ae5e9d5b

  4. 22 ラウンドロビン
 ・ 厳密な「順番待ち行列」のイメージ 
 (選択されると次は最後尾に追加される) 
 
 
 引用元:

    https://www.qnx.com/developers/docs/8.0/com.qnx.doc.neutrino.sys_arch/topic/kernel_Round_robin_scheduling.html
 公平なキューイングの実現

  5. 23 ・tenants.last_dequeued_at が古い順にテナントを選択する 
 
 
 
 
 
 ・デキューの度に、

    tenants.last_dequeued_atを更新する。
 
 
 
 ラウンドロビンの場合の設計(RDBMSベース)

  6. 24 ・tenants.last_dequeued_at が古い順にテナントを選択する 
 
 
 
 
 
 ・デキューの度に、

    tenants.last_dequeued_atを更新する。
 
 
 
 ラウンドロビンの場合の設計(RDBMSベース)

  7. 31 ・ランダムにtenantsレコードを一件取得する 
 
 
 
 
 SQLアンチパターン 「16章 ランダムセレクション」が参考になります

    ☝
 (時間の関係上、クエリの改善案は割愛) 
 引用元: https://www.oreilly.co.jp/books/9784814400744/
 ランダムセレクションの場合の設計(RDBMSベース)