- PR -

cronの使い方について

1
投稿者投稿内容
aco0000
会議室デビュー日: 2004/09/16
投稿数: 18
投稿日時: 2005-03-30 18:45
Linuxで、バッチを実行しようとおもってるのですが、
以下のような条件の場合Cronを使ってやるのは
一般的な方法として正しいのでしょうか?

・バッチの実行開始時間はばらばら
・実行にかかる時間は1秒以下
・数が動的に変わる
・実行数は1日1〜10万

cronの定義ファイルをころころ変更するのが
やり方としてあってるのかよくわからないもので・・・
他に方法があれば教えてもらえるとうれしいです。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-03-31 00:19
どういう状況なのかわからないのですが...
1日に10万件というと、毎秒1件以上なわけで、それを cron で実行しよう
というのはどういうことなんだろう?という素朴な疑問が湧きます。

ソースを確認したわけじゃないですが、ふつう cron は少数の登録しか
ないから線形探索して実行条件にあてはまっているかどうかチェックする
実装になっていそうな気がするし、そうだとすると10万件もの登録を
毎回調べるのは相当に非効率だから別の方法を考えたほうがよい気が
しますです。
パテ太
ベテラン
会議室デビュー日: 2004/08/16
投稿数: 64
お住まい・勤務地: 千葉・東京
投稿日時: 2005-03-31 09:52
引用:

・バッチの実行開始時間はばらばら
・実行にかかる時間は1秒以下
・数が動的に変わる
・実行数は1日1〜10万


・バッチの実行開始時刻はバラバラである。
・個々のバッチの実行時間は1秒以下である。
・ 1 日に実行しなければならないバッチの数は動的に変化する。
までは良いとして

1.複数のバッチを各々 1 万 〜 10 万回実行する。
2.複数のバッチののべ実行回数が 1 万 〜 10 万回である。
3.バッチの総数が 1 万 〜 10 万あり、各々 1 回実行する。
4.バッチの総数が 1 万 〜 10 万あり、各々 複数回実行する。
5.バッチの総数が 1 万 〜 10 万あり、各々 1 万 〜 10 万回実行する。

1. と 5. はバッチを毎秒実行しても 1 日 10 万回実行することは
不可能なので×だとは思うのですが・・・
1 〜 5 のどの意味なのでしょうか?
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-03-31 10:06
どもでし。がると申します。
ほかの方が書かれてるのと重複する気がたっぷりしてるんですが(苦笑
とりあえずまず、質問を。
引用:

・バッチの実行開始時間はばらばら


各パッチが「いつ実行されるのか」はどこに書いてるんでしょうか?
DB? 若しくは適当なconfigファイル?

引用:

・実行にかかる時間は1秒以下


この辺はまぁ「マシン負荷」以外での問題は特にないかと思います。
cronで、優に分単位でかかるような処理をさせることもままあるので。

引用:

・数が動的に変わる


これは「処理をする件数が変わる」「動かすべきパッチの数が変わる」
のいずれでしょうか?

引用:

・実行数は1日1〜10万


このあたりからすると「動かすべきパッチの数が変わる」って感じで
しょうかねぇ?

んっと。前提として
・動かすべきパッチは所定のディレクトリに存在する
・各パッチを動かすべき時間&フルパスでのファイル名は
 適当なところに保存されている
という条件が満たされているとすると。
まぁ、異論各種あろうかと思いますが、個人的には
・毎分動く管理用プログラム
を一つでっちあげますねぇ。
で、管理用プログラムの処理としては
コード:
while() {
  DBから「いま動かすべきパッチ」を取得
  パッチを起動
}
exit


ってな感じでしょうか?
cronファイルを動的に、しかも(最悪人力で)がりごりといじるよりは
もうちょっとらくだと思います ^^
aco0000
会議室デビュー日: 2004/09/16
投稿数: 18
投稿日時: 2005-03-31 19:40
ぽんすさん:
>そうだとすると10万件もの登録を毎回調べるのは相当に非効率だから
>別の方法を考えたほうがよい気がしますです。
いい他の方法があれば教えていただけると助かります

パテ太さん
処理内容は多少かわりますが、基本的にバッチは一つで
そののべ実行回数が1 万 〜 10 万回です。

がるがるさん
>各パッチが「いつ実行されるのか」はどこに書いてるんでしょうか?
>DB? 若しくは適当なconfigファイル?

DBです。

>これは「処理をする件数が変わる」「動かすべきパッチの数が変わる」
>のいずれでしょうか?

バッチ自体は同じものですが実行する時間を指定していて
その時間がその日によって変わります。

>・毎分動く管理用プログラム
>を一つでっちあげますねぇ。

こっちのほうが一般的ですかね。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-03-31 21:47
DBに書いてあるのなら、がるがるさんが書かれた方法がいちばん
素直なんじゃないでしょーか。
しいて付け加えるならば「毎分動くように設定/設計したプログラムが
本当に毎分動くとは限らない」くらいですかね。
# DBの検索条件でその点をカバーしといたほうが無難、とゆー話です。
パテ太
ベテラン
会議室デビュー日: 2004/08/16
投稿数: 64
お住まい・勤務地: 千葉・東京
投稿日時: 2005-03-31 23:08
私もがるがるさんの方法がよいとは思いますが

1 つのバッチを 1 万 〜 10 万回実行しているとして
1 日に 10 万回分の実行計画を手作業で直している
というのは常識では考えられないので

10 万回の cron を登録する方法
および
10 万回のバッチが正常終了したことを確認する方法
がすでにあるんですよね?

引用:

一般的な方法として正しいのでしょうか?



「一般的か?」と聞かれるとはなはだ疑問ではありますが
正常に動作しているなら下手にいじるよりは
いいのではないでしょうか?・・・と言う気がしますが・・・。
1

スキルアップ/キャリアアップ(JOB@IT)