今天说说Apache的优化。为什么要优化?因为服务器资源不够用。
资源有很多方面,但根据木
桶理论,只要有一种资源不够用,
整个服务器的性能就会受到影响(所谓瓶颈)。
服务器资源
那么服务器的资源包括哪些?对于网站来说主要是CPU
、TCP连接数
这两者。
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 值。
分享到:
相关推荐
接下来,我们来谈谈Nginx在实现前端开发中的作用。Nginx以其高性能、轻量级的特性,常被用作反向代理服务器和静态文件服务器。在前端开发中,使用Nginx作为反向代理,可以实现无须重启服务器就能更新前端资源,极大...
现在我们来谈谈Apache HTTP Server的mod_jk模块,它是一个连接器,用于在Apache和Tomcat之间转发HTTP请求。要使用mod_jk,你需要: 1. **安装mod_jk**:将mod_jk模块加载到Apache配置中,并确保Apache能够找到模块...
这篇博客将探讨如何实现Apache与Tomcat的集群配置,以及如何设置伪静态和负载均衡,以优化服务性能。 首先,我们来理解Apache与Tomcat的集成。Apache通常被用作前端服务器,可以更高效地处理静态内容(如图片、CSS...
首先,让我们来谈谈Linux-Apache搭建。Apache HTTP Server是最流行的Web服务器软件,它与开源操作系统Linux的结合提供了稳定且高效的网页托管环境。要搭建Linux-Apache服务器,你需要安装Apache软件包,如在Debian或...
谈谈大型高负载网站服务器的优化心得! 8 Lighttpd+Squid+Apache搭建高效率Web服务器 9 浏览量比较大的网站应该从哪几个方面入手? 17 用负载均衡技术建设高负载站点 20 大型网站的架构设计问题 25 ...
此外,NoSQL数据库用于处理非结构化数据,流处理技术(如Apache Spark)用于实时数据分析,而数据挖掘和机器学习算法则帮助从大数据中发现模式和洞察。 【大数据的应用】 大数据的应用广泛,涵盖了医疗健康、金融...
研究SAPI不仅可以帮助开发者深入理解PHP的工作原理,还可以根据不同的应用场景选择或开发出更适合的SAPI,从而优化应用的性能和用户体验。虽然SAPI对最终用户是透明的,但作为开发者,了解SAPI在PHP生态系统中的角色...
Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它提供了文本分析、索引创建、查询解析和结果排名等功能,使得开发者可以快速地在应用程序中实现强大的搜索功能。在Lucene 5.2.1这个版本中,优化了性能...
在了解ShenYu之前,我们先来谈谈API网关。API网关是微服务架构中的一个重要组件,它作为系统对外的单一入口,处理所有来自客户端的请求,并根据业务逻辑将请求分发到不同的后端服务。这样做的好处包括简化客户端交互...
配置Web服务器是一项关键任务,因为它确保了网站的正常运行和功能优化。以下将详细讨论Web服务器配置的一些核心方面,尤其是文档中提到的"启用父路径"和"启用HTTPS"这两个关键点。 首先,我们来谈谈"启用父路径"。...
首先,我们来谈谈“jar”标签。在Java开发中,jar(Java Archive)文件是一种打包格式,它将类文件、资源文件以及其他元数据打包在一起,便于分发和运行。在Tomcat源码编译过程中,需要的jar文件主要包含以下几个...
接下来,我们来谈谈"分布式"这个标签。在云环境和大数据处理领域,分布式计算是不可或缺的一部分。SparkAutoMapper可能支持在分布式环境中运行,这意味着它可以跨多个节点处理数据,利用集群的计算能力,提高处理...
在实际操作中,可能需要根据具体情况进行调整,例如配置防火墙规则、优化系统参数等。请确保阅读官方文档以获取最新和最准确的信息。在安装过程中,你可能需要参考"linux4 for oracle 10g.txt"和"linux安装JDK.txt...
接下来,我们谈谈Spark。Apache Spark是一个开源的集群计算系统,它提供了强大的数据分析能力,特别是复杂的数据集上的快速迭代算法。Spark与HBase结合,也就是SparkonHBase,提供了复杂分析的能力。SparkonHBase...
接着,我们谈谈IKAnalyzer。作为一款针对中文的开源分词器,IKAnalyzer在处理中文文本时表现卓越。它不仅支持标准的分词模式,还提供了基于词典的智能切词算法,能够有效识别和处理新词、网络热词等。IKAnalyzer与...
4. **重定向与重写规则**:`RewriteEngine`和`RewriteRule`允许URL重写,常用于SEO优化和URL规范化。 5. **日志管理**:`ErrorLog`和`CustomLog`定义错误日志和访问日志的位置和格式。 接下来,Linux下软件的安装与...
在PHP开发中,页面重定向和自定义404错误页面是两个重要的概念,它们对于提升用户体验和网站管理效率有着显著的作用。...在实际应用中,根据具体需求灵活运用这些技术,能够优化网站的性能和用户互动性。
ikanalyzer-solr-5这个子目录很可能是IK Analyzer的Solr插件版本,专门针对Solr 5.x版本进行优化。在这个目录下,可能包含以下文件: 1. `conf`目录:通常包含IK Analyzer的配置文件,如` IKAnalyzer.cfg.xml`,...
6. 反馈循环:根据分析结果调整业务策略,如优化推荐算法,改进产品特性等,进一步完善用户画像。 通过这样的架构,电商平台可以实时获取用户的行为变化,快速响应市场动态,提高用户体验和业务效率。同时,这种...