psコマンドで確認すると、apacheが起動に伴っての/usr/sbin/rotatelogs /var/log/httpd/error_log.%Y%m%d 86400 540、

/usr/sbin/rotatelogs /var/log/httpd/ssl_8444_access_log.%Y%m%d 86400 540、
/usr/sbin/rotatelogs /var/log/httpd/ssl_8444_request_log.%Y%m%d 86400 540
などのプロセスが20個ほど常に起動しています。
その影響でpsコマンド出力のVIRT RESの合計メモリで150Mほど常に食っています。

logrotateは、/etc/cron.dailyで4時2分起動で設定されています。
/var/lib/logrotate.statusには、これらの20個ほどのプロセスと同じものが存在します。

この/usr/sbin/rotatelogsプロセスは/etc/cron.dailyで動く時間以外にも待機プロセスと複数起動するものなのでしょうか。

このメモリ消費を減らしたいと思っておりまして、待機プロセスとして起動させない事など出来るものでしょうか。

何卒ご教示頂けますと幸いです。

よろしくお願い致します。

回答の条件
  • URL必須
  • 1人10回まで
  • 登録:2010/01/15 22:51:55
  • 終了:2010/01/17 18:38:42

ベストアンサー

id:pmakino No.4

まきのっぴ回答回数352ベストアンサー獲得回数282010/01/16 09:06:45

ポイント43pt

rotatelogs のプロセスは httpd.conf で指定した数だけ起動、常駐します。なのでそういうものです。

また、rotatelogs を使う場合は logrotate は不要です。どちらかだけで良いです。cron.daily や logrotate と rotatelogs は全く関係ありません。

rotatelogs のプロセスが気になるようでしたら、rotatelogs を使うのをやめて logrotate にローテーションさせる状態 (Apache のデフォルト) に戻せば良いです。

(今やっているような、日毎にきれいにログを分割することを実現するのは logrotate ではちと面倒ですが。)

http://q.hatena.ne.jp/1200448522 も参考になるかもしれません。

id:takahiro-san

ご回答ありがとうございます。

rotatelogs のプロセスは httpd.conf で指定した数だけ起動、常駐しますとのことですが、

それは、httpd.confの中の

<IfModule prefork.c>

MinSpareServers 1

MaxSpareServers 2

MinSpareServers で指定した待機プロセスの数の分だけ起動常駐するとのことでしょうか

よろしくお願い致します。

2010/01/17 11:25:31

その他の回答(5件)

id:horonict No.1

horonict回答回数257ベストアンサー獲得回数512010/01/15 23:06:35

ふつうはlogrotateだけで十分でしょう。

rotatelogsを止めるには、"httpd.conf"で設定します。下記をご覧ください。

http://www.atmarkit.co.jp/flinux/rensai/apache14/apache14a.html

id:ayakasi08 No.2

ayakasi08回答回数172ベストアンサー獲得回数62010/01/15 23:19:19

>複数起動するものなのでしょうか。

そうです。

http://q.hatena.ne.jp/answer

id:kick_m No.3

kick_m回答回数1372ベストアンサー獲得回数542010/01/15 23:18:32

たぶん/var/log/httpdあたりのディレクトリがrotateの権限では書き込めないようになって終わらないのだと思います。ディレクトリとrotateの起動権限を見直してください。http://www

id:pmakino No.4

まきのっぴ回答回数352ベストアンサー獲得回数282010/01/16 09:06:45ここでベストアンサー

ポイント43pt

rotatelogs のプロセスは httpd.conf で指定した数だけ起動、常駐します。なのでそういうものです。

また、rotatelogs を使う場合は logrotate は不要です。どちらかだけで良いです。cron.daily や logrotate と rotatelogs は全く関係ありません。

rotatelogs のプロセスが気になるようでしたら、rotatelogs を使うのをやめて logrotate にローテーションさせる状態 (Apache のデフォルト) に戻せば良いです。

(今やっているような、日毎にきれいにログを分割することを実現するのは logrotate ではちと面倒ですが。)

http://q.hatena.ne.jp/1200448522 も参考になるかもしれません。

id:takahiro-san

ご回答ありがとうございます。

rotatelogs のプロセスは httpd.conf で指定した数だけ起動、常駐しますとのことですが、

それは、httpd.confの中の

<IfModule prefork.c>

MinSpareServers 1

MaxSpareServers 2

MinSpareServers で指定した待機プロセスの数の分だけ起動常駐するとのことでしょうか

よろしくお願い致します。

2010/01/17 11:25:31
id:pmakino No.5

まきのっぴ回答回数352ベストアンサー獲得回数282010/01/17 13:27:22

ポイント33pt

> MinSpareServers で指定した待機プロセスの数の分MinSpareServers で指定した待機プロセスの数の分だけ起動常駐するとのことでしょうか

いえ、CustomLog や ErrorLog 等で rotatelogs を使うと指定した回数分です。

httpd.conf を rotatelogs で grep して出てきた行数分と言ってもいいかもしれません。

rotatelogs を使うのをやめて logrotate に身を任せれば0にできます。

http://q.hatena.ne.jp/answer

id:takahiro-san

なるほど。

了解しました。

あと、1点、質問させてください。

/etc/httpd/conf.d/ssl.confにあります、ssl_request_logの設定で

ログファイルがssl_request_logの表示しか出力されていません。

検索してみますと、

CustomLog "logs/ssl_request_log.%Y%m%d" \

"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"のような記述がありますが、

私の設定のconfでは、CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/ssl_31082_request_log.%Y%m%d 86400 540" ssl_request_logの

"ssl_request_log"で出力指定しているためでよろしいでしょうか。

お手数お掛けしますが、よろしくお願い致します。

2010/01/17 14:11:45
id:pmakino No.6

まきのっぴ回答回数352ベストアンサー獲得回数282010/01/17 17:05:20

ポイント34pt

> 私の設定のconfでは、CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/ssl_31082_request_log.%Y%m%d 86400 540" ssl_request_logの

> "ssl_request_log"で出力指定しているためでよろしいでしょうか。

そうですね、そのためだと思います。

http://q.hatena.ne.jp/answer

id:takahiro-san

大変、ありがとうございました。

とても、参考になりました。

2010/01/17 18:34:41
  • id:b-wind
    lotatelogs と logrotate を混同しているね。
    名前は似ているがそれぞれまったく別のアプリケーションで連携もしていない。
    いまどきの Linux なら logrotate に統一したほうが楽だし、情報も多い。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません