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
  • [C#] System.Collections.Generic.List<T> — もっとも使われる動的配列の仕組みと使いどころ May 27, 2026
  • [C#] System.Collections.Specialized.BitVector32 — 32 ビットを構造体で扱う高効率ビットフラグ May 24, 2026
  • [C#] System.Collections.ArrayList — 可変長配列(非ジェネリック)の仕組みと使いどころ May 15, 2026

Table of Contents

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

Recent Posts

  • [C#] プラグインで拡張できるアプリケーションを設計する Jul 9, 2026
  • [C#] 属性でコードに意味を与える Jul 8, 2026
  • [C#] 外部アセンブリを読み込み実行時に型を呼び出す Jul 7, 2026
  • [C#] リフレクションで型の中身を調べる Jul 6, 2026
  • [C#] 型メタデータとリフレクションの基礎を理解する Jul 5, 2026

Categories

  • C#120
  • .NET119
  • AWS27
  • Laravel16
  • Linux15
  • MySQL9
  • Apache8
  • PHP8
  • DynamoDB6
  • セキュリティ6
  • Nginx5
  • WordPress4
  • インフラ4
  • Hugo3
  • .NET Framework1
  • Aurora1
  • Diagnostics1
  • Filament1
  • Git1
  • SQS1

Tags

  • C#
  • .NET
  • AWS
  • Laravel
  • コレクション
  • PHP
  • セキュリティ
  • MySQL
  • Linux
  • パフォーマンス
  • Apache
  • System.Collections.Generic
  • デリゲート
  • Code Snippet
  • DynamoDB
  • LINQ
  • NoSQL
  • PHP-FPM
  • RDS
  • System.Collections
  • Windows
  • メモリ管理
  • リフレクション
  • DoS
  • Nginx
  • WordPress
  • メタデータ
  • ラムダ式
  • 監視
  • 設計
  • Amazon Linux 2023
  • Delegate
  • Docker
  • IDisposable
  • Ipset
  • Iptables
  • LINQ to Objects
  • OPCache
  • Pointer
  • Reflection
  • System.Collections.Specialized
  • Unsafe
  • Webサーバー
  • インターフェース
  • オブジェクト指向
  • クラス設計
  • デザインパターン
  • パターンマッチング
  • ポインター
  • 継承
Powered by Hugo & Explore Theme.