关于Apache的性能优化

10-4 Apache简介与安装 Apache(音译为阿帕奇)是一款世界上使用排名第一的web服务器软件。它能够在几乎所有广泛使用的计算机平台上运行,并因其跨平台性和安全性而备受青睐,是最流行的web服务器端软件之一。Apache具有快速、可靠和可扩展的特点,可以通过简单的AP(Application Programming)扩展将解释器(如Perl/Python)编译到服务器中。Apache的起源可以追溯到NCSAhttpd服务器,经过多次修改和改进,逐渐成为世界上最受欢迎的Web服务器软件之一。 阅读详情

关于Apache服务器,我看了一些文档,有一些提高性能的想法。

1.重新编译Apache。

Apache的默认配置不是为了最大化性能而设置的,而是考虑到向后兼容性和平台兼容性的问题。因此很多2.x的新特性没有能够体现出来。在编译的时候,需要加入一些参数,增加的这些模块应该会大幅的提高性能。

既然重新编译,建议使用最新的2.2版,里面有些部分对性能有不少加强。

2.编译的时候建议加入下面的参数
./buildconf
./configure /
 --with-mpm=worker /
 --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache /
 --enable-nonportable-atomics /
 --enable-mods-shared=most

2.1 Multi-Processing Modules (MPM)

--with-mpm={prefork,worker}

这个是设置Apache的多任务处理的。prefork是指每个连接一个进程,也就是多进程并行处理;而worker是多线程并行处理。支持多线程处理,本来是Apache 2的一大改进,可是为了和以前的兼容,所以对于Unix默认的都是prefork,这个改进并没有体现出来。而这个设置只能在编译的时候进行优化,这也是为什么一定要重新编译一下apache的原因。

apache文档这么说:

“·worker MPM 使用多进程,每个进程包含多线程的方式。每个线程一次处理一个连接。worker对于高流量的服务器通常是一个好的选择,因为它比prefork MPM占用更少的内存。
·prefork MPM 使用多进程,每个进程只包含1个线程的方式。每个进程一次处理一个连接。在许多系统上,prefork具有与worker相媲美的速度,但是它会占用更多的内存。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。”

这么说确实没有什么必要用prefork,刚才看了一下FC5,也是用的prefork模式。所以重新编译apache是肯定的了。我还不知道哪个Linux发布版本的apache默认是worker的呢。

为了设置MPM为worker需要设置:

--with-mpm=worker

2.2 Caching

mod_cache是从mod_proxy分离出来的。在以前apache 1.3的时候,就已经在mod_proxy中支持缓冲技术了。现在是为了加强缓冲能力,从mod_proxy中独立出来,而mod_proxy被完全重写了,更强调代理的作用了。

从Apache 2.2开始,mod_cache将不再是实验模块而作为稳定模块发布了。为了能够支持cache,需要在编译的时候,启用它,因为默认caching是禁用的。我估计是因为以前还是实验模块,所以还是为了向后兼容的问题,暂时是默认禁用的。

mod_cache一共有三种mod_mem_cache,mod_disk_cache和mod_file_cache。具体怎么用可以看apache的文档,虽然是英文,不过不是很难懂:

http://httpd.apache.org/docs/2.2/caching.html

网上也有一些关于mod_cache的中文配置文章可以参考。

总值为了能够用cache,需要在编译的时候设置:

--enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache

2.3 原子操作

有些模块中,如mod_cache中使用了一些原子操作,多任务中的互斥量操作之类的。为了可移植性,一般都是用互斥量环绕条件语句来判断来实现。比如:

acquire_lock(mutex);
if( a == 0 ){
   a = 3;
}
release_lock(mutex);

加锁的目的是确保if和赋值不会被其他线程中断。可是有些cpu中提供了一条指令来做判断赋值,不需要这么复杂的操作,比如486加入的指令:

cmpxchg [edx], eax

先测试[edx]是否为0,如果为0,就让[edx]=eax。

通过硬件保证了中间不会被中断。要知道一旦用到了互斥量,那么线程切换的等待就避免不了,这对于线程太多并且有公用数据的程序来说,影响性能的因素之一。因此一旦得到了硬件的直接支持。在多线程程序的处理上,就少了很多的锁,也就提高了一定的性能。但是,不是所有的cpu都有这样的指令,因此默认情况下还是使用锁的老办法。除非编译时明确声明:

--enable-nonportable-atomics=yes

需要注意的是,这样编译后,只能用在486及其以上的计算机中。我估计一般的服务器不是跑在386上吧。呵呵,对了,也尽量不要是64位的系统。

2.4 允许后期动态加载模块

--enable-mods-shared=most

这将编译大部分的模块为动态模块,这样后期可以动态的调入。默认情况竟然是不允许,太令我诧异了。呵呵。我感觉对于典型的多进程应用,模块就应该是动态加载,这样比较节省内存空间,反正大家用得都差不多的模块。

3. 检查

至于是否还想加其他的模块你就看着办吧,一般来说这就够了。

需要提一下的是,现在apache在2.2种引入了一种新的MPM来提高性能,叫做event。可惜还在实验状态,未能稳定。event是worker的变种,和线程类似,也是多线程模型,不同的是,它将做数据处理的线程和等待连接的线程分开,以此试图解决KeepAlive大了也不是,小了也不是的性能调整问题。

event是使用一个比较小的线程来等待所有的socket,包括等候连接的socket和那些KeepAlive的连接。一旦这些socket有任何发送HTTP请求了,这个等候的线程,就会这个socket交给真正做数据处理的线程进行处理,那个线程处理完成后,会将这个socket交还给这个守候线程。

这样,即使有大量的KeepAlive连接,也不用担心性能损耗,因为只有一个简单的线程来负责维护这些KeepAlive的连接,而那些真正做任务处理的线程则在一个HTTP响应处理完成后就退回到可用线程池或者被释放了,因此很省资源。这个思路很好,现在还在实验,如果试验成功,估计会成为2.4或者2.6的稳定MPM。

3.1 httpd -l

通过这条命令可以检查mpm是prefork还是worker。很不幸默认是prefork,FC5显示如下:

Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

3.2 apachectl -l

通过这条指令可以检查cache模块的加载情况,很不幸,默认是啥都没有。

4. KeepAlive

我看到KeepAlive默认设置为On,KeepAliveTimeout默认是5秒。这个设置的含义时说,对于HTTP/1.1的客户端来说,将会尽量的保持客户的HTTP连接,通过一个连接传送多份HTTP请求<->响应。这样对于客户端来说,可以提高50%左右的响应时间,而对于服务端来说则降低了更多个连接的开销。不过这个依赖于客户端是否想保持连接。我知道IE默认是保持连接的,当你打开100个图片的网站时,IE好像只开2个连接,通过这两个连接传送数据,而不是开100个连接。KeepAliveTimeout时说这次连接结束后开始计时,如果5秒内没有重新发送HTTP请求,就断掉连接。这个值可以稍微大一点,但是不可太大,否则会出现同时等候过多的连接,导致过多限制资源,而使服务器性能下降。可以调调看。

备注:

谢谢SeEr的提醒。

-enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache

这个选项应用在生产环境中还不能保证其稳定性,它刚刚脱离实验状态,还需要一个稳定期。因此,使用过程中应慎重考虑该选项。

告别迷茫!用ETAS RTA-OS配置你的第一个AUTOSAR OS任务(含VRTA虚拟ECU实战) 本文详细介绍了如何使用ETAS RTA-OS工具链在VRTA虚拟ECU上配置和运行第一个AUTOSAR OS任务。通过从XML配置到任务调度的全流程实战,帮助开发者快速掌握嵌入式操作系统开发的核心步骤,特别适合刚接触AUTOSAR的开发者快速上手。 阅读详情

相关推荐

如何在R中高效安装ropls及其依赖包

本文详细介绍了在R语言中高效安装ropls包及其依赖的完整流程。作为Bioconductor生物信息学分析包,ropls的安装需通过BiocManager管理器进行。文章提供了标准安装步骤、跨系统避坑指南及安装后验证方法,帮助用户解决R版本、编译环境和网络镜像等常见问题,确保代谢组学数据分析工具顺利部署。

efc123456的博客 908

解决禅道windows服务apachezt偶尔无法启动问题

解决禅道服务无法启动问题

走向辉煌 827

全国各省份影像下载地址(11级别)

cesium中使用urltemplate加载,leaflet中使用tile加载,具体加载有问题可以给我留言。

资深三维GIS开发 5148

apachezt和mysql关闭_Windows下 Apache+MySQL+PHP环境配置(ZT)

Apache+MySQL+PHP环境配置1. Apache的安装配置版本:apache_2.2.6-win32-x86-no_ssl直接按默认安装,安装时要关闭浏览器跟下载软件,否则安装完成后服务器不能启动,报不能绑定80端口的错误。启动后在地址栏中输入“http://localcast/”或“http://127.0.0.1/”,如果可以看到"It Works",说明安装成功。如果需要更改默认路...

weixin_39532421的博客 232

Debian 11 下用hostapd+dnsmasq搭建WiFi热点:从命令行到实战(避坑指南)

本文详细介绍了在Debian 11系统上,使用hostapd和dnsmasq从命令行搭建稳定WiFi热点的完整实战流程。内容涵盖环境准备、无线网卡AP模式检查、服务深度配置,并重点提供了从服务启动失败到客户端无法上网等常见问题的系统性排错指南,帮助用户避开配置陷阱,成功创建可用的无线接入点。

CAT789的专栏 772

分析方法—temporal receptive field(TRF)

总结来说,时间感受野其实就是一个 filter!课程中的描述—.(使用时间感受野与刺激进行卷积来描述)时间感受野一般是听觉计算中使用的,在视觉中,有另一种分析叫做空间感受野(spatial receptive fields)。回归权重(Regression weights)是指在回归分析中用于估计自变量与因变量之间关系的权重或系数。回归分析是一种统计方法,用于建立自变量与因变量之间的关联模型,并通过拟合数据来估计模型中的参数。在简单线性回归中,只有一个自变量与一个因变量之间的关系被建模。

m0_51474171的博客 1603

ApacheApache性能调优

Apache 2.x是一个通用的Web服务器,旨在提供灵活性,可移植性和性能之间的平衡。虽然它没有专门设计用于设置基准记录,但Apache 2.x在许多实际情况下都具有高性能。与Apache 1.3相比,版本2.x包含许多额外的优化,以提高吞吐量和可伸缩性。默认情况下,大多数这些改进都已启用。但是,存在可能显着影响性能的编译时和运行时配置选择。本文档介绍了服务器管理员可以配置的选项,以调整Apache 2.x安装的性能。

unber的博客 1341

【C++项目】从零实现RPC框架「三」:项⽬抽象层实现

本文详细介绍了如何从零实现一个 C++ RPC(远程过程调用)框架,包括通信抽象、消息抽象、通信实现、以及消息分发器的实现。通过系统化的代码示例,展示了如何构建一个高效、灵活且可扩展的 RPC 框架。

You build it, you run it 2162

优化Apache服务器的性能

##注:这篇文章对apache的优化说的思路比较清晰,本人觉得非常好,故转载,希望对大家有所帮助,文章中的内容请自己甄别!!!! 文章出处:http://bbs.chinabyte.com/thread-394880-1-1.html 通过挤出Apache服务器的每一分潜力你可以让你的网站留给别人的印象大大改观,特别是对一些**站更是如何。这篇文章主要涉及到对...

weixin_34032779的博客 227

【Bug已解决】Anthropic tool_result 找不到对应 tool use id 解决方案

方案适用场景推荐指数每个tool_use必须生成对应tool_result最基础的原则,所有Harness都必须遵守⭐⭐⭐⭐⭐裁剪历史时成对处理实现了上下文裁剪/压缩逻辑的Harness⭐⭐⭐⭐⭐并行工具调用结果数量校验支持多工具并行调用的场景⭐⭐⭐⭐使用官方SDK高层封装不需要特别定制消息组装逻辑⭐⭐⭐⭐请求前主动校验中间件追求生产级健壮性,提前拦截问题⭐⭐⭐⭐⭐这类报错,本质上是。

一键难忘的博客 1万+

点云去噪:基于点云拟合的方法

点云处理是计算机视觉中的重要任务之一,而点云去噪是点云处理的关键步骤之一。在实际应用中,由于采集设备的噪声、运动估计误差或者环境干扰等因素,点云数据中常常包含有噪声点,这些噪声点会对后续的点云分析和处理造成不良影响。一种简单的方法是计算点到拟合曲面的距离,并将距离超过某个阈值的点定义为噪声点,进行过滤。一种简单的方法是计算点到拟合曲面的距离,并将距离超过某个阈值的点定义为噪声点,进行过滤。该方法通过拟合点云数据的曲面模型,对噪声点进行识别和过滤,从而得到更加干净的点云数据。

AuSwift的博客 638

Apache 从部署到性能优化全指南

文档围绕 Apache 服务器展开,介绍了其基础信息、部署(包括 LAMP 平台集成、WordPress 站点上线等)、优化(长连接、数据压缩、下载限速、模块优化、客户端缓存等)、访问控制、虚拟主机配置以及压力测试等方面的知识,旨在帮助用户全面了解和使用 Apache 服务器,提升网站性能和安全性。

weixin_61753702的博客 1929

Epicor ERP 界面新增客制化字段操作方法

我发现国内对于epicor这个erp软件的教程非常少,所以录制一些我实际遇到的需求,整理了实现过程,提供给大家参考。

cqxianggang的专栏 413

Apache的压力测试以及web性能优化

Apache的压力测试主要是指使用Apache自带的工具ApacheBench(‌简称AB)‌来模拟多个用户同时访问Web服务器,‌以测试服务器的负载能力和性能。‌这个工具可以创建大量的并发访问线程,‌模拟多个访问者同时对某一URL地址进行访问,‌从而测试服务器的响应速度、‌处理能力以及稳定性。‌本章详细介绍apache的压力测试。

Linux运维老纪的博客 1313

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Apache性能优化、超时设置

原文 Apache性能优化、超时设置 在httpd.conf中去掉Include conf/extra/httpd-default.conf前的#以使httpd-default.php生效。 其中调节以下参数 Timeout 15 (连接超时缺省为300,太大了,缩小会减少同时连接数,即上面占用的实际线程数) KeepAlive On (开启可以提高性能,因为一个页面一般会有多个请求) MaxKe...

qq_40414209的博客 7891

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Apache性能优化技巧

Apache性能优化技巧Apache性能优化技巧 靖康科技 本文简要介绍了几个优化 Apache 的技巧,在实战中十分有用。 升级 Apache 到最新版本,新版本往往包含性能提升和安全更新。 在 httpd.conf 中设置 "HostNameLookups off" 能避免针对每个访问者的 DNS 域名的反向查询。 对于繁忙的网站,在 httpd.conf 中设置 "MaxClients

ehxe Asp.Net&PHP 1179

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

apache、nginx、tomcat性能优化

竹雨阑珊1 Tomcat、Apache、Nginx性能优化 转载:http://mp.weixin.qq.com/s?__biz=MzAwNzY4OTgyNA==&amp;mid=2651824801&amp;idx=1&amp;sn=448b264213094b454efb2a5580a59931&amp;scene=1&amp;srcid=0827oBjecDeWn9zcwpPQifEW#rd...

weixin_41560737的博客 601

25个Apache性能优化技巧推荐

 Apache 至今仍处于web服务器领域的霸主,无人撼动,没有开发者不知道。本篇文章介绍25个Apache性能优化的技巧,如果你能理解并掌握,将让你的Apache性能有显著的提升!   Apache 部分:   1. 移除不用的模块。   2. 使用 mod_disk_cache NOT mod_mem_cache 。   3. 扁平架构配置mod_disk_cache。   4. ...

Lost In My Way 155

Web性能优化之Apache篇

一直以来, 实现强制https的方法是使用Apache的rewrite模块来进行重定向, 这样存在几个问题, 第一是性能问题, 第二是可能遇到不支持https的客户端…..等等, 便有此文

hldh214的博客 1270

Apache之三种工作模式和配置性能优化

1Apache的3种模式和版本 Apache目前一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式,它们分别是prefork,worker和event。 我们可以使用httpd -V 命令查看apache的版本和模式,如果你服务端允许了apache,你先用httpd -V试下,如果提示如下 -bash: httpd: command not fo...

码莎拉蒂 3171

Apache Ignite通用性能优化指南

Apache Ignite作为分布式内存计算平台和数据库,在高性能场景下需要精细的调优才能发挥最大潜力。本文将从内存管理、SQL查询、持久化配置、JVM调优等多个维度,为您提供全面的性能优化指南。 ## 内存优化策略 ### 1. 内存区域配置优化 Apache Ignite使用离堆(Off-Heap)内存存储数据和索引,但Java堆仍然用于查询结果集等操作。合理配置内存区域至关重要: `...

gitblog_00397的博客 428

apache php 调优_Apache的性能优化(四)

下面是prefork的默认配置段:StartServers 5 //MinSpareServers 5 //设置了最小的空闲进程数。MaxSpareServers 10 //设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill掉一些多余进程。这个值不要设得过大,但如果设的值比MinSpareServers小,Apache会自动把其调整...

weixin_40008566的博客 163

apache性能优化

Tunning Apache Apache几目前Internet上使用最为广泛的Web服务器。它具有比商业Web服务器不遑多让的功能与速度,同时安装与设置也十分简单,正是这些特性让它成为市场占有率最高的Web服务器软件。不过Apache安装简单,并不意味着简单地安装就可以适

骆驼刺 511

apache php 调优_Apache的性能优化实例(一)

本文主要和大家分享Apache的性能优化(一),希望能帮助到大家。Apache缺省的最大用户数是256个:这个配置对于服务器内存还是256M左右的时代是一个非常好的缺省设置,但随着内存成本的急剧下降,现在大型站点的服务器内存配置一般比当时要高一个数量级不止。所以256个进程的硬限制对于一台1G内存的机器来说是太浪费了,而且Apache的软上限 max_client是受限于HARD_SERVER_L...

weixin_39542093的博客 674

Apache和Tomcat结合提高性能优化

本文研究了Apache 和Tomcat做负载均衡,系统正式上线后就需要考虑如果对Apache和Tomcat进行性能优化,以便能够充分发挥硬件和软件的处理能力。     研究了Apache和Tomcat做负载均衡,系统正式上线后就需要考虑如果对Apache和Tomcat进行性能优化,以便能够充分发挥硬件和软件的处理能力。 Apache Http Server:   影响性能的最核心特性:MPM

kobejayandy的专栏 1181

Apache Ignite性能优化通用指南

Apache Ignite作为一款分布式内存计算平台,其性能表现直接影响着整个系统的运行效率。本文将深入探讨Ignite性能优化的通用技巧,帮助开发者充分发挥Ignite的潜力。 ## 集群部署最佳实践 ### 分布式环境优先 Ignite的核心设计理念就是分布式计算,因此: 1. 生产环境应始终采用多节点集群部署,而非单节点 2. 性能基准测试也应在多节点环境下进行,单节点测试结果无法反...

gitblog_00331的博客 410
上一篇: 非Unix衍生的操作系统图谱
下一篇: 今天收到了ubuntu 5.10免费光盘
DanceFire
博客等级 码龄26年 91粉丝 42原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值