`
mtnt2008
  • 浏览: 369411 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

谈谈Apache的优化[转]

阅读更多

 

今天说说Apache的优化。为什么要优化?因为服务器资源不够用。 资源有很多方面,但根据木

 

桶理论,只要有一种资源不够用, 整个服务器的性能就会受到影响(所谓瓶颈)。

 

服务器资源

 

那么服务器的资源包括哪些?对于网站来说主要是CPUTCP连接数 这两者。 CPU表现在任务

 

数上,在Linux下使用平均负载 (loadavg)来衡量。 可通过以下命令来查看(参考这篇文章 ):

 

cat /proc/loadavg

对于单CPU的服务器,loadavg高于1,表明任务队列出现了等待,CPU忙不过来了。 超过2以

 

上就会明显感到性能降低了。

 

TCP连接数可通过以下命令查看:

 

netstat -ant | grep :80 | wc -l 

如果要实时监控服务器资源,可参考OpenNMS 项目。

 

注1:内存不算,低廉的价格使得网站服务器很少有因为内存不够而down掉的。
注2:CPU%是瞬时的CPU使用率,通常无法反映出整体负载。

 

 

Apache配置命令

 

Apache在资源方面的配置命令主要有以下几条。

 

KeepAlive 是否允许持续连接
MaxKeepAliveRequests 允许的持续连接的最大数
KeepAliveTimeout 持续连接在没有请求多少秒后切断
StartServers 最初启动时启动多少个服务器进程
MinSpareServers 空闲服务器进程的最小数
MaxSpareServers 空闲服务器进程的最大数
MaxRequestsPerChild 每个子进程处理的最大请求数

 

KeepAlive

前三个KeepAlive相关的指令用来设置持续连接。 通常都是每个HTTP请求对应一个TCP连接,但对于一个包含许多图片的网页来说, 客户端会在瞬间发出多个HTTP请求,此时多次建立TCP连接会大大降低响应速度。 此时通过持续连接,可以允许用户在一个TCP连接中发出多个HTTP请求, 减少TCP连接建立次数,提高响应速度。

这种情况下,应当通过access_log统计出连续HTTP请求出现的次数、间隔时间、访问量, 以确定 MaxKeepAliveRequests 和 KeepAliveTimeout 的值。 KeepAliveTimeout 太小发挥不了持续连接的作用;太大了,持续连接迟迟不断, 浪费TCP连接数不说,更糟糕的是系统中的 httpd 进程数目会因此不断增加, 使得系统负载升高,甚至会导致服务器失去响应。

但是在处理动态网页请求时,由于用户很少会瞬间请求多个动态网页 (一般都是打开页面之后阅读好半天才点下一页), 此时打开KeepAlive无异于浪费TCP连接数。

结论就是,放动态网页的就 KeepAlive Off 以提高吞吐量, 放静态内容如图片、js代码等就 KeepAlive On 以减少TCP连接建立次数。

但一个Apache只能有一种 KeepAlive 设置,怎么办?很简单,弄两台服务器, 一个专门放脚本,一个专门放图片。

 

服务器进程数

 

再说说下面的 StartServers、MinSpareServers、MaxSpareServers。 StartServers基本不用修改,因为Apache会自动调节子进程数。 MinSpareServers和MaxSpareServers是空闲子进程数目,何为空闲子进程? 假设某一时刻系统中共有30个httpd进程,其中一个是父进程,20个在处理请求, 那么空闲子进程数就是9个。

空闲进程少了,大量的突发请求会使服务器疲于进程创建,降低效率; 而太多反而会增加系统进程数,增大系统负载。

实际上,默认值已足够处理一般的突发请求,所以除非是流量特别特别巨大的网站, 否则不要修改这些设置。

就算流量特别特别大,也是通过负载平衡系统来降低每台服务器的访问量,不会修改这几个值。

 

MaxRequestsPerChild

 

这个值设置子进程在处理多少个请求之后自动结束。 这个选项是用来防止进程由于内存泄漏等使用内存过多。 一般默认值即可。

 

总结

 

说来说去其实最重要的还是 KeepAlive 的设置, 而性能调节也就是调整 KeepAlive、KeepAliveTimeout 值。

分享到:
评论

相关推荐

    Apache服务器集群及负载均衡

    接下来,我们来谈谈Nginx在实现前端开发中的作用。Nginx以其高性能、轻量级的特性,常被用作反向代理服务器和静态文件服务器。在前端开发中,使用Nginx作为反向代理,可以实现无须重启服务器就能更新前端资源,极大...

    轻松实现Apache_Tomcat集群和负载均衡

    现在我们来谈谈Apache HTTP Server的mod_jk模块,它是一个连接器,用于在Apache和Tomcat之间转发HTTP请求。要使用mod_jk,你需要: 1. **安装mod_jk**:将mod_jk模块加载到Apache配置中,并确保Apache能够找到模块...

    Apache与Tomcat集群,伪静态,负载均衡

    这篇博客将探讨如何实现Apache与Tomcat的集群配置,以及如何设置伪静态和负载均衡,以优化服务性能。 首先,我们来理解Apache与Tomcat的集成。Apache通常被用作前端服务器,可以更高效地处理静态内容(如图片、CSS...

    linux技术集

    首先,让我们来谈谈Linux-Apache搭建。Apache HTTP Server是最流行的Web服务器软件,它与开源操作系统Linux的结合提供了稳定且高效的网页托管环境。要搭建Linux-Apache服务器,你需要安装Apache软件包,如在Debian或...

    网站架构及高性能并发服务器设计

     谈谈大型高负载网站服务器的优化心得! 8  Lighttpd+Squid+Apache搭建高效率Web服务器 9  浏览量比较大的网站应该从哪几个方面入手? 17  用负载均衡技术建设高负载站点 20  大型网站的架构设计问题 25 ...

    对于大数据的认识和理解-谈谈对数据的理解.pdf

    此外,NoSQL数据库用于处理非结构化数据,流处理技术(如Apache Spark)用于实时数据分析,而数据挖掘和机器学习算法则帮助从大数据中发现模式和洞察。 【大数据的应用】 大数据的应用广泛,涵盖了医疗健康、金融...

    谈谈你对Zend SAPIs(Zend SAPI Internals)的理解

    研究SAPI不仅可以帮助开发者深入理解PHP的工作原理,还可以根据不同的应用场景选择或开发出更适合的SAPI,从而优化应用的性能和用户体验。虽然SAPI对最终用户是透明的,但作为开发者,了解SAPI在PHP生态系统中的角色...

    lukeall-5.2.1.jar

    Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它提供了文本分析、索引创建、查询解析和结果排名等功能,使得开发者可以快速地在应用程序中实现强大的搜索功能。在Lucene 5.2.1这个版本中,优化了性能...

    shenyu-master.zip

    在了解ShenYu之前,我们先来谈谈API网关。API网关是微服务架构中的一个重要组件,它作为系统对外的单一入口,处理所有来自客户端的请求,并根据业务逻辑将请求分发到不同的后端服务。这样做的好处包括简化客户端交互...

    web服务器配置web服务器配置.doc

    配置Web服务器是一项关键任务,因为它确保了网站的正常运行和功能优化。以下将详细讨论Web服务器配置的一些核心方面,尤其是文档中提到的"启用父路径"和"启用HTTPS"这两个关键点。 首先,我们来谈谈"启用父路径"。...

    tomcat源码依赖包

    首先,我们来谈谈“jar”标签。在Java开发中,jar(Java Archive)文件是一种打包格式,它将类文件、资源文件以及其他元数据打包在一起,便于分发和运行。在Tomcat源码编译过程中,需要的jar文件主要包含以下几个...

    PyPI 官网下载 | sparkautomapper-0.2.5.tar.gz

    接下来,我们来谈谈"分布式"这个标签。在云环境和大数据处理领域,分布式计算是不可或缺的一部分。SparkAutoMapper可能支持在分布式环境中运行,这意味着它可以跨多个节点处理数据,利用集群的计算能力,提高处理...

    linux中安装oracle ,JDK,TOMCAT,MYECLIPSE

    在实际操作中,可能需要根据具体情况进行调整,例如配置防火墙规则、优化系统参数等。请确保阅读官方文档以获取最新和最准确的信息。在安装过程中,你可能需要参考"linux4 for oracle 10g.txt"和"linux安装JDK.txt...

    云HBaseSQL及分析PhoenixSpark.pdf

    接下来,我们谈谈Spark。Apache Spark是一个开源的集群计算系统,它提供了强大的数据分析能力,特别是复杂的数据集上的快速迭代算法。Spark与HBase结合,也就是SparkonHBase,提供了复杂分析的能力。SparkonHBase...

    lukeall-4.10.3.jar工具包下载.zip

    接着,我们谈谈IKAnalyzer。作为一款针对中文的开源分词器,IKAnalyzer在处理中文文本时表现卓越。它不仅支持标准的分词模式,还提供了基于词典的智能切词算法,能够有效识别和处理新词、网络热词等。IKAnalyzer与...

    全部LINUX服务器配置资料

    4. **重定向与重写规则**:`RewriteEngine`和`RewriteRule`允许URL重写,常用于SEO优化和URL规范化。 5. **日志管理**:`ErrorLog`和`CustomLog`定义错误日志和访问日志的位置和格式。 接下来,Linux下软件的安装与...

    php 页面重定向 通过.htaccess 定制404错误页面

    在PHP开发中,页面重定向和自定义404错误页面是两个重要的概念,它们对于提升用户体验和网站管理效率有着显著的作用。...在实际应用中,根据具体需求灵活运用这些技术,能够优化网站的性能和用户互动性。

    ikanalyzer-solr5.zip

    ikanalyzer-solr-5这个子目录很可能是IK Analyzer的Solr插件版本,专门针对Solr 5.x版本进行优化。在这个目录下,可能包含以下文件: 1. `conf`目录:通常包含IK Analyzer的配置文件,如` IKAnalyzer.cfg.xml`,...

    基于Flink+ClickHouse构建亿级电商全端用户画像平台视频教程

    6. 反馈循环:根据分析结果调整业务策略,如优化推荐算法,改进产品特性等,进一步完善用户画像。 通过这样的架构,电商平台可以实时获取用户的行为变化,快速响应市场动态,提高用户体验和业务效率。同时,这种...

Global site tag (gtag.js) - Google Analytics