0

毎分呼び出される複数の Cronjobs を持つ EC2 サーバーがあります。ほとんどの場合、すべて正常に動作しますが、データベースが原因で 1 つの cron ジョブ (wget) に非常に長い時間がかかり、次の wget 呼び出しが行われることがあります。これによりデータベースの速度が低下し、多くの wget 呼び出しと 200 を超えるデータベース接続が発生します。ほとんどの場合、RDS と EC2 の両方をシャットダウンし、cron ジョブなしで再起動する以外に方法はありません。

私は疑問に思っていました. 2. URL ごとに 1 つの wget のみが実行されていることを確認するにはどうすればよいですか? 3. 接続に数分かかるのに、RDS が接続を閉じないのはなぜですか? どのパラメーターを変更する必要がありますか?

ありがとうございました!

4

1 に答える 1

1

何を達成したいかによります。

  • 失敗せずに複数の接続を処理できるようにデータベースをスケーリングしますか?

各 cronjob 呼び出しが重要な場合は、これを行います。要求の半分の処理を見逃すわけにはいきません。

これを最適化するには、まずどこで時間が費やされているかを把握します。サーバー側で処理しているのか、それとも純粋なデータなのか。

  • 部分的なリクエストやスキップされた呼び出しを気にしない場合

簡単な修正は、wget タイムアウト オプションの 1 つを使用することです (wget が cron ジョブのすべてであると仮定します)。これにより、呼び出しが不足する可能性があることに注意してください。要求が常にタイムアウト期間よりも長くかかる場合、要求は実行されません。

より堅牢な解決策は、一度に cronjob のインスタンスを 1 つだけアクティブにすることです。IIRC Perl には、単純な CPAN ソリューションがあります。

于 2012-07-18T11:00:16.737 に答える