这是为debian系统写的,centos和ubuntu可以去网上看更好的文章。
如题,记录今天大战apache的经过,在布置好服务器以后,网易蜂巢经常提醒我服务过载,内存消耗太大,经常就是70%--90%左右,我只是做个博客而已,怎么会消耗这么大,一开始我也没有管,因为我买的服务器只有640MB内存,以为是安装了插件的原因,把插件也停用了,但还是没有什么效果,有时候就是写个文章服务器都会宕机了,还得去蜂巢手动重启,很生气啊,看帖子里有很多是512MB的也不卡,我的怎么这么卡,直到今天再也忍不了了,我决定好好调查一下原因,作为一个程序员,不能被程序玩了啊。这是我一开始服务器的截图,已经又快要崩溃了
然后用命令查了一下,发现果然消耗很大
1 2 3 |
#free m #top |
没办法,只能干了,仔细看,mysql占用最多,但只有一个,而apache开启了10个进程,但是也不能贸然的直接关掉啊,我就先去google了apache内存占用太高怎么办,果然有结果,要去apache下找到httpd.conf文件,然后修改几个apache的参数就ok,然而我在我服务器里找了很久,把所有文件都翻了一遍也没有看到httpd.conf这个文件,很难过啊,再回去看google我发现文章大多是ubuntu下的apache,难道我的不是么,好吧,查一下服务器的系统吧,
1 2 3 4 |
# head -n 1 /etc/issue 结果: Debian GNU/Linux 7 \n \l |
好吧,我的果然不是ubuntu,而是debian,这下只能再去google一下debian系统的apache中httpd.conf在那里,竟然没有中文的,然后我打开了一个日文的文章,看了一下好像是/etc/apache2/apache2.conf就是apache的主配置文件,啊啊啊,我早应该想到的,打开看了一下,又懵了,这ubuntu还是不一样,里面有三组参数,没看清,三组都改了,重启服务器,apache直接启动不了了,吓到我了,看了一下日志
1 2 3 4 5 6 |
apache2: apr_sockaddr_info_get() failed for blog-923452-9d04bc01-f63fj apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName apache2: apr_sockaddr_info_get() failed for blog-923452-9d04bc01-f63fj apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName Restarting web server: apache2. |
没看懂,然后把以前备份的apache2.conf安装上,重启,apache启动了,看来是我改错了,再重新改吧,在这里提醒一下,做这种事情一定要提前备份,不然改错了就完蛋了,就这样我认真的改了两次,终于发现只能修改最后一组,对应的参数改成这样
1 2 3 4 5 6 |
* StartServers 1 * MinSpareServers 1 * MaxSpareServers 5 * ServerLimit 10 * MaxClients 10 |
一定要看好名字,只修改最后一组的这几个参数,重启,发现果然有效果,把apache启动的子进程数改小了以后只启动了几个,看图
内存少了100多MB,很开心,网站也快了些,没有那么卡了,
就这样,我的apache终于弄好了,关于修改的apache参数的含义有必要发一下,毕竟是学计算机的
这几个参数意思如下:
- StartServers 8
- 启动时默认启动的进程数
- MinSpareServers 5
- MinSpareServers指令设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以第一秒一个,第二秒两个,第三秒四个,按指数递增个数的速度产生新的子进程(最大32个/秒)。
- MaxSpareServers 10
- MaxSpareServers指令设置空闲子进程的最大数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。
- ServerLimit 256
- 配置的apache最大的并发响应数,对应的是apache的进程数
- MaxClients 256
- 设定Apache可同时处理的请求数量
- MaxClients不得大于ServerLimit参数。
- MaxRequestsPerChild 4000
- 每个子进程理多少个请求后将自动销毁。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为”0″,子进程将永远不会结束