ロギングのために特定のスケジュールされたタスクを実行するデーモンを作成していますが、特定のポイントのボトルネックが心配です。
事実上、15 分ごとに実行したいログ タスクと、30 分ごとに実行したいログ タスクがあり、月に 1 回だけ実行する必要があるタスクまであります。基本的に、各時間間隔で行うチェックのリストがあります。これらはキューに入れられ、スレッド プールによって処理されます。
現時点では、タスクがこのようなものを実行しているように見えます
15
15, 30
15, 30, 60
15, 30, 60, 120
15, 30, 60, 120, 240...
これは、デーモンが 00:00 時間に開始された場合、04:00 時間までに 5 つのプロセスが同時に実行され、これで終わりではないことを意味します。現在、これにより、15 分間に予定されている次のタスクの実行が遅くなり、制限された量の帯域幅にアクセスできます。
ただし、タスクを正時に実行する必要はありません。そのため、15 分のタスクが正時に実行される場合、重複を最小限に抑えるために、30 分のタスクは正時の 5 分に開始される場合があります。30 分の 2 つのタスク (00:00 と 00:30 など) を 15 分の 4 つのプロセスに分割して、「一度に」タイプの問題に見舞われることを減らすこともできますが、これには本当に頭が混乱します。
この種の問題を管理するためのよく知られた方法論はありますか?