bucket-sort logo bucket-sort

プログラミングとインフラエンジニアリングの覚え書き

  • Posts
  • About
  • Contact
  1. Home
  2. All Posts
  3. cronジョブにジッターを加えたい

cronジョブにジッターを加えたい

Feb 5, 2026 Linux bucket-sort

cron をそのまま使っていると、複数台のサーバーで同じタイミングにジョブが起動してしまい、 意図せず負荷が集中するケースがあります。

このような「同時実行による負荷集中」を避けるために、cron ジョブの実行タイミングに ランダムな遅延(ジッター)を加えたい場合があります。

例えば、以下のように実行している cron ジョブにジッターを加えたいとします。

# vi /etc/cron.d/app
*/15 * * * * root cd /usr/app; php artisan user-function

cron の標準機能でできないか調べる

まず、cron 自体にランダム遅延の機能が無いかを確認します。

  • anacron には RANDOM_DELAY というパラメータが存在する
  • しかし、一般的な cron には同等の機能は用意されていない

そのため、標準機能だけでジッターを加えることはできません。

自前でやる方法を考える

Laravel 側で sleep を入れる

Artisan コマンドの処理の冒頭でランダムな遅延を入れる方法です。

public function handle()
{
    sleep(rand(0, 120)); // 0〜120秒の間でランダムに遅延
    $this->userFunction();
}

アプリケーション側の制御になるため、実装が簡単という利点があります。

シェルスクリプトで sleep を入れる

cron からシェルスクリプトを呼び出し、その中でランダムな遅延を加える方法です。

# vi /root/bin/run_user_function.sh
#!/bin/bash
cd /usr/app
sleep $((RANDOM % 121))  # 0〜120秒
php artisan user-function

chmod 755 /root/bin/run_user_function.sh

cron 側の設定を以下のように変更します。

# vi /etc/cron.d/app
*/15 * * * * root /root/bin/run_user_function.sh

crontab にワンライナーで書く場合

シェルスクリプトを用意せず、ワンライナーで記述することも可能です。

# vi /etc/cron.d/app
*/15 * * * * root cd /usr/app; sleep $((RANDOM \% 121)); php artisan user-function

cron の設定ファイル内では % をエスケープする必要がある点に注意してください。

Cron Laravel 運用 パフォーマンス
← OPCacheのファイルキャッシュについて整理する Apache管理者向けApache vs Nginxまとめ →

Related Posts

  • PHP 7以降でデフォルト有効になったOPCacheについて整理する Feb 1, 2026
  • Laravel の Event / Listener で Pub/Sub を実装する Apr 2, 2026
  • PHP/Laravel で値の状態を判定するヘルパ関数まとめ Mar 30, 2026
  • Filament の dehydrated メソッドとは何か Mar 29, 2026

Table of Contents

  • cron の標準機能でできないか調べる
  • 自前でやる方法を考える
    • Laravel 側で sleep を入れる
    • シェルスクリプトで sleep を入れる
    • crontab にワンライナーで書く場合

Recent Posts

  • Laravel の Event / Listener で Pub/Sub を実装する Apr 2, 2026
  • [C#] delegate と event の仕組みを整理する Apr 1, 2026
  • Pub/Sub パターンとは何か Mar 31, 2026
  • PHP/Laravel で値の状態を判定するヘルパ関数まとめ Mar 30, 2026
  • Filament の dehydrated メソッドとは何か Mar 29, 2026

Categories

  • AWS27
  • C#22
  • .NET20
  • Laravel16
  • Linux12
  • Apache8
  • MySQL8
  • PHP8
  • DynamoDB6
  • Nginx5
  • WordPress4
  • インフラ4
  • Hugo3
  • セキュリティ3
  • .NET Framework1
  • Aurora1
  • Filament1
  • Git1
  • SQS1

Tags

  • AWS
  • C#
  • .NET
  • Laravel
  • PHP
  • MySQL
  • セキュリティ
  • Linux
  • Apache
  • Code Snippet
  • DynamoDB
  • NoSQL
  • PHP-FPM
  • RDS
  • DoS
  • Nginx
  • Windows
  • WordPress
  • パフォーマンス
  • 監視
  • Amazon Linux 2023
  • CMS
  • Docker
  • Ipset
  • Iptables
  • OPCache
  • Webサーバー
  • 認可
  • Aurora
  • Blade
Powered by Hugo & Explore Theme.