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

Debian 6.0新特性

Debian 宣布下一代 stable 版 Debian 6.0 Squeeze 进入冻结。这标志着 Debian 6 Squeeze 不会再加入新特性,工作重点将转移到改进稳定版本的质量上来。

既然Debian 6.0的特性列表冻结了,那么我就来列一下Debian 6.0的新特性吧:

  • linux内核版本:2.6.32
  • 桌面环境:KDE 4.4.5, Gnome 2.30.0, LXDE 0.5.0, XFCE 4.6.2, X.org 7.5, OpenOffice.org 3.2.1
  • Apache版本:2.2.16
  • 编程语言:PHP 5.3.2, Python 2.6, Python 3.1, Perl 5.1
  • Gcc:4.4
  • 数据库:MySQL 5.1.48, PostgreSQL 8.4.4

BTW1:Debian给每一个版本起一个名字,让使用者无端增加了记忆成本。Debian 6.0叫Squeeze。

BTW2:Debian是我用的最顺的Linux系统。

Related posts

网址缩短站程序yourls.org的安装配置

安装需求:

  • apache:enable mod_rewrite, apache要加载了mod_rewrite
  • apache:AllowOverride All, yourls需要自己的.htaccess,apache要允许加载它
  • php
  • mysql

安装配置过程:

  • 主要过程从略。官方文档,以及自带的readme.html里都说的非常清楚了。
  • 我出现的一个问题是:完成安装后浏览器再次访问http://yoursite/admin/目录,没有看到后台,而是安装成功的页面,困扰了我一下。原因是浏览器缓存。
  • cp sample-public-front-page.php.txt index.php,这样你的网站就有一个开放给所有用户的前台了。

样例:

Related posts

Tomcat7.0新特性

今天看到Apache发布了Tomcat 7.0,心中竟有一丝唏嘘 — 原来赖以谋生、每日厮混的Tomcat现在自己竟然如此不在意了,beta都发布了才想着去看它的新特性。摘录几个Tomcat 7.0的新特性吧:

  • Servlet 3.0:有不少新的有趣的东西,比如我比较感兴趣的:异步处理、Servlet可动态部署、内建文件上传支持。还有我不太感兴趣的:注释替代配置、插件体系。详见这里
  • JSP 2.2、EL 2.2
  • 增加了web application内存泄露的检测和防护。

详见:tomcat 7.0 change log

Related posts