Apache调优三个方面

Apache调优:01、硬件与操作系统方面,02、运行时的配置,03、编译时的配置

**********************硬件与操作系统方面**********************
影响WEB服务器性能的最大因素是内存,尽可以不使用交换机制,主要是交换产生滞后使用户感觉"不够快"
,导致用户不停去点停止和刷新对web服务器产生更大负载;


另一获取最新最稳定的版本,改善性能的TCP协议和线程库
另二操作系统支持sendfile()调用,务必安装带有些功能的版本或补丁,更快发送静态内容且占用较少的CPU时间


**********************运行时的配置**********************
1、AllowOverride:All->空间允许覆盖,试图对文件名每一个组成部分都打开.htaccess
                     None->不允许,建议文件系统中所有地方都使用AllowOverride None

2、HostnameLookups:默认设置为On,会产生延迟是因为每个一请求都需要作一个DNS查询

                                  设置Off即不会"
FollowSymLinks 和 SymLinksIfOwnerMatch:如使用SymLinksIfOwnerMatch,Apache就必须执行额外的系统调用以验证符号连接的安全性
                                                                 如使用SymLinksIfOwnerMatch即执行验证符号连接的安全性
DocumentRoot /www/htdocs
<Directory />
Options SymLinksIfOwnerMatch
</Directory>


如下可以减下多余的路径进行验证符号连接的安全性,/根目不验证,而对/www/htdocs目下进行验证符号连接的安全性,如需要更多的路径可重复设置
<Directory />
Options Options FollowSymLinks
</Directory>
<Directory /www/htdocs>
Options -FollowSymLinks +SymLinksIfOwnerMatch
</Directory>

3、内容协商:MultiViews效果,如服务收到对/some/dir/foo请求,而该目当下的文件并不存在,则服务器会查找这个目录下所有的foo.*文件,并有效地伪造一个说明这些foo.*文件的类型表,分配给相同的媒体类型及内容编码,选择其中最合适的匹配返回客户;
***如内容协商还需要提升性能,则不要使用通配符即可,最常用地放到最前面***

通配符 DirctoryIndex index.*
不使用通配符 DirctoryIndex index.php,index.html,index.cgi

EnableMMAP:如内存映射(增加CPU、对NFS装载的文件系统的一个文件对行了内存映射,而另一个NFS客户端进行程删除或截断时,需要使用EnableMMAP off关闭对发送文件的内存映射;
EnableSendfile:如Apache编译系统检测不到有缺陷的sendfile支持,或一个NFS文件系统的内核无法可靠地通过自己的Cache服务于网络文件时,需要使用EnableSendfile off来禁用sendfile可以被针对目录的设置覆盖;


**********************编译时的配置**********************

A、启用MPM模块配置文件,需要在httpd.conf文件中启用该配置文件,如下所示(去掉该行前面的注释符号"#")

# Server-pool management (MPM specific)

# Include conf/extra/httpd-mpm.conf


B、确定当前的apache是什么MPM模式(winnt模式,perfork模式,worker模式)
进入到apache/bin目录
cmd命令:httpd.exe -L


1、MPM配置 - preforkMPM,一个进程只处理一个链接,速度快,但需要更多的内存
workerMPM,一个进程包含多个线程,每个线程处理一个请求,但需要更少的内存,且具有伸缩性
2、模块 - 尽量去除不需要的模块(注释不需要的相关模块LoadModule)
3、原子操作 - 使用APR的原子API,提供能够用于轻量级线程同步的原子操作
4、mod_status - 监控apache性能,同时开启ExtendedStatus On,这样Apache会对请求调两次gettimeofday(),为得到最佳性能,可以设置 ExtendedStatus Off

5、多socket情况下的串行accept

6、单socket情况下的串行accept

7、Scoreboard文件

--------------------------各模式详解------------------------------

MPM_winnt模式
<IfModule mpm_winnt_module>
ThreadsPerChild      150  //修改这个值即可,子进程最大线程数
MaxRequestsPerChild    0  //子线程数允许处理的请求总数,防止内存泄漏无限进行,从而耗尽内存;给一定限值有助于服务器负载减轻
</IfModule>


MPM_worker模式
<IfModule mpm_worker_module>
    StartServers          2  //预先起2个进程
    MaxClients          150  //并发连接数
    MinSpareThreads      25  //最小空闲进程
    MaxSpareThreads      75  //最大空闲进程
    ThreadsPerChild      25  //修改这个值即可,子进程最大线程数
    MaxRequestsPerChild   0  //子线程数允许处理的请求总数
</IfModule>




MPM_profork模式
<IfModule mpm_prefork_module>
StartServers          5        //预先起5个进程
MinSpareServers       5       //最小空闲进程
MaxSpareServers      10      //最大空闲进程
MaxClients          150      //并发连接数
MaxRequestsPerChild   0      //子线程数允许处理的请求总数
</IfModule>


给大家一个合理的建议配置,对在部分网站,中型网站,配置:
<IfModule mpm_prefork_module>
StartServers          5        //预先起5个进程
MinSpareServers       5       //最小空闲进程
MaxSpareServers      10      //最大空闲进程
ServerLimit          1500     // 用于修改apache编程参数
MaxClients          1000      //并发连接数
MaxRequestsPerChild   0      //子线程数允许处理的请求总数
</IfModule>


如果你的网站pv值百万,可以这样设置:
ServerLimit          2500     // 用于修改apache编程参数
MaxClients          2000      //并发连接数 MacClients = (RAM-size_all_other_processes)/(size_apache_process)



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值