web-dev-qa-db-ja.com

サービスを再起動するCrontab

AWS EC2マイクロインスタンスでウェブサーバーを実行しています。インスタンスのRAMは最大630MBです。時間の経過とともに、いくつかのhttpdプロセスがあり、空きRAMはほとんどありません。 httpdサービスを再起動すると、約350MBのRAMが解放されます。

Rootの下でcronジョブを使用して、これを12時間ごとに自動化することを考えました。私のスクリプトには次のコードが含まれています

service httpd restart
service mysqld restart
ps aux
free -m

私がcronスクリプトを試すのはこれが初めてです。

ps auxおよびfree -mの予想される出力が記載された電子メールを受信しましたが、

./scriptName.sh: line 1: service: command not found
./scriptName.sh: line 2: service: command not found

再起動コマンド用。

スクリプトはルートとして実行されました。 Sudoを使用すると、スクリプトがハングする可能性があります。 psの出力からの関連する行-

root     14664  0.0  0.2 142200  1720 ?        S    22:41   0:00 CROND
root     14665  0.0  0.2   9296  1236 ?        Ss   22:41   0:00 /bin/sh -c ./scriptName.sh
smmsp    14667  0.0  0.6  76020  4244 ?        R    22:41   0:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root     14669  0.0  0.1  11244  1008 ?        R    22:41   0:00 ps aux

サービスを正常に再開するために正しいことは何ですか?

このようなことをすることもお勧めですか?

free -mの出力

             total       used       free     shared    buffers     cached
Mem:           596        573         23          0          8         71
-/+ buffers/cache:        493        103
Swap:            0          0          0
5
Lord Loh.

主な問題は、cronの実行環境で適切な$PATHが定義されていないため、これを機能させるにはserviceへの完全パスを使用する必要があることです。

このパスは、which serviceのようなものを出力するコマンド/usr/sbin/serviceで確認できます。

二次的な問題:私はそれをしません、本番システムでサービスを盲目的に再起動することは決して良い考えではありません。あなたは実際のメモリ/パフォーマンスの問題を抱えていますか、それともあなたのRAMはバッファなどで使い果たされているだけかもしれません( http://www.linuxatemyram.com/ )?

数時間後のfree -mの出力を質問に追加してください。

13
Sven

自作のcronスクリプトを実行するのではなく、Monitのようなものを見る方がよい場合があります。

Apacheの設定例は次のとおりです。

http://mmonit.com/wiki/Monit/ConfigurationExamples#Apache

あなたは次のようなことができるはずです:

if totalmem > 300 MB for 2 cycles then alert

apacheブロックで。

MonitはRPMリポジトリの1つにある必要があります。

3
cjc

あなたはこれを間違った方法で行っていると思います。まず、Apacheのチューニングを調べてください。次に、Linuxのメモリ管理について調べます。 RAMを使用してサーバーが欲しいのですが、それ以外の理由は何ですか?

2
Publiccert

なぜRAMを解放したいのですか? free ramは無駄なRAMです。キャッシュメモリを空きRAMとして数えないことにより、空きRAMの量を誤って計算している( linuxatemyram.com を参照)か、Apacheが使用するメモリが少なくなるように、少数のMaxClientsに対してApacheを調整する必要があります。

0
stew