Monit经常重启apache2,基于我的apache2节中的totalmem> 200mtesting。 我不确定我是否真的有问题,或者如果我应该在我的监控configuration中增加totalmemtesting。
这个configuration是好的,直到我们添加了第二个WordPress的网站,当apache2开始触发monit totalmem> 200米条件。 在开始考虑第二个wordpress站点的特殊构build之前,我想知道是否我不应该在monittesting中增加总的限制,然后继续。
我的mont节apache2服务器是从monit安装教程中复制的。 我认为这是一个合理的价值开始,并认为如果我碰到一个Apache内存问题,我会确定一个特定的值为我的特定服务器。 那么现在我已经遇到了这个问题,弄清楚这个价值应该是多less,已经certificate比我想象的更具挑战性。 我还没有find任何东西告诉我如何确定一个特定的服务器configuration应该是什么值。
主机是运行Ubuntu服务器10.04LTS的VPS。 Apache2正在运行一个调查应用程序(mod_php5),两个单独的wordpress安装(mod_php5)和一个Redmine(mod_passenger)的分支。 我们开始设置webdav,用于公司内部的文件共享,但实际上并没有使用它。 [注:我知道(现在),我可以通过切换到REE而不是使用ruby1.8来节省内存。]
服务器获得的stream量非常低 – 每小时约20个页面浏览量,除了机器人和随机黑客嗅探之外的所有应用程序,在可预见的未来不大可能超过每小时1000页面浏览量。 以下是详细信息:
$ free -m
caching总共使用的空闲共享缓冲区
Mem:496 354 142 0 39 100
- / + buffers / cache:214 282
交换:1023 6 1017
top - 17:36:27 up 34 days,2:23,2 users,load average: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免费,103028kcaching PID用户PR NI VIRT RES SHR S%CPU%MEM时间+命令 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根20 0 199m 12m 7368 S 0 2.6 0:43.30 apache2 10289根20 0 46500 9680 1516 S 0 1.9 7:23.87ruby1.8 10292没有人20 0 72376 3656 2888 S 0 0.7 0:00.66 PassengerLoggin 19385根20 0 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根20 0 97808 2164 1896 S 0 0.4 0:02.19 PassengerHelper 10282根20 0 23512 1908 1648 S 0 0.4 0:00.01乘客观看 25370根20 0 105m 1876 1260 S 0 0.4 3:58.88 19400 hostexsa 20 0 81348 1784 912 S 0 0.4 0:00.25 sshd 3616根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 top
:/etc/monit/conf.d $ cat apache2.conf
用pidfile /var/run/apache2.pid检查进程apache2
启动程序=“/etc/init.d/apache2 start”超时20秒
停止程序=“/etc/init.d/apache2停止”
如果cpu大于60%2个周期,然后重新启动
如果CPU> 80%5个周期,然后重新启动
如果totalmem> 200.0 MB 5个周期,然后重新启动
如果孩子> 250,然后重新启动
如果loadavg(5min)大于10 8个周期,则停止
如果3在5个周期内重新启动,则超时
如果失败主机sub.example.net端口80协议http
并请求“/ monit / token”然后重新启动
组服务器
$ / usr / sbin / apache2 -v 服务器版本:Apache / 2.2.14(Ubuntu) 服务器构build:十一月18 2010 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.load setenvif.load authz_groupfile.load deflate.conf passenger.conf status.conf authz_host.load deflate.load passenger.load status.load authz_user.load dir.conf php5.conf autoindex.conf dir.load php5.load
从我的apache2.conf:
保持活跃
MaxKeepAliveRequests 100
KeepAliveTimeout 10
StartServers 1
MinSpareServers 1
MaxSpareServers 5
MaxClients 50
MaxRequestsPerChild 5000
:/etc/mysql/conf.d$ cat mysqld_small_footprint.cnf allowed_packet = 1M thread_stack = 64K table_cache = 4 sort_buffer = 64K net_buffer_length = 2K 跳跃式的InnoDB
UPDATE
刚刚在这篇文章中find了以下基本的apache服务器调优指南,它提供了我一直在寻求的那种指导。 例如:
为了获得最佳性能,您需要调整Apache的MaxClients设置,以便Apache可以消耗不超过70%的可用物理内存。 任何更高的,你的风险箱开始沉浸到交换空间,这将大大增加IO和CPU等待,可以很容易地导致服务器下降到膝盖。
本身,使用超过200MB的内存不一定是你的Apache服务器的问题。 但我认为你只需要弄清楚你的设置是可以接受的。
如果这个VPS上没有其他的东西,我认为允许apache超过200M作为上限是安全的。
如果您有足够的时间和专业知识,您当然可以find方法来减less这个数字,但是如果您只是提高了监控门槛,而不是继续重新启动,那么效率可能会更高。 对于所有你知道的,它可能稳定在201MB的使用权,(不太可能,但你看我的观点)。
如果我在你的鞋子,我不认为有一个偶尔重新启动apache是可以接受的…稳定性是可取的…比在服务器上可用的任意数量的可用RAM更多。