1.关闭不必要的模块
2.文件夹directory优化
Options Indexes Includes FollowSymLinks ExecCGI
AllowOverride None
ExecCGI 允许执行 CGI 脚本。如果该选项没有设置,则 CGI 脚本将不能执行。如果没有必要最好不要开启,有可能会有安全性问题.
Includes 允许服务器端包含。服务器端包含允许一个 HTML 文件包含其他文件。这个平时用不到,他要检查每个html所以不要开启.
IncludesNOEXEC 允许服务器端包含,但 CGI 脚本中的 #exec 和 #include 指令无效。不常用,关掉
Indexes 如果 DirectoryIndex (如 index.html) 在请求的目录没存在的话,按一定方式显示目录内容列表.常用,开启。
FollowSymLinks 最好关掉符号连接,Apache就必须执行额外的系统调用以验证符号连接。文件名的每一个组成部分都需要一个额外的调用.当打开这个选项时,Apache将检查每个请求中是否包含对符号连接的引用,这将对请求中包含的每个路径调用一次lstat()系统调用。在请求"/index.html"时,Apache将对"/www"、"/www/htdocs"、"/www/htdocs/index.html"执行lstat()调用。而且lstat()的执行结果不被缓存,因此对每一个请求都要执行一次。除非你准备使用符号连接,否则用 Options -FollowSymLinks 来关掉它。 用一个破折号引导,从而禁用此指令。
AllowOverride 这个选项,是开启如包括htaccess来进行权限控制,Apache必需首先在当前目录中查找是否存在这个文件,如果存在就解析这个文件并在当前目录中应用文件中的设置。更坏的是,Apache不仅要查看当前的目录,还要查看当前目录的所有上层目录是否包括htaccess文件以根据所有这些文件最终确定设置。例如请求"/index.html",则Apache会试图打开"/.htaccess"、"/www/.htaccess"、"/www/htdocs/.htaccess"。其解决方法 AllowOverride None来关掉,当然,这样做静态化就只能写在VH的配置中了,禁用后设置文件仅在服务器启动时解析一次 。
DirectoryIndex index*,不要使用通配符,全用完整列表,如:DirectoryIndex index.cgi index.pl index.shtml index.html。当然,最少好些,明确的指定设置文件列表,放在最前最合理。
Keepalive,这样子进程将保持忙碌状态以等待被打开连接上的新请求。
如果开启KeepAliveTimeout的默认值被设置为5秒。最好不要大于60秒。
(1)Timeout该参数指定Apache在接收请求或发送所请求内容之前的最长等待时间(秒),若超过该时间Apache则放弃处理该请求,并释放连接。该参数默认值为120,推荐设置为60,对于访问量较大的网站可以设置为30。
(2)KeepAlive该参数控制Apache是否允许在一个连接中有多个请求,默认打开。但对于大多数论坛类型站点来说,通常设置为off以关闭该支持。
(3)MPM-prefork.c在默认情况下Apache使用Prefork(进程)工作模式,可以说这部分的参数设置是对Apache性能影响的核心和关键。用户可以在配置文档中找到以下配置段:
禁用日志
写入日志信息是一个很花费时间的工作,尽管Apache保持日志文件的打开状态以节省打开文件的时间,但仍然得花费不少的时间。如果没有必要存储日志信息,你可以关闭这个选项以节省出更多的处理器时间,只需要在设置文件中把日志那一行注释掉就可以关掉它。当然,实在需要,最要加入另一个单盘来管理日志存储.
静态内容方面
如果你的WEB服务器使用了大量静态内容或者你分别用两个WEB服务器处理动态和静态内容,那么你现在的主要目标就是缩短服务器发送被请求内容的响应时间,最简单的方法就是使用mod_cache缓存模块。你可以使用mod_disk_cache和mod_mem_cache来分别提供基于磁盘的缓存和基于内存的缓存。
优化动态内容
动态内容可能是所有WEB服务器中最消费时间的部分,特别是使用CGI的时候,一个简单的程序都可能会把响应时间增加好几秒。
使用基于脚本的方案的一大好处是它们在Apache里装入了解释器,这就减少了执行时再装入解释器的时间,一些方案还把解析过的脚本缓存起来,这样下一次遇到同样的请求就可以直接执行而无需再次解析。当然也可以应用的服务分离,象使用php的fastcgi来在后面跑,前面给Web服务器.
其它优化
可以把 Apache(httpd)的优先级改为 -15,这已经接近上限(优先级从最高的 -20 到最低的 19)。可以从命令行使用这两个实用程序:
* 要想停止现有服务并以优先级 -15 重新启动它,可以发出命令 nice -15 httpd
* 要想避免停止服务,可以发出命令 renice -15 -p 1996
这里的差异是 renice 需要进程 ID(或 pid)。如上所述,可以使用 top 查明 pid。nice 和 renice 是很灵活的程序
配置mod_expires模块(这个非常有用的优化)
mod_expires可以减少20-30%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE在本地,根本不向服务器发出请求。除开用户有发送no-cache才会更新,但要注意更新快的文件不要这么做.
mod_expires的安装配置:
ExpiresActive On
ExpiresDefault A60
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType text/css A2592000
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType text/plain A604800
ExpiresByType application/x-shockwave-flash A604800
ExpiresByType video/x-flv A604800
ExpiresByType application/pdf A604800
ExpiresByType text/html A60
"M"表示源文件的最后修改时刻,"A"表示客户端对源文件的访问时刻。
如果使用"M",所有当前缓存中的文档副本都将在同一时刻过期,这个可能对定期更新的URL(比如位于同一位置的每周通告)很有好处。如果使用"A",则每个客户端所得到的有效期是不一样的,这个可能对那些几乎不更新的图片文件很有好处,特别是对于一组都引用了相同图片的相关文档。
。
关掉不要的系统服务
apmd,autofs,cups,hpoj.isdn,pcmcia,rhnsd,sendmail,xfs(字体服务)
打开重用TCP/IP中的time-wait套接
sysctl -w net.ipv4.tcp_tw_reuse=1
启动TIME-WAIT 套接字状态的快速循环功能
sysctl =w net.ipv4.tcp_tw_recycle=1
阅读(701) | 评论(0) | 转发(0) |