Techioz Blog

Sidekiq ワーカーに引数として巨大な文字列を渡すのは得策でしょうか?

概要

私は Web サイトを調べて、Sidekiq ワーカーでその特定の部分を解析するスクレイパーに取り組んでいます。スクレイパーが、私が関心のある 10 個の要素を含む Web サイトにアクセスし、それぞれの要素が Sidekiq のキューに入れられている状況を想像してください。現時点では、要素のソースコードを引数として渡しており、後でNokogiriにロードされます。私の質問は、巨大な文字列を引数として Sidekiq ワーカーに渡すのは良い考えですか?文字列の長さは常に 77,000 ~ 80,000 文字なので、非常に巨大です。それとも、一時テーブルに保存して、Nokogiri でロードする前に特定のレコードを見つけたほうがよいでしょうか?

解決策

文字列を S3 (またはその他のオブジェクト ストア) に保存し、返された URL を使用して文字列をフェッチし、ジョブを処理することをお勧めします。

こうすることで、小規模な Redis サーバーが多数の同時サイドキック ジョブをサポートでき、RAM が不足しないようにすることができます。