4

先月のherokuの請求書を受け取ったばかりで、予定されていたレーキタスクは比較的重い負担でした。私たちは開発プロセスのかなり早い段階にあるので、最近仕事を成し遂げるためにいくつかのrakeタスクを開発したばかりであり、それらの最適化にはあまり関心がありませんでした。

次に、パフォーマンスとHerokuの処理時間の使用量を改善したいと考えています。New Relicを使用してWebアプリのパフォーマンスを監視していますが、このタイプのrakeタスクはデフォルトで無視されているようで、それをオーバーライドする方法は不明です。

誰かが同様の問題を抱えていましたか?スケジュールされたタスクをほぼリアルタイムで追跡して、パフォーマンスを監視し、最適化し、サプライズ請求を受け取らないようにするにはどうすればよいですか?

4

5 に答える 5

7

レーキタスクをそれほどうまく監視することはできませんが、できることがいくつかあります。1つはロギングの使用です。タスクの開始時刻と終了時刻をログに出力すると、期間ごとに何が起こっているかを確認できます。これをPapertrailアドオンのようなものと組み合わせると、後で追加の問い合わせを行うことができます。

ジョブ自体の実行に関しては、実行する必要のある方法に応じて、バックグラウンドプロセスを実行する方法がいくつかあります。

スケジュールに従ってジョブを実行する必要がある場合は、いくつかのオプションを利用できます。まず、Herokuスケジューラがあります。これはかなり優れていますが、実行が行われることを保証するものではありません。通常、これを使用して、タスクの期間中に1回限りのダイノを発生させるレーキタスクを開始します。したがって、開発では、これらのタスクが可能な限り効率的であることを確認する必要があります。

または、もう少し制御が必要なジョブや、クロックプロセスを使用しているジョブを探している場合。基本的に、これは24時間年中無休で実行されるdynoであり、事前設定された間隔と時間で他のジョブを開始するだけです。これは通常、時計仕掛けの宝石を使用して行われます。このアプローチの欠点は、常にクロックプロセスの料金を支払う必要があることです。

3番目のアプローチであり、機能する可能性のあるアプローチは遅延ジョブrunatです。このオプションを使用すると、将来実行するジョブをキューに入れることができます(ジョブは自分自身を再キューに入れることができます)。これにはいくつかの問題があり、障害が発生するとチェーン全体が停止する可能性があり、それらすべてを処理するにはフルタイムのワーカーが実行する必要があります。

したがって、請求額を最小限に抑えるために、レーキタスクのパフォーマンスと信頼性を確保してから、適切なスケジュールオプションを選択してください。スケジュールとユーザーが作成したイベントを確認している場合は、delayed_jobが最適なオプションです。定期的に実行されているいくつかのタスクを見ている場合は、スケジューラーに移動します。タイムクリティカルなジョブを定期的に実行することを検討している場合は、時計仕掛けを使用してください。

いずれにせよ、アプローチに応じて、かなりの量の処理を1つまたは2つのプロセスに制限できるはずです。

于 2012-02-05T13:11:19.107 に答える
1

この質問はほぼ10年前のものですが、新しい方法があります。

One- offDynoMetricsを使用してHerokuスケジューラジョブを監視できるようになりました。このHerokuアドオンは、Herokuアプリで実行されているすべての切り離された1回限りのdynoのメトリックを収集します。これは、HerokuのApplication Metricsの拡張として作成され、そのまま使用できます。

于 2021-11-25T20:54:07.400 に答える
0

特定の質問に対する答えではありませんが...オーバーヘッドを削減する1つの方法は、Unicornサーバーを使用して複数のワーカーを1つのdynoで動作させることです。設定によって異なりますが、時間をかけてテストしたほとんどの人は、3〜4個のワーカープロセスを同時に実行しても問題ありません。これは、手がかりやタスクをクリアする上で大きな後押しとなります。dynoに割り当てられたメモリを最大にしないように注意してください。

于 2012-02-26T01:08:40.080 に答える
0

Heroku Cedarで実行している場合、ワーカー用に無料のセットアップを取得する方法があります。これは監視に関する質問への回答ではありませんが、とにかく興味深いかもしれません:http: //blog.nofail.de/2011/07/heroku-cedar-background-jobs-for-free/

于 2012-02-05T14:39:06.127 に答える
0

New Relicエージェントに強制的にレーキタスクを開始させ、パフォーマンスデータを報告させることができます。

于 2012-02-05T18:47:14.770 に答える