当前位置: 首页 > news >正文

薪技术|0到1学会性能测试第45课-apache调优技术

前面的推文我们掌握了apache监控技术,今天我们继续来看下apache调优技术,究竟是怎么做性能调优???后续文章都会系统分享干货,带大家从0到1学会性能测试。

图片

Apache调优技术

Apache最近的版本是2.2版,Apache2.2是一个多用途的web服务器,其设计在灵活性、可移植性和性能中求得平衡。虽然没有在设计上刻意追求性能指标,但是Apache2.2仍然在许多现实环境中拥有很高的性能。相比于Apache 1.3,2.2版本作了大量的优化来提升处理能力和可伸缩性,而且大多数的改进在默认状态下就可以生效。但是,在编译时和运行时,都有许多可以显著提高性能的选择。本章节主要阐述在安装Apache2.2时,服务器管理员可以改善性能的各种方法。

关于Apache调优主要包括三个方面的内容:

1)硬件与操作系统方面

2)运行时的配置

3)编译时的配置

01硬件与操作系统

影响web服务器性能的最大的因素是内存,一个web服务器应该尽量不使用交换机制,因为交换产生的滞后使用户总感觉“不够快”,此时用户就可能去按“停止”和“刷新”,从而给web服务器带来更大的负载。所以应该控制MaxClients的设置,以避免服务器产生太多的子进程而发生交换,先计算出每个Apache进程平均消耗的内存,然后再为其它进程留出足够多的内存。

其他因素比较普通,装一个足够快的CPU,一个足够快的网卡,几个足够快的硬盘,这里说的“足够快”是指能满足实际应用的需求。

操作系统是很值得关注的又一个因素,已经被证实的很有用的经验有:

  • 选择能够得到的最新最稳定的版本并打好补丁。现在许多操作系统厂商都提供了可以显著改善性能的TCP协议栈和线程库。

  • 如果操作系统支持sendfile()系统调用,则务必安装带有此功能的版本或补丁。在支持sendfile的系统中,Apache2可以更快地发送静态内容而且占用较少的CPU时间。

02运行时配置

运行时的配置主要涉及到的相关模块为:mod_dir、mpm_common、mod_status,涉及到的相关指令为:AllowOverride、HostnameLookups、DirectoryIndex、EnableMMAP、EnableSendfile、KeepAliveTimeout、MaxSpareServers、MinSpareServers、Options、StartServers。

1) AllowOverride

AllowOverride两种设置All或None,如果网站空间允许覆盖(通常是用.htaccess文件),则Apache会试图对文件名的每一个组成部分都打开.htaccess ,例如:

DocumentRoot /www/htdocs<Directory />AllowOverride All</Directory> 

如果请求“/index.html”,则Apache会试图打开“/.htaccess”、“/www/.htaccess”、“/www/htdocs/.htaccess”。为了得到最佳性能,应当对文件系统中所有的地方都使用AllowOverride None设置。

2) HostnameLookups和其它DNS

在Apache1.3以前的版本中,HostnameLookups默认被设为On,这样会带来延迟,因为对每一个请求都需要作一次DNS查询。在Apache2.2中,它被默认地设置为Off。如果需要日志文件提供主机名信息以生成分析报告,则可以使用日志后处理程序logresolve,以完成DNS查询,而客户端无须等待。

一般情况下应该是在其它的机器上,而不是在web服务器上执行后处理和其他日志统计操作,以免影响服务器的性能。

如果你使用了任何“Allow from domain”或“Deny from domain”指令(也就是domain使用的是主机名而不是IP地址),则代价是要进行两次DNS查询(一次正向和一次反向,以确认没有作假)。所以,为了得到最高的性能,应该避免使用这些指令(不用域名而用IP地址也是可以的)。

注意:可以把这些指令包含在段中使之局部化。在这种情况下,只有对这个区域的请求才会发生DNS查询。下例禁止除了.html和.cgi以外的所有DNS查询:​​​​​​​

HostnameLookup
http://www.xdnf.cn/news/297163.html

相关文章:

  • 2025年03月电子学会青少年软件编程 图形化二级考级真题——风车
  • 智能修复大模型生成的 JSON 字符串:Python 实现与优化
  • VMware搭建ubuntu保姆级教程
  • 智能推理DeepSeek-R1+Word深度整合业级智能办公构建
  • 手机携号转网查询,一键查看号码是否可转网!
  • (undone) xv6-labs-2020 补充 LAB lazy page allocation (Day11 xv6-2020 LAB5 懒分配)
  • 双ISP(双互联网服务提供商)
  • eNSP中路由器OSPF协议配置完整实验和命令解释
  • 在Unity AR应用中实现摄像头切换功能
  • STL?string!!!
  • 【Azure Redis】Redis导入备份文件(RDB)失败的原因
  • P56-P60 统一委托,关联游戏UI,UI动画,延迟血条
  • 【Qt4】Qt4中实现PDF预览
  • 香港云服务器在跨境电商的应用
  • 计算机硬件:AMD X670E与B650主板的PCIe通道分配
  • tinyrenderer笔记(法线映射)
  • Nginx安全防护与HTTPS部署实战
  • STM32--GPIO
  • 【MCP Node.js SDK 全栈进阶指南】专家篇(2):MCP多模型支持架构
  • 破解工业3D可视化困局,HOOPS Visualize助力高效跨平台协作与交互!
  • 免费轻量化办公pdf修改软件 一键格式转换基础修改到高级加密
  • React Native【详解】搭建开发环境,创建项目,启动项目
  • 【FPGA开发】什么是Streaming流式传输?流式传输的最主要的设计思想是什么?
  • Kotlin重构Android项目实践
  • RAG_Techniques:探索GitHub热门RAG技术开源项目
  • pcl对应点聚类算法
  • OpenAI大变革!继续与微软等,以非营利模式冲击AGI
  • Spring Security鉴权:文件上传需要携带token
  • 【开源深度解析】从零打造AI暗棋对战系统:Python实现中国象棋暗棋全攻略
  • 昇腾Atlas 200I DK A2 开发者套件无法上网问题的解决