web-dev-qa-db-ja.com

MonitはApache2を再起動していますが、monit構成またはサーバー構成を修正する必要がありますか?

私のApache2スタンザでのtotalmem> 200mテストに基づいて、MonitはApache2を頻繁に再起動しています。実際に問題があるかどうか、またはmonit構成でtotalmemテストを増やす必要があるかどうかはわかりません。

この構成は、Apache2がmonit totalmem> 200m条件のトリガーを開始したときに、2番目のwordpressサイトを追加するまでは問題ありませんでした。 2番目のwordpressサイトの特定の構築を検討する前に、monitテストでtotalmem制限を増やすだけではいけないかどうかを理解し、次に進みたいと思います。

Apache2サーバーのmonitスタンザは、monitインストールチュートリアルからコピーされました。最初は妥当な値であると考え、Apacheのメモリの問題が発生した場合は、特定のサーバーの特定の値を決定すると考えました。さて、今私は問題にぶつかりました、そしてその価値がどうあるべきかを理解することは私が予想したより難しいことが証明されました。特定のサーバー構成でその値がどうあるべきかを理解する方法を教えてくれるものは何も見つかりませんでした。

ホストは、Ubuntuサーバー10.04LTSを実行しているVPSです。 Apache2は、調査アプリ(mod_php5)、2つの単一のwordpressインストール(mod_php5)、およびRedmineのフォーク(mod_passenger)を実行しています。企業内ファイル共有用にwebdavのセットアップを開始しましたが、実際には使用していません。 [注:Ruby1.8を使用する代わりにREEに切り替えることでメモリを節約できることを(今は)知っています。]

サーバーのトラフィックは非常に少なく、ボットとランダムハッカースニッフィングを除くすべてのアプリで1時間あたり最大20ページビューであり、近い将来、1時間あたり1000ページビューを超えることはほとんどありません。詳細は次のとおりです。

 $ free -m 
キャッシュされた使用済み空き共有バッファーの合計
 Mem:496354142 0 39100 
-/ + buffers/cache:214 282 
スワップ:1023 6 1017 
トップ-17:36:27アップ34日、2:23、2ユーザー、平均負荷:0.00、0.00、0.00 
タスク:合計69、実行中1、スリープ中68、停止中0、 0ゾンビ
 CPU:0.2%us、0.1%sy、0.0%ni、99.7%id、0.0%wa、0.0%hi、0.0%si、0.0%st 
 Mem:合計508272k、使用済み362944k、空き145328k、バッファ40448k 
スワップ:合計1048572k、使用済み6284k、空き1042288k、キャッシュ103028k 
 
 PIDユーザーPRNI VIRT RES SHR S%CPU% MEM TIME + COMMAND 
 15257 www-data 20 0 228m 37m 4472 S 0 7.5 0:01.20 Apache2 
 15258 www-data 20 0 225m 34m 4580 S 0 6.9 0:00.76 Apache2 
 14680 www-data 20 0 224m 33m 4560 S 0 6.7 0:00.79 Apache2 
 19146 www-data 20 0 222m 33m 3900 S 0 6.7 0:00.75 Apache2 
 15255 www-data 20 0 222m 32m 3780 S 2 6.6 0:00.60 Apache2 
 19733 mysql 20 0 160m 31m 6396 S 0 6.4 0:00.34 mysqld 
 9379ルート200 199m 12m 7368 S 02。 6 0:43.30 Apache2 
 10289 root 20 0 46500 9680 1516 S 0 1.9 7:23.87 Ruby1.8 
 10292 nobody 20 0 72376 3656 2888 S 0 0.7 0:00.66 PassengerLoggin 
 19385ルート200 81348 3552 2680 S 0 0.7 0:00.04 sshd 
 19401 hostexsa 20 0 19556 2256 1592 S 0 0.4 0:00.10 bash 
 10287ルート200 97808 2164 1896 S 0 0.4 0: 02.19 PassengerHelper 
 10282 root 20 0 23512 1908 1648 S 0 0.4 0:00.01 PassengerWatchd 
 25370 root 20 0 105m 1876 1260 S 0 0.4 3:58.88 monit 
 19400 hostexsa 20 0 81348 1784 912 S 0 0.4 0:00.25 sshd 
 3616 root 20 0 245m 1700 1152 S 0 0.3 0:00.21 console-kit-dae 
 19926 hostexsa 20 0 19248 1220 932 R 0 0.2 0:00.05上
:/ etc/monit/conf.d $ cat Apache2.conf 
プロセスApache2をpidfile/var/run/Apache2.pid 
 start program = "/ etc/initで確認します.d/Apache2 start "with timeout 20 seconds 
 stop program =" /etc/init.d/Apache2 stop "
 
 CPUが2サイクルで60%を超える場合再起動
 cpu> 80%の場合は5サイクル、再起動
 totalmem> 200.0 MBの場合は5サイクル、再起動
子供> 250の場合は再起動
 if loadavg( 5分)10を超えて8サイクル、停止
 3が5サイクル以内に再起動した場合、タイムアウト
 
失敗した場合ホストsub.example.netポート80プロトコルhttp 
 「/ monit/token」をリクエストしてから再起動します
 
グループサーバー
 $/usr/sbin/Apache2 -v 
サーバーバージョン:Apache/2.2.14(Ubuntu)
サーバー構築:2010年11月18日21:19:09 
 
/etc/Apache2/mods-enabled $ ls 
 alias.conf autoindex.load env.load reqtimeout.conf 
 alias.load cgi.load mime.conf reqtimeout.load 
 auth_basic.load dav_fs.conf mime.load rewrite.load 
 authn_file.load dav_fs.load negotiation.conf setenvif.conf 
 authz_default.load dav.load negotiation.loadsetenvif。 load 
 authz_groupfile.load deflate.confpassenger.conf status.conf 
 authz_Host.load deflate.loadpassenger.load status.load 
 authz_user.load dir.conf php5.conf 
 autoindex.conf dir.load php5.load 

私のApache2.confから:

 KeepAlive On 
 MaxKeepAliveRequests100 
 KeepAliveTimeout 10 
 
 
 StartServers 1 
 MinSpareServers 1 
 MaxSpareServers 5 
 MaxClients 50 
 MaxRequestsPerChild 5000 
 
:/ etc/mysql/conf.d $ cat mysqld_small_footprint.cnf 
 allowed_pa​​cket = 1M 
 thread_stack = 64K 
 table_cache = 4 
 sort_buffer = 64K 
 net_buffer_length = 2K 
 skip-innodb 

[〜#〜]更新[〜#〜]

次のガイドラインを見つけました 基本的なApacheサーバーのチューニングに関するこの記事で それはまさに私が探していた種類のガイダンスを提供します。例えば:

最適なパフォーマンスを得るには、ApacheのMaxClients設定を微調整して、Apacheが使用可能な物理メモリの70%を超えないようにする必要があります。これより高くなると、ボックスがスワップスペースに大きく浸り始めるリスクがあります。これにより、IOが大幅に増加し、CPUの待機時間が長くなり、サーバーが簡単に倒れる可能性があります。

3
marfarma

それ自体で、200MBを超えるRAMを使用することは、Apacheサーバーにとって必ずしも問題ではありません。しかし、何が許容できるかを理解する必要があると思いますセットアップ。

そのVPSに他に何もない場合は、上限として200Mを超えるApacheを許可しても安全だと思います。

時間とノウハウがあれば、その数を減らす方法を確実に見つけることができますが、監視のしきい値を上げて再起動を続けない方が効率的かもしれません。ご存知のとおり、201MBの使用量で安定する可能性があります(可能性は低いですが、私の主張はわかります)。

もし私があなたの立場にあったとしたら、Apacheを時々再起動することは受け入れられないと思います...安定性が望ましいです...任意の量の空き容量よりもそうですRAMサーバーで利用できます。

3
DictatorBob