ブログ

適正なバッチ起動方法

投稿日:2014年11月16日 更新日:

phpやjavaなど、言語を問わずに必要となるのがバッチプログラム。
フロントで処理させるよりも、バックグラウンドで処理させた方が適しているときに使いますよね。
・内部でデータを集計したいとき
・フロントで表示するためにデータを収集する
こういったニーズがあるときに、バッチで処理したりします。
バッチは基本的にcronという自動実行デーモンを使って、定期的に起動させるのが一般的。
おおよその1回の処理時間を考えて、間隔を検討します。
バッチのポイントは、内部のロジックはもちろんですが、起動方法も重要です。
起動方法を誤ると、パフォーマンスの劣化に影響します。
*cronを使って起動するのは変わりません。
*cronから起動するための方法がポイントです。
<オススメ出来ない起動方法>
wgetを使った起動方法
バッチは、要はバッチ処理をするプログラムを実行するのです。
実行方式は大きく2つあります。
・コマンドラインからの実行
・httpを使ったweb形式の実行
私の見解としては、コマンドラインからの実行を推奨していて、http経由での実行はオススメしません。
■おすすめしない理由1
→httpdプロセスに余計な負担がかかる
httpというプロセスは、読んで字のごとくwebからの要求を受け付けます。
フロントページにアクセスがあるたびに応答を返すために処理されます。
httpプロセスは、それなりの許容を持った設計になっています。
なので、ある程度の負荷は耐えきれるような設計になっています。
とはいっても設計は理論上の話なので、理論上を上回ることもありえます。
そうなると、httpdプロセスをチューニングする必要が出てきます。
と、本来はwebの要求を受け入れるための物なのです。
それをバッチが使ってしまうということは、本来使えるはずのhttpの能力を自滅させることになるのです。
→メモリやCPUを多量に使う
バッチプログラムということは、厳密にはhttpプロセスは無関係です。
javaもしくはphpというプログラムが最終的には動くことになります。
つまりは、、、
httpのメモリ量+php(もしくはjava)のメモリ量=総メモリ量
となるわけで、本来使うはずのメモリ量以上の負荷が掛かるのです。
メモリだけじゃなくCPUに大しても同じことです。
貴重なシステムリソースの無駄な消費は避けたいところです。
wget経由で呼び出した方が一見簡単そうに見えますが。
簡単な裏には、システムリソースへの無断が負担がつきまとうのです。
インフラを背負っているエンジニアの方には、こういった細かいポイントも重要です。
プログラマーには気づかない視点ですからね。
限りある(リソース)資源、大事に使いましょうexclamation×2

-ブログ

執筆者:

関連記事

no image

Trusted Advisor がコンソールで使えるようになったようです。

公式ブログでも案内が出ていますが、Trusted Advisorという機能がAWSコンソール上から標準で使えるようになったようです。 http://aws.typepad.com/aws_japan/ …

no image

topコマンドでshift+o が秀逸すぎた

システムの負荷を確認する時によく使うのがtopコマンド。 自分の場合は1秒ディレイで確認することが多い。 ▼コマンド root> top -d 1 1秒間隔で負荷の状態が見えるのはいいが、重いプ …

no image

gmail経由でdocomo宛にメールが届かない

メールサーバの構築を検討しています。 普段であれば、postfixを使ってサーバを立てるのですが、outbound25対策を考えるのが面倒になってきたので、googleのsmtpサーバ経由で送信するこ …

no image

maillogトラブル時の対処法

メールログに異変が起きた場合の対処法です ◆メールログが出力されない /var/log/maillogは、postfixやsendmailでサーバ内部からメールを送信する時に出力されます。 syslo …

no image

Jaws-UG 北陸勉強会 at 金沢

Jaws-UGのセミナーに来ました。 金沢のITビジネスプラザです。 本格的に使い始めてからの参加なので、少々気持ち的にも違います。 本当にいろいろ出来るインフラアーキテクトが面白い。 けど、底なしな …