当前位置 主页 > 服务器问题 > Linux/apache问题 >

    解决Apache出现httpd消耗内存问题的方案

    栏目:Linux/apache问题 时间:2019-06-28 16:20

      不知道在各位使用Apache时有没有出现httpd一直在吃内存,只要有人访问,服务器的内存就会小一点,慢慢的就会被吃掉所有内存,其实这是内存泄漏问题,因为服务器的内存本身就小,而Apache的默认配置对小内存服务器还是有些不兼容的,所以就会出现类似的问题,下面就分析一下这个问题的解决办法。
      配置Apache:
      在Apache的配置文件中找到以下配置:
      模式1
      模式2
      上面是Apache的两种模式,一般都是第一种prefork,所以以第一种为例。
      参数介绍:startServers是当apache开启的时候创建的进程数,MinSpareThreads是最小的空闲进程数,MaxSpareThreads是最大的空闲进程数,apache会努力的将空闲进程保存在这两者之间,ServerLimit是最大限制的请求并发数,用来限制MaxClients,只要不超过这个数值即可,MaxRequestPerChild是最大子进程请求数,当进程请求数达到这个数值之后就apache就会销毁该进程。
      红色字体部分是重点,网上好多地方说可以设置的大一点,但是我测试过了,设置在1000+之后服务内存反而消耗的更快,所以在小内存服务器上最好设置为30-50之间,当然,如果是牛逼的服务器完全不用考虑这一点,设置为0或者1000+都可以,但是不建议设置为0,如果设置为0则代表不释放线程内存,因为不知道apache啥时候可能出现内存泄漏,所以还是不要设置为0。
      通过以上方法就可以解决httpd一直消耗内存的问题了。