4

さて、私はcronjobに依存するWebスクリプトを作成することを考えています。
私は疑問に思っています、それはcrontabの量に対してサーバーに損害を与えることはありますか?

毎日50個のcrontabを実行する必要があるとしましょう。サーバーに悪影響を与えることはありますか?いいえの場合、512MBのメモリでLinuxサーバーに追加されるcrontabの最大量はいくつですか。

4

1 に答える 1

1

新しいジョブを作成すると、cronデーモンは関数job_addjob.c)を呼び出し、この関数はメモリをジョブに割り当て、ジョブリストの末尾に追加します。ジョブはヒープに割り当てられるため、理論的には、マシンにインストールされているRAMだけで制限されます。

CRONコードからのいくつかのメモ:

仕事の構造:

typedef struct _job {
    struct _job     *next;
    entry           *e;
    user            *u;
} job;

各ユーザーのcrontabエントリは、次のように定義されます。

typedef struct _entry {
        struct _entry   *next;
        uid_t           uid;
        gid_t           gid;
        char            **envp;
        char            *cmd;
        bitstr_t        bit_decl(minute, MINUTE_COUNT);
        bitstr_t        bit_decl(hour,   HOUR_COUNT);
        bitstr_t        bit_decl(dom,    DOM_COUNT);
        bitstr_t        bit_decl(month,  MONTH_COUNT);
        bitstr_t        bit_decl(dow,    DOW_COUNT);
        int             flags;
#define DOM_STAR        0x01
#define DOW_STAR        0x02
#define WHEN_REBOOT     0x04
} entry;

そして、ユーザー構造体:

typedef struct _user {
        struct _user    *next, *prev;   /* links */
        char            *name;
        time_t          mtime;          /* last modtime of crontab */
        entry           *crontab;       /* this person's crontab */
} user;

この構造体は多くのメモリを消費しないことがわかります。動作の実装方法に興味がある場合はcron、ここでコードを見ることができます:cronubuntusource

于 2012-09-06T18:24:36.227 に答える