关于Debian系统中Apache内存占用太高的如何优化

By | 2017年2月3日

这是为debian系统写的,centos和ubuntu可以去网上看更好的文章。

如题,记录今天大战apache的经过,在布置好服务器以后,网易蜂巢经常提醒我服务过载,内存消耗太大,经常就是70%–90%左右,我只是做个博客而已,怎么会消耗这么大,一开始我也没有管,因为我买的服务器只有640MB内存,以为是安装了插件的原因,把插件也停用了,但还是没有什么效果,有时候就是写个文章服务器都会宕机了,还得去蜂巢手动重启,很生气啊,看帖子里有很多是512MB的也不卡,我的怎么这么卡,直到今天再也忍不了了,我决定好好调查一下原因,作为一个程序员,不能被程序玩了啊。这是我一开始服务器的截图,已经又快要崩溃了

然后用命令查了一下,发现果然消耗很大

没办法,只能干了,仔细看,mysql占用最多,但只有一个,而apache开启了10个进程,但是也不能贸然的直接关掉啊,我就先去google了apache内存占用太高怎么办,果然有结果,要去apache下找到httpd.conf文件,然后修改几个apache的参数就ok,然而我在我服务器里找了很久,把所有文件都翻了一遍也没有看到httpd.conf这个文件,很难过啊,再回去看google我发现文章大多是ubuntu下的apache,难道我的不是么,好吧,查一下服务器的系统吧,

好吧,我的果然不是ubuntu,而是debian,这下只能再去google一下debian系统的apache中httpd.conf在那里,竟然没有中文的,然后我打开了一个日文的文章,看了一下好像是/etc/apache2/apache2.conf就是apache的主配置文件,啊啊啊,我早应该想到的,打开看了一下,又懵了,这ubuntu还是不一样,里面有三组参数,没看清,三组都改了,重启服务器,apache直接启动不了了,吓到我了,看了一下日志

没看懂,然后把以前备份的apache2.conf安装上,重启,apache启动了,看来是我改错了,再重新改吧,在这里提醒一下,做这种事情一定要提前备份,不然改错了就完蛋了,就这样我认真的改了两次,终于发现只能修改最后一组,对应的参数改成这样

一定要看好名字,只修改最后一组的这几个参数,重启,发现果然有效果,把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″,子进程将永远不会结束
有兴趣的可以继续研究,这是我参考的两篇文章,

》》》这是那篇日本的文章ぱせらんメモ

》》》apache 在低配置服务器下的优化

下面这篇文章里有对apache服务器其他优化方法的详细介绍,等我服务器内存在不够的时候我会再优化一次。

》》》APACHE内存占用过高解决方案

发表评论

电子邮件地址不会被公开。 必填项已用*标注