首页 > 开发 > Apache > 正文

apache吃内存的问题该如何解决

2020-07-28 15:02:47
字体:
来源:转载
供稿:网友
  要解决Apache吃内存的问题,就要先配置好Apache,在Apache的配置文件中找到以下配置
  模式1
  [cce_xml]
  <IfModule prefork.c>
  StartServers      8   #数量的服务器进程开始
  MinSpareServers   5  #最小数量的服务器进程,保存备用
  MaxSpareServers   20  #最大数量的服务器进程,保存备用
  ServerLimit      256      #进程的线程数
  MaxClients       256      #最大请求并发数,同上值相等即可
  MaxRequestsPerChild 30  #最大子进程请求数
  </IfModule>
  模式2
  [cce_xml]
  <IfModule worker.c>
  StartServers         2
  MaxClients         500
  MinSpareThreads     25
  MaxSpareThreads     75
  ThreadsPerChild     25
  MaxRequestsPerChild 30
  </IfModule>
  上面是Apache的两种模式,一般都是第一种prefork,所以以第一种为例。
  参数介绍:startServers是当apache开启的时候创建的进程数,MinSpareThreads是最小的空闲进程数,MaxSpareThreads是最大的空闲进程数,apache会努力的将空闲进程保存在这两者之间,ServerLimit是最大限制的请求并发数,用来限制MaxClients,只要不超过这个数值即可,MaxRequestPerChild是最大子进程请求数,当进程请求数达到这个数值之后就apache就会销毁该进程。
  数字及数字后面部分是重点,网上好多地方说可以设置的大一点,但是我测试过了,设置在1000+之后服务内存反而消耗的更快,所以在小内存服务器上最好设置为30-50之间,当然,如果是牛逼的服务器完全不用考虑这一点,设置为0或者1000+都可以,但是不建议设置为0,如果设置为0则代表不释放线程内存,因为不知道apache啥时候可能出现内存泄漏,所以还是不要设置为0。
  通过以上配置的调整是可以解决httpd一直消耗内存的问题的。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表