读apache手册,写下笔记;
安装------------略
配置------------略
调优:
提升性能:
从系统方面:
linux2.4内核版本以上,支持sendfile()系统调用
不应该使用swap,影响web服务器的最大因素是内存.使用swap会使性能降低.
从apache的配置上:
########################## 不建议使用的选项 ##############################
hostnamelookups -------> 应设置为off,如果是on的话,会带来延迟,每一次请求
都做一次dns查询,
domain使用的是域名而不是ip的话,代价是进行2次dns查询,一次正向,一次反向.
为了提高性能,应该不用域名而是用ip做域名.
指令应该包含在
中使之局部化:
HostnameLookup off
-----------> 在files声明的范围内,对*.htm或者*.cgi
使用hostnamelookup on
HostnameLookup on
symlinksIfOwnerMatch --------> 这个选项会使apache在处理请求"/index.html"时
# 验证符号链接的安全性 对/index.html和/www和/www/htdocs/index.html
执行lstat()调用,并且这个条用的结果不被缓存.
因此每一次请求都要执行一次.
# 非要使用这个指令的话,这样:
DocumentRoot /www/htdocs
Option FollowSymLinks
# 为了得到最佳性能,应当放弃对符号连接的保护
在所有地方都设置FollowSymLinks
,并放弃使用SymLinksIfOwnerMatch
。
AllowOverride -----> 如果网站空间允许覆盖,就是.htaccess文件.则apache会对文件名的
每一个组成部分都打开.htaccess,就象下面所设置的:
AllowOverride all
如果请求/index; 则apache会试图打开/index.html和/www/.htaccess和
/www/htdocs/.htaccess.会增加apache的负担.不建议使用.
# 为了得到最佳性能,应当对文件系统中所有的地方都使用 AllowOverride None
内容协商 ----------> 内容协商的好处大于相应的一点性能损失
但是这一点损失也是可以挽回的:
不使用通配符:
DirectoryIndex index
而使用完整的列表:最常用的放在最前面
DirectoryIndex index.html index.cgi index.php index.pl index.shtml
sendfile ----------> 发送静态内容时性能比较好.使用sendfile可以通过免除分离的读和写操作
来提升性能
一些平台可能会有Apache编译系统检测不到的有缺陷的sendfile支持,
特别是将在其他平台上使用交叉编译得到的二进制文件运行于当前
对sendfile支持有缺陷的平台时。
# 使用"EnableSendfile off
"来禁用sendfile
################################# 完毕 ##############################################
进程的建立
以前的apache的进程的建立是以StartServers的值为基数,每隔一秒建立一个
进程.就是说要同时处理100个客户端的请求的话,如果startservers的值是5
那么就要95秒的时间来建立后续的95个进程.
相关的选项;
MinSpareServers
指令设置空闲子进程的最小数量。
所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数
少于MinSpareServers
那么Apache将以最大每秒一个的速度产生新的子进程。
只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。
MaxSpareServers
指令设置空闲子进程的最大数量。
所谓空闲子进程是指没有正在处理请求的子进程。
如果当前有超过MaxSpareServers
数量的空闲子进程,那么父进程将杀死多余的子进程
keepalive:持久链接,子进程将保持忙碌状态以等待被打开连接上的新请求。
为了最小化其负面影响
keepalive默认值被设置为5
秒,以谋求网络带宽和服务器资源之间的平衡。
在任何情况下此值都不应当大于60
秒
Apache 2.x 支持插入式并行处理模块,称为。
在编译Apache时你必须选择也只能选择一个MPM
针对非UNIX系统的MPM:
,
,
,
。
对类UNIX系统,有几个不同的MPM可供选择,他们都会影响到httpd的速度和可伸缩性:
MPM使用多个子进程,每个子进程中又有多个线程。每个线程处理一个请求。该MPM通常对高流量的服务器是一个不错的选择。因为它比
MPM需要更少的内存且更具有伸缩性。
MPM使用多个子进程,但每个子进程并不包含多线程。每个进程只处理一个链接。在许多系统上它的速度和
MPM一样快,但是需要更多的内存。这种无线程的设计在某些情况下优于
MPM:它可以应用于不具备线程安全的第三方模块(比如php3/4/5),且在不支持线程调试的平台上易于调试,而且还具有比
MPM更高的稳定性。
其他模块:
对于编译成dso(动态加载)的模块.去掉它很容易: 注释掉loadModule指令中不需要的模块
对于编译成静态的模块.只能重新编译apache了.
阅读(1607) | 评论(0) | 转发(0) |