もっと見る

板橋pushがだいぶ事故っちゃってますが僕には直すだけの知見が足りておりませんorz
さぁどうしたものか

詰まりは解消してもエラーを直してないから配送失敗して再試行に落ちるだけなんだけどそこまでは直す方法はわからん

配送詰まり解消しました
アラートが来なかったため発見が遅れました、すいませんでした

んでこれsidekiq調整俺の独断でやっていいの?
tmuxの上に立ってるsidekiq 計2プロセスだけなんとかしたいんだが

次に再試行に積まれてるエラーについて
Too many open files
これ、ユーザーごとに開けるファイルの限界数らしいんだが、ソケットもファイル扱いになってカウントされる
mastodon@itabashi:~ $ ulimit -n
1024
これ増やしてあげればいいらしい

とトゥートしていたら見事に詰まって仮説が証明された
32861の処理が詰まって一瞬待機中のジョブが38件ほど発生したが、その処理は16847に流れて待機中0になった

つまりこの状態
基本は32681が処理をしていて、他のプロセスは休んでいるが、32861がpullの新規処理を受け入れられない状態になると、15641か16847に処理が流れることが期待される
この場合、15641(16847)ではトラブルなく(32861の詰まり具合にかかわらず)処理が行われて、自然と詰まり解消状態になる

ここで一つ案として考えられるのは、手動でつまりを解消させている状態すなわち詰まっているキューの他に処理ができるフリーなプロセスが存在する状態に常にしておけば良いのではなかろうかということ
この場合、たとえばpullが詰まるなら、全キュー処理用のプロセスに加えて少なめのpullキューがあるだけで改善するんじゃなかろうか?という仮説

スレッドを表示

そもそも詰まらないようにするためには、
・キューごとにプロセスを分割させるだけではそのキューだけが詰まるので意味がない(むしろ処理が中途半端に行われるのでアラートがないと発覚が遅れたりする)
・根本的にスレッド数を増やせば詰まりにくくなる(時間がかかる処理を走らせながらも流れてくるキューを捌ける状態が理想)

スレッドを表示

・詰まりを解消させるためには、詰まっているキューを処理するための別のプロセスを生やしてあげればいい
・この場合、pull→push→defaultの順で詰まったものを解消するためには、pullだけでなくpushやdefaultも別途処理させないと、解消することはできない

スレッドを表示

経験として、
・残スレッド数に関係なく、詰まるときは詰まる
・このインスタンスは、pullから詰まり始める(pushが詰まることもあるが、それはpullが詰まった時に他の処理が停滞することによる副次的な結果と推測される)

もう詰まるから臨時じゃなくて持続的にプロセス立てときます

もっと見る
板橋丼(Itabashi-don)

東京都板橋区、及びその周辺地域に関する地域インスタンスです。