操作
バグ #1437
完了画像をホストしているオブジェクトストレージなどの画像を数個同時にリクエストすると、一切の画像取得がロード中で止まる
プラグイン名:
ブランチ:
クラッシュする:
いいえ
説明
mikutterの画像取得は同時に4コネクションしか使わないようになっている。
このため、4コネクションが非常に遅いなどタイムアウトまで待たされることがあると、新たに画像をダウンロードすることができず、全ての画像がロードできなくなることがある。
専ら画像を取得するホストはせいぜいWorldの種類程度しかなかった時には特に問題にならなかったことだが、Mastodonのような分散SNSに対応したため、Worldの数と関係なくサーバ数ぶんホストが増えることになる。
不安定なサーバが出てきたときに、全てのサーバの画像がダウンロードできなくなるのは避けなければならない。
解決方法¶
コネクション数制限を、1ドメイン毎に4コネクションまでとする。4は根拠のない数字なので特に増やすことには問題はない。
とはいえ、現状の実装では接続数分Threadが作られてしまうため、今回のようなケースで大量のThreadが確保されると他の問題を誘発するかもしれない。
4コネクションでも平時は問題がなかったことから、上記の解決策を打って様子を見る。
再現手順
- オブジェクトストレージなどを使っているMastodonサーバを用意する
- オブジェクトストレージをクラッシュさせるなど、接続がタイムアウトまで止まるようにする
関連するチケット
操作