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.ArrayList — 可変長配列(非ジェネリック)の仕組みと使いどころ May 15, 2026
  • [C#] Lazy Object Instantiation — 遅延初期化と Lazy<T> の使いどころ May 14, 2026
  • [C#] System.GC クラスを整理する — ガベージコレクションを制御するための API May 10, 2026

Table of Contents

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

Recent Posts

  • [C#] System.Collections.Specialized.ListDictionary — 小規模辞書に特化した連結リスト実装 May 22, 2026
  • [C#] System.Collections.Specialized.HybridDictionary — 小規模では ListDictionary、大規模では Hashtable May 21, 2026
  • [C#] System.Collections.Stack — 非ジェネリックな LIFO スタックの仕組みと使いどころ May 20, 2026
  • [C#] System.Collections.SortedList — キーで自動整列される連想配列の仕組みと使いどころ May 19, 2026
  • [C#] System.Collections.Queue — 非ジェネリックな FIFO キューの仕組みと使いどころ May 18, 2026

Categories

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

Tags

  • C#
  • .NET
  • AWS
  • Laravel
  • PHP
  • セキュリティ
  • MySQL
  • Linux
  • コレクション
  • Apache
  • パフォーマンス
  • Code Snippet
  • DynamoDB
  • NoSQL
  • PHP-FPM
  • RDS
  • System.Collections
  • DoS
  • Nginx
  • Windows
  • WordPress
  • メモリ管理
  • 監視
  • 設計
  • Amazon Linux 2023
  • Docker
  • IDisposable
  • Ipset
  • Iptables
  • OPCache
  • Webサーバー
  • オブジェクト指向
  • クラス設計
  • デザインパターン
  • パターンマッチング
  • 継承
  • 認可
  • Aurora
  • Blade
  • Grafana
  • Hugo
  • InfluxDB
  • Policy
  • Record
  • SSG
  • インターフェース
  • エラーハンドリング
  • カプセル化
  • ガベージコレクション
  • モニタリング
Powered by Hugo & Explore Theme.