AWS 上 Apache httpd 服务器性能调优

标签: aws apache httpd | 发表时间:2013-02-01 00:19 | 作者:
出处:http://www.iteye.com

最近做了一个网站部署到AWS EC2上,启动之后访问速度奇慢无比,打开静态页面都要等好几分钟,这咋行!于是我开始研究AWS性能调优的问题。

 

开始怀疑是免费的micro instance配置太差,但想想Amazon也不至于这么不靠谱吧?于是ssh上去看了一眼top,里边的进程也没用掉多少CPU和内存,Swap也基本没有,所以基本排除服务器硬件资源不足的问题。

 

再往下就考虑优化一下httpd服务器性能,首先想到的是把所有的静态文件都缓存在内存里,这样可以减少不必要的IO,想必能提高访问速度。于是在Apache的文档里找到这篇<Apache Performance Tuning>: http://httpd.apache.org/docs/2.2/misc/perf-tuning.html ,还有这篇<Caching Guide>: http://httpd.apache.org/docs/2.2/caching.html,看了一遍之后,我认为主要有两个地方值得关注:

 

1. MMapFile 缓存

httpd可以把静态文件缓存到内存里,但是要注意每个子进程都会复制这部分内容,如果缓存的文件过大会导致频繁Swap,反而得不偿失了。所以对ServerLimit,MaxClients这些有关进程数量的参数都要仔细分析计算。具体说明如下:

 

mod_file_cache provides the MMapFile directive, which allows you to have Apache map a static file's contents into memory at start time (using the mmap system call). Apache will use the in-memory contents for all subsequent accesses to this file.

 

MMapFile /usr/local/apache2/htdocs/index.html

 

As with the CacheFile directive, any changes in these files will not be picked up by Apache after it has started.

 

The MMapFile directive does not keep track of how much memory it allocates, so you must ensure not to over-use the directive. Each Apache child process will replicate this memory, so it is critically important to ensure that the files mapped are not so large as to cause the system to swap memory.

 

具体做法是用ssh登陆到服务器,用如下命令生成一个配置文件,把某个静态文件目录(比如说/public/me/project/static/)下所有的文件设置为MMapFile缓存:

 

find /public/me/project/static/ -type f -print \ | sed -e 's/.*/mmapfile &/'
 > /www/conf/mmap.conf

 

然后用mv命令把该文件移到/etc/httpd/conf.d/ 目录下:

sudo mv /www/conf/mmap.conf /etc/httpd/conf.d/

 

在/etc/httpd/conf/httpd.conf里把这两个语句前的注释符号去掉并配置好文件名,启动时加载此配置文件:

#
# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/mmap.conf
.....
LoadModule file_cache_module modules/mod_file_cache.so

 

至此,如果重新启动httpd服务,所有静态文件都会被缓存在内存中了。

 

2. 取消所有没用到的Modules

另外,在httpd.conf里看到,加载了一堆模块都是我用不上的,白白占用了宝贵的内存空间,岂不可恨!所以要把它们一一去掉,不过去掉的时候要小心,别为了提高性能引入了安全漏洞,得一个一个看清楚说明再改。最后我保留的模块只有这么几个:

  • LoadModule file_cache_module modules/mod_file_cache.so
  • LoadModule disk_cache_module modules/mod_disk_cache.so
  • LoadModule cache_module modules/mod_cache.so
  • LoadModule dir_module modules/mod_dir.so
  • LoadModule mime_module modules/mod_mime.so
  • LoadModule include_module modules/mod_include.so
    LoadModule log_config_module modules/mod_log_config.so

现在重新启动httpd,启动过程明显加快了:

sudo service httpd restart

可能会出一些错,说非法命令什么的,这是因为很多模块被取消了,但是配置文件里还在用它提供的配置参数,所以这些参数也不能用了。直接用vim编辑httpd.conf,把涉及非法命令的行都给他注释掉。然后重新启动httpd服务成功。

 

再打开原先慢得像蜗牛的网站,哇!瞬间加载成功!说明这个性能调优的过程还是很成功的,而且我又学会了一招。于是今晚带老婆一起吃了顿全聚德烤鸭以示庆祝。



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [aws apache httpd] 推荐:

AWS 上 Apache httpd 服务器性能调优

- - ITeye博客
最近做了一个网站部署到AWS EC2上,启动之后访问速度奇慢无比,打开静态页面都要等好几分钟,这咋行. 于是我开始研究AWS性能调优的问题. 开始怀疑是免费的micro instance配置太差,但想想Amazon也不至于这么不靠谱吧. 于是ssh上去看了一眼top,里边的进程也没用掉多少CPU和内存,Swap也基本没有,所以基本排除服务器硬件资源不足的问题.

JBoss 系列五十:使用Apache httpd(mod_jk)和JBoss构架高可用集群环境

- - CSDN博客架构设计推荐文章
前面 JBoss 系列二:使用Apache httpd(mod_cluster)和JBoss构架高可用集群环境中我们介绍了企业应用的目的的目的,负载均衡,容错等,并通过Apache httpd(mod_cluster)和JBoss构架高可用集群环境,我们这里在原有的环境中将mod_cluster换成mod_jk,其架构如下图所示:.

AWS云平台系列介绍(一):AWS平台与EC2介绍

- - NOSQL Notes
Amazon平台的产品分为几个部分:. 计算类:包含弹性计算云(EC2)和弹性MapReduce(Elastic MapReduce)这两个产品. EC2几乎可以认为是迄今为止云计算领域最为成功的产品,通俗地将,就是提供虚拟机. EC2的创新在于允许用户根据需求动态改变虚拟机实例的类型及数量,技术上支持容错并在收费模式上支持按使用量付费,而不是预付费.

猜測 AWS ELB 內的架構…

- - Gea-Suan Lin's BLOG
AWS Elastic Load Balancing (ELB) 是 AWS 在雲端上推出的 Load balancer. 在非雲端的架構上會使用 Layer 4 Switch (像是 F5、 Alteon),或是使用 open source 的 HAProxy. 從實驗猜測 ELB 是這樣做的:.

AWS 的 S3 故障回顾和思考

- - 酷 壳 – CoolShell
继 Gitlab的误删除数据事件没几天,“不沉航母” AWS S3 (Simple Storage Service)几天前也“沉”了4个小时,墙外的半个互联网也跟着挂了. 如约,按 AWS 惯例,AWS今天给出了一个简单的故障报告《 Summary of the Amazon S3 Service Disruption in the Northern Virginia (US-EAST-1) Region》.

AWS内部开发和维护技术

- -
云头条导读:IT外媒The Register独家披露了这个云巨头的内部结构和员工实践,经云头条编译分享,供大家参考. 硅谷内外的众多公司已找到了各自的方法来迅速开发和部署功能特性. 不过,互联网巨头亚马逊庞大的云计算部门AWS内部有个特别的消化系统:一个名为Away Teams的概念,这个概念是指为了达到最快速度,接受某些缺点.

AWS OpenSearch 1.0 正式開源釋出

- - Tsung's Blog
AWS 和 Expedia、Netflix 等其他公司合作,建立 Elasticsearch 開放版本(100% Open Source),就是 OpenSearch,OpenSearch 最近公開釋出囉~. OpenSearch Release 的官方新聞:. AWS OpenSearch 1.0 正式開源釋出.

2016 AWS Re:Invent 大会上,AWS又发布了哪些让人惊艳的创新?

- - 知乎每日精选
由于工作的关系,最近一直跟亚马逊的若干平台打交道,对这个公司产生了极大的兴趣和关注,也刚刚看完了其老板的最新自传《The Everything Store | 万物商店》. 于是这次re:Invent大会自然不能错过,今天花两个半小时时间完整的看完了AWS的CEO Andy Jassy在re:Invent 2016上的Key Note (2016 AWS re:Invent Keynote Andy Jassy https://www.youtube.com/watch?v=8RrbUyw9uSg ).

Apache Shiro 介绍

- - CSDN博客推荐文章
什么是Apache Shiro?. Apache shiro 是一个强大而灵活的开源安全框架,可清晰地处理身份认证、授权、会话(session)和加密. Apache Shiro最主要的初衷是为了易用和易理解,处理安全问题可能非常复杂甚至非常痛苦,但并非一定要如此. 一个框架应该尽可能地将复杂的问题隐藏起来,提供清晰直观的API使开发者可以很轻松地开发自己的程序安全代码.

Apache Derby Papers

- -
Derby Type System (Note: if your browser shows HTML source for this page instead of displaying it, save the file locally with . It will prompt you to click on "Grant license to ASF for inclusion in ASF works", and this is the permission we need in place to host your contribution on the Derby web site..