プロジェクト

全般

プロフィール

バグ #941

画像のメモリキャッシュ開放時に大量にThreadが作成されて、短時間フリーズする

toshi_a 初音8ヶ月前に追加. 7ヶ月前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
開始日:
2016-12-06
期日:
進捗率:

0%

プラグイン名:
再現手順:

説明

問題

現在のPhotoModelは、画像を UserConfig[:photo_forget_time] 秒(未指定なら60秒)メモリ上に記録する(/core/lib/retriever/mixin/photo_mixin.rb)。
Pixbufも、/core/mui/gtk_photo_pixbuf.rbでメモリ上から一定時間で参照を切るようになっている。

これらの開放のためにReserverを使う実装を行ったせいで、起動してから1分の時点でおよそ画像枚数分のThreadが作られ、フォロー・フォロワー数によっては数秒程度CPU使用率が100%になり、フリーズする。また、expireが十分短いため、起動直後に限らず、あるタイムラインを初めて表示した1分後などにもこの問題が発生することがある。

解決策

まずThreadをあまりにも作りすぎることが問題なので、Reserverを使わないようにするか、同様の仕組みを使ってもThreadを作らないようにする。
開放処理をPhotoMixinのインスタンスが行うと融通が利きにくい気がするので、キャッシュは以前のように大域的に面倒を見るようにしてもいいかも。

関係しているリビジョン

リビジョン c3f1dff3 (差分)
toshi_a 初音7ヶ月前に追加

Reserverのタイムアウト時に作成されるThreadのclassを指定する引数を追加 refs #941

履歴

#1 toshi_a 初音7ヶ月前に更新

  • ステータス新規 から 終了 に変更

他の形式にエクスポート: Atom PDF