Apache最大连接数设置

上周有一次公司一个服务器有问题,跟系统部一起调试,留下了一些关于Apache服务器最大连接数设置的经验。把其中干货记录一下。

现象是,

  • uptime中系统负载极高
  • vmstat的cpu数据中,idle为0,sys占用大部分cpu,又是有wa
  • vmstat的swap数据中出现大量的si/so,vmstat的IO量激增
  • free,内存耗尽
  • 分析:Apache连接数达到上限后服务器物理内存用尽,导致大量的内存和磁盘交换,进而导致CPU负载上升,服务器整体响应下降。

解决方法,

  • 将这台服务器的apache最大连接数设低,保证进来的请求都处理好。(估算一个机器该设置多少apache连接见下面)
  • 新增一台内存更大的服务器跑apache
  • 将不同的业务分散到两天机器上

根据内存估算服务器apache最大连接数设置的方法:

  1. ps aux|grep httpd,先看看每个apache进程消耗的内存是否平均(第六列)
  2. ps aux|grep -v grep|awk ‘/httpd/{sum+=$6;n++};END{print sum/n}’,计算每个apache连接平均耗多少内存
  3. 最大连接数 = (物理内存/单apache进程平均内存)*2,这个设置比较保守,据说可以设到“*3”。看实践。

影响apache连接数设置的还有:CPU、服务器上的其他服务、网络IO、磁盘IO、系统网络连接数限制等等,每个都可能是瓶颈。连接数上限应取上述参数中短板的数值。

附:vmstat的数据说明

Related posts

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>