これは多くの場合、スクリプトのパフォーマンス特性によって決まります。もしCPUが非常に集中していても影響が少ないのであれば、私は心配しないでしょう。herokuスケジューラーのようなものを使うと、ジョブは別々のdynoで実行されます。これは別のダイノーであるため、要求を処理している他のダイノスには影響しません。
重いデータベースの使用はすべて一緒に別のものです。あなたのデータベースにはIO、キャッシュ、CPUなどの有限の量があります。もしあなたがそれを強く押しているのであれば、バストキャッシュ以来多くの読み込みが一般的に悪いですが、他のダイノスのパフォーマンスを低下させる可能性があります。
ウェブサイトの動作を停止することもできます。ジョブが終了してアプリケーションの残りの部分がアクセスしようとしている行/テーブルがロックされた場合、ウェブダイノスはそれらのジョブを解放するまでブロックされますロック。
フィードをトラバースするときに、フィードを解析してDB行を1つずつ更新すると、おそらく大丈夫でしょう:ロック競合の点で大量の書き込み/索引付けされた列から一度に1つの行を読み込み、いくつかのルビ計算を行い、次に1つの行を更新しているように思えるので、難しいと思うでしょう。
パフォーマンスが許容できないほど低下している場合は、ボトルネックが読まれている場合は、片方の読取りスレーブ(レプリカとも呼ばれ、英字ではfollower)を使用します。要約すると、これは、メインのデータベースサーバーを追跡するデータベースサーバーです(これは常に最新です)。このサーバに行うことは、マスタdbに影響を与えることができないため、気にせずにクエリを実行できます。
これは、問題が必要な書き込みの数である場合に役立ちません。ある程度、これは、より繁雑なデータベースサーバーに切り替えることによって(コストをかけて)解決することができます。いくつかの使用パターンでは、異なるタイプのデータストア(例えば、mongo、redis)がリレーショナルデータベースよりも適切な場合があります。場合によっては、パフォーマンスのホットスポットのいくつかを設計することは可能ですが、明らかにそれを考慮するに最適な場所です。
これはすべて非常に抽象的なものです。本当に知っている唯一の方法は試してみることです。アプリのコピーをセットアップしてこのタスクを開始し、パフォーマンスが低下するのを確認してください(または、実際のアプリに対してこれを実行してください)
gem https: //github.com/javan/whenever。 – afaf12