おやほんとうだ。HTTP::TimeoutError: Connect timed out after 5 secondsとかHTTP::TimeoutError: Read timed out after 10 secondsとかけっこう記録されてる。
それぞれのタイムアウトを5秒間ずつ延ばしてみました。ほんとうは統計をとって効果を確認したいところだけど、まあ、
https://github.com/zunda/mastodon/commit/4cd9421164918c7f44a058e3a7f9109a302bf797
Pumaのスレッドがいくつか走ってるストリーミング側のアプリログからHTTP::TimeoutErrorを検索してみました。タイムアウトを延ばした01/27@08:44ごろからずいぶん頻度がさがったっぽい。
@zundan とりあえず全部30くらいから始めて、サーバ負荷で困るなら減らしてく感じがいいと思いますよ
@tateisu なるほど。ネットワーク待ちの間はCPUを使わないように見えるので負荷はRedisに行く感じでしょうか?
改めてコードを眺めてみるとどのコミットでタイムアウトの挙動が変わったのかわからなくなっちゃったので、ちょっともちつきたいと思いますw
@zundan Sidekiqは処理実行中ずっとDB接続を握ってるので、DB接続が溢れるかSidekiqの同時処理数が溢れるか、という形で問題が現れます。それは応答のない/応答の遅い接続先サーバがある時に顕著になります。
様子見というのは、そういう接続先サーバが出てこないと適切なタイムアウトを推測できないからですね。
@tateisu なるほど!その点では弊ぼっちはRedisへの接続数がすでにボトルネックになっていて、Puma、Sidekiq、Nodeの合計スレッド数が低く抑えられているので問題にはならなさそうです。