之前VPS使用的是默认的Apache配置,感觉还行,不过随着博客的人流量上升,显然这种配置无法满足需求了;下面是Apache官方手册中给出的几条优化配置建议,笔者将其整理出来,对Apache服务器的运行效率是有帮助的。

  1. 控制MaxClients的设置,以避免服务器产生太多的子进程而发生交换。
    进程间的数据交换会占用很大内存,数据交换产生的滞后使用户总感觉”不够快”,所以用户就可能去按”停止”和”刷新”,从而带来更大的负载。一般建议小网站将MaxClients设置为12~24。
  2. 选择更好的硬件,CPU、内存、硬盘等等
    这句很鸡肋啦,如果有更多的银子,谁不愿意换更好的呢?^_^
  3. 定期更新操作系统,打上系统补丁;如果你的操作系统支持sendfile()系统调用,则务必安装带有此功能的版本或补丁
    在支持sendfile的系统中,Apache2可以更快地发送静态内容而且占用较少的CPU时间。
  4. HostnameLookups设置为off
    尽量较少DNS查询的次数。如果你使用了任何”Allow from domain”或”Deny from domain”指令(也就是domain使用的是主机名而不是IP地址),则代价是要进行两次DNS查询(一次正向和一次反向,以确认没有作假)。所以,为了得到最高的性能,应该避免使用这些指令(不用域名而用IP地址也是可以的)。
  5. 为Directory加上FollowSymLinks
    如果网站空间中没有使用 Options FollowSymLinks ,Apache就必须执行额外的系统调用以验证符号连接。例如:在请求”/index.html”时,Apache将对”/www”、”/www/htdocs”、”/www/htdocs/index.html”执行lstat()调用。而且lstat()的执行结果不被缓存,因此对每一个请求都要执行一次。
  6. 将AllowOverride设置为None
    对于使用虚拟主机的朋友可能会觉得不方便,这样设置将会使.htaccess中的设置失效,如果实在需要,并且在有条件的情况下,请在conf配置文件中直接写入rewrite规则
  7. 禁用内容协商
    尽管在实践中,内容协商的好处大于性能的损失,如果你很在意那一点点的性能损失,则可以禁止使用内容协商。但是仍然有个方法可以提高服务器的速度,就是不要使用通配符。
  8. MaxRequestsPerChild设置为非0以防止内存泄漏
    MaxRequestsPerChild用于控制Apache子进程在何时销毁,默认为0,代表永不销毁子进程,这可能会存在内存泄漏的风险,建议设置为10000
  9. KeepAlive与KeepAliveTimeOut
    如果你使用的使mpm_prefork模式(Apache默认安装),那么建议你将KeepAlive设置为off;因为,开启keepalive会为每个客户端建立一个连接,prefork不会创建线程,估计100个用户同时访问你的网站,Apache就会挂了~,如果你实在想开启,那么请将KeepAliveTimeOut 时间设置更短些,例如5,默认是60秒呢
  10. 不要静态编译Apache
    尽管会有很多人和你说静态编译的好处,同时,你自己也想自己编译一把,以体验乐趣~但是,将模块已静态方式编译进Apache绝对不是一个好选择,尤其是对于缺银子的站长们来说,一个配置不当,Apache会在启动时就占用光你所有的内存,最后拖垮服务器~

评论

人好哇! 撰写:

我一直用Apache的Worker模式,所以负载高一点也无所谓。不过MaxRequestsPerChild设置为非0是很必要的,避免泄露内存引发问题,KeepAlive也是一个比较需要权衡的参数。博主所说的都很对!

freemouse 撰写:

Worker模式好处很多,不过,对于小流量的网站,无需太多关心啦。

摘自:http://www.cnphp.info/10-tips-for-optimize-Apache-options.html

最新文章

  1. POMDP
  2. AVLTree 平衡树
  3. Spring Data JPA 的配置文件 已经数据库的状态
  4. Sublime Text 3初阶
  5. 用super daemon xinetd进行安全配置
  6. javascript解析引擎(每天有学习一点篇)
  7. [原创]android自定义动画的一点感悟
  8. java调用c++生成的动态和静态库时遇到的问题
  9. (ASP.net)利用Application对象制作简单聊天室
  10. Swift-开发 # 1.2版本迁移
  11. Git的使用学习资源
  12. 跨浏览器开发:CSS
  13. jmeter 分布式压测(Linux)
  14. 【原创】JAVA面试解析(有赞一面)
  15. word转PDF,PDF转Image,使用oppenOffice注意事项等
  16. Rest模式get,put,post,delete含义与区别
  17. 使用html5 Canvas绘制线条(直线、折线等)
  18. 4、Zookeeper简单介绍
  19. BZOJ2214[Poi2011]Shift——模拟
  20. DevExpress使用方法GridControl总结

热门文章

  1. python基础===获取知乎标题时候,文件编码失败的总结
  2. gcc -rpath 指定动态库路径
  3. go语言爬虫goquery和grequests的使用
  4. C基础 常用设计模式粗解
  5. 辨别苹果数据线真伪 苹果计算器 Dashboard 知识
  6. MACBOOK 总是断网怎么办
  7. mysql innodb 数据表不存在
  8. hihocoder 1177 : 顺子
  9. tk界面版股票下载
  10. LeetCode解题报告—— Combination Sum & Combination Sum II & Multiply Strings