RSSポーリングでフィードの処理に20分以上かかる場合があります

こんにちは。まず、新しいRSSポーリング管理画面の追加に心より感謝いたします。大きな違いがありました!

私たちのウェブサイトには数十のRSSフィードがあります。Sidekiqを確認したところ、一部のフィードのジョブが20分以上かかることがあります。これによりキューが簡単に詰まってしまいます。

RSS polling feed request timeout という設定はありますが、問題はそこではありません。RSSフィード自体はすぐに利用可能で、読み込みも速いです(少なくとも、Sidekiqが同じフィードで苦戦しているのと同じタイミングでブラウザで試した際には)。問題の原因は、一部のRSSフィードがポッドキャストのすべてのエピソード(直近10〜15件だけでなく)を含んでおり、かつエピソードがすでにダウンロード済みで変更がないにもかかわらず、Discourseがそれらのエントリをすべて処理しようとする点にあるようです。基本的には、変更がなく新しいエピソードもないRSSフィードのせいで、Sidekiqが30分近く、あるいはそれ以上も苦戦することになり得ます。

理想的には、Discourseが変更がないことを素早く検知して、次の処理に進むべきです。

オプションとして、フィードの読み取りを最初のNN件に制限する設定があれば良いと思います。

あるいは、少なくとも、NN分(5分、最大10分)経っても解決しない場合のポーリングを打ち切る時間制限があれば良いと思います。

フィードの処理に10分以上かかり、Sidekiqが100%稼働している際に、具体的に何が起きているのか気になります。何がそこまで時間がかかり、処理が重くなるのでしょうか。

現在のプラグインで改善できる点があると思いますか?

「いいね!」 2

喜んで改善します。ローカルでより適切にテストできるよう、フィードのURLを共有してもらえますか?(非公開にしたい場合は、お気軽にDMをどうぞ)

「いいね!」 2

迅速なご返信ありがとうございます @zogstrip さん!RSSフィードは公開されており、スペイン語のインディペンデントなポッドキャストやラジオ番組を聴く方々には、まさに推奨されています。:wink:

サーバーに少し余裕を持たせるために一時的に無効化している、有効なRSSフィードのリストはここに保管しています:Limpieza de RSS feeds - nº 3 por icaria36 - Sobre Podkasts - Podkasts

その多くはWordPressを使用しており、RSSのエントリ数を編集するよう依頼することは可能です。しかし、スペイン語圏では特に人気のあるプラットフォームであるiVooxを使用しているものも多いです。iVooxでは番組のエピソードをすべてRSSに含めて配信しており、彼らは(比較的大きな)企業であるため、「お問い合わせ」リンクを見つけても、実際に誰かに連絡がつくことは難しい状況です。そのため、私たちは行き詰まっています。テストとしては、まずiVooxのフィードを追加し、ご希望があればさらに追加していくのが良いかと思います。

P.S. 最初に取り組むものとしては、異様に長いこのフィードが適していると思います:<![CDATA[Es lo que hay - Lliure directe]]>

「いいね!」 1

大型フィードのポーリング/インポート速度を大幅に向上させるはずのPRがいくつか作業中です。

「いいね!」 2

オ マ ギ !!!

ありがとうございます!とても迅速で正確でした。

この問題を報告できたことをとても嬉しく思っています。私たちのケースはかなり特殊なケースだと思いますが、この解決策は、このプラグインを使用するほぼすべてのDiscourseインスタンスの性能を、わずかでも向上させるのに貢献するはずです。

パッチがマージされたようです。これは、今Discourseを更新すればそれらを取得できるという意味ですか?

「いいね!」 2

「Merged(マージ済み)」とは、変更が main に取り込まれたことを意味します。通常、フォーラムは main ブランチを追跡するのではなく、latest を追跡します。つまり、マージ後も自動テストの実行と合格を待つ必要があります。

Commits · discourse/discourse · GitHub を見ると、zogstrip のコミットでまさにこの状態が確認できます(緑のチェックマークが表示されており、その上のコミットはまだ茶色のドットです)。

また、latest ブランチ(Commits · discourse/discourse · GitHub)を見ても、これらのコミットが確認できるようになっています。

したがって、フォーラムがデフォルトで追跡している latest を追跡している場合は、今すぐ更新してこれらのコミットを取得できます。

「いいね!」 2

RSSフィードを再有効化し、最初のRSS処理ラウンドがほぼ完了しました。新しい投稿が86件出現しており、その多くは数日前のものです。これは、いくつかのフィードが以前は処理を完了できていなかったが、今回は完了したことを意味します。非常に良い結果です!

非常に長いフィードは、ジョブを長時間占有し続ける場合がありますが、10分を超えたのは3件のみでした。このフィードは1時間経ってもまだ実行中です… しかし、本当に長いフィードなので、許容範囲かもしれません?とはいえ、単一のフィードがジョブをこれほど長く占有すること自体が、ある意味で問題です。しばらくの間、初めての大規模なインポートだったことが関係しているのかもしれません。次のRSSラウンド(180分間隔で設定されています)で再度確認してみます。

「いいね!」 1

もしかすると、1時間実行されているそのジョブは、インポート以外の何かで停止しているのかもしれません。ちょうど気づいたのですが、そのフィードのすべての投稿は画像などを含めてインポートされているようです。少なくともユーザーの視点から見れば、インポートは完了したように見えます。おそらく例外ケースなのでしょう。あと数回のRSSサイクルを経た後に、再度報告します。

いいね :+1:

これらのフィードは「新規」ですか、それとも以前にすべてインポート済みですか? 初期インポートの速度向上については、新しいトピックを作成できる「速さ」に大きく制約されるため、特に大きな改善は行っていません。

すべてすでにインポート済みです。

了解です。テストのため、ポーリング頻度を10分に設定を変更しました(後ほど180分に戻します。私たちにとってはそれで十分です)。zogstrip氏の修正後、ほとんどのフィードは1分以内、またはそれ以下の時間で処理されています。非常に長いフィードがいくつかあり、2分を超える場合もありますが、5分を超えることは(私が確認した限りでは)ありませんでした。このRSSフィードだけが確実に4分以上かかる唯一のフィードですが、非常に長いため、このユースケースに対してはあまりできることがないかもしれません。ブラウザでもレンダリングに時間がかかります。(また、無関係な理由で削除されるかもしれません。)

ポーリングプロセス全体が5〜6分以内に完了するという事実は驚くべきことです。大幅な改善です。私としては、このレポートを解決済みとマークできます。zogstrip氏、改めてありがとうございます。

「いいね!」 1

Keanu Reeves: My Pleasure

「いいね!」 2