经典linux Apache模块及内核优化大全Word文档下载推荐.docx
- 文档编号:22043328
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:30
- 大小:934.12KB
经典linux Apache模块及内核优化大全Word文档下载推荐.docx
《经典linux Apache模块及内核优化大全Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《经典linux Apache模块及内核优化大全Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
所以选择把最常调用的模块编译成动态共享对象(DSO)。
zend出品的ZendPerformanceSuite,这是一个Apache服务器的性能测试和优化的工具。
可以在它的主页注册并且免费下载。
并且得到一个协议文件。
下载的软件包中有两个文件:
主程序:
ZendPerformanceSuite-3.6.0a-Linux_glibc21-i386.tar.gz和协议文件:
zend_performance_suite.dat
2.软件安装:
gunzipZendPerformanceSuite-3.6.0a-Linux_glibc21-i386.tar.gz
tarvxfZendPerformanceSuite-3.6.0a-Linux_glibc21-i386.tar
cpzend_performance_suite.dat/ZendPerformanceSuite-3.6.0
./install
(1)软件安装非常简单只要根据安装向导的提示操作即可,见图3.
图3软件安装向导
3、Apache服务器的测试
(1)打开一个网络浏览器输入:
然后输入密码即可进入软件的主界面。
(2)ZendPerformanceSuite的主界面分成四部分。
见图4。
图4软件的主界面
ZendPerformanceSuite软件包括四部分:
“FastTrack”、“Console”、“FileView”、“Testing”。
FastTrack是测试向导、Console是参数设置、FileView显示存放的文件、Testing是测试命令。
(3)参数说明
其中“Console”部分比较重要。
这里介绍一下它的主要选项:
见图-3:
图5软件的“Console”界面
在这个菜单中将要设置Apache服务器的各项参数:
“ModifiedFileDetection”:
自动检测文件类型,
“FilepathIdentifiction”:
全部文件深度,
“Acceleratormemory”:
加速内存容量,
“MemoryReclaimThreshold”:
内存回收比例,
“MaximumAcceleratedFiles”:
最大加速文件数量。
“ExtensionsForPHPFiles”扩展文件类型,
“DynamicCachingEnabled”是否支持动态缓存,
“MaximumCacheSize”最大缓存容量,
“MinimumFreeDiskspace”:
最小磁盘空间,
“MaximumCachedFileSize”最大缓存文件大小,
“DefaultCacheLifetime”缺省缓存文件存活时间,
“DefaultDynamicCachingConditions”:
缺省缓存状态,
“CompressFiles”是否压缩文件。
根据你的Apache服务器情况配置“Console”中的参数,就可以测试了,目前ZendPerformanceSuite支持“PerformanceTest”(性能测试)和“CompressionTest”(压力测试)。
(4)压力测试
这里以压力测试为例,“Console”各项参数填写后就可以进行测试了,选择“Testing”菜单进行测试,结果见图-4。
图6Apache服务器压力测试结果
可以看到测试数据以图形的数值两种方式在图-4中。
性能测试的步骤和压力测试一样的,需要说明的是你需要通过修改“Console”菜单中的参数进行多次测试,最后找到符合你的Apache服务器最佳选项。
按“ApplyChange”按钮保存设置。
2.配置Apache提高性能
【模块说明】
一般说来,可以不需要的模块包括:
#LoadModuleenv_modulelibexec/mod_env.so
#LoadModulenegotiation_modulelibexec/mod_negotiation.so
#LoadModulestatus_modulelibexec/mod_status.so
#serversideinclude已经过时了
#LoadModuleincludes_modulelibexec/mod_include.so
#不需要将没有缺省index文件的目录下所有文件列出
#LoadModuleautoindex_modulelibexec/mod_autoindex.so
#尽量不使用CGI:
一直是Apache安全问题最多的地方
#LoadModulecgi_modulelibexec/mod_cgi.so
#LoadModuleasis_modulelibexec/mod_asis.so
#LoadModuleimap_modulelibexec/mod_imap.so
#LoadModuleaction_modulelibexec/mod_actions.so
#不使用安全认证可以大大提高访问速度
#LoadModuleaccess_modulelibexec/mod_access.so
#LoadModuleauth_modulelibexec/mod_auth.so
#LoadModulesetenvif_modulelibexec/mod_setenvif.so
最好保留的有:
#用于定制log格式
LoadModuleconfig_log_modulelibexec/mod_log_config.so
#用于增加文件应用的关联
LoadModulemime_modulelibexec/mod_mime.so
#用于缺省index文件:
index.php等
LoadModuledir_modulelibexec/mod_dir.so
可用可不用的有:
#比如:
需要在~/username/下调试php可以将
LoadModuleuserdir_modulelibexec/mod_userdir.so
需要将以前的URL进行转向或者需要使用CGIscrīpt-alias
LoadModulealias_modulelibexec/mod_alias.so
【配置MPM】
MPM(Multi
-Processing
Modules,多道处理模块)是Apache2.0中影响性能的最核心特性。
主要是利用多线程和多进程来提高处理效率,有prefork和worker两种方式。
apache2主要的优势就是对多处理器的支持更好,在编译时同过使用–with-mpm选项来决定apache2的工作模式。
如果知道当前的apache2使用什么工作机制,可以通过httpd-l命令列出apache的所有模块,就可以知道其工作方式:
prefork:
prefork的工作原理是,控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足
MinSpareServers设置的值为止。
这就是预派生(prefork)的由来。
这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。
如果httpd-l列出prefork.c,则需要对下面的段进行配置:
StartServers5#启动apache时启动的httpd进程个数。
MinSpareServers5#服务器保持的最小空闲进程数。
MaxSpareServers10#服务器保持的最大空闲进程数。
MaxClients150#最大并发连接数。
MaxRequestsPerChild1000#每个子进程被请求服务多少次后被kill掉。
0表示不限制,推荐设置为1000。
在该工作模式下,服务器启动后起动5个httpd进程(加父进程共6个,通过ps-ax|grephttpd命令可以看到)。
当有用户连接时,apache会使用一个空闲进程为该连接服务,同时父进程会fork一个子进程。
直到内存中的空闲进程达到MaxSpareServers。
该模式是为了兼容一些旧版本的程序。
我缺省编译时的选项。
worker:
worker的工作原理是,由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild
线程数,各个线程独立地处理请求。
同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;
而MaxClients设置了所有子进程中的线程总数。
如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。
如果httpd-l列出worker.c,则需要对下面的段进行配置:
StartServers2#启动apache时启动的httpd进程个数。
MinSpareThreads25#服务器保持的最小空闲线程数。
MaxSpareThreads75#服务器保持的最大空闲线程数。
ThreadsPerChild25#每个子进程的产生的线程数。
MaxRequestsPerChild0#每个子进程被请求服务多少次后被kill掉。
该模式是由线程来监听客户的连接。
当有新客户连接时,由其中的一个空闲线程接受连接。
服务器在启动时启动两个进程,每个进程产生的线程数是固定的(ThreadsPerChild决定),因此启动时有50个线程。
当50个线程不够用时,服务器自动fork一个进程,再产生25个线程。
perchild:
如果httpd-l列出perchild.c,则需要对下面的段进行配置:
NumServers5#服务器启动时启动的子进程数
StartThreads5#每个子进程启动时启动的线程数
MinSpareThreads5#内存中的最小空闲线程数
MaxSpareThreads10#最大空闲线程数
MaxThreadsPerChild2000#每个线程最多被请求多少次后退出。
0不受限制
MaxRequestsPerChild10000#每个子进程服务多少次后被重新fork。
0表示不受限制。
该模式下,子进程的数量是固定的,线程数不受限制。
当客户端连接到服务器时,又空闲的线程提供服务。
如果空闲线程数不够,子进程自动产生线程来为新的连接服务。
该模式用于多站点服务器。
【有效地使用选项和重写】?
{
是否支持使用.htaccess文件来定义或者修改apache的设置,是否支持目录列表
<
Directory/>
Options
indexes
FollowSymLinks
AllowOverrideAll
/Directory>
2、rewrite配置
RewriteEngineon
RewriteCond$1!
^(index\.php|images|robots\.txt)#定义重写发生的条件
RewriteRule^(.*)$/index.php/$1[L]
RewriteLogD:
/lib/rewrite.log#设置rewrite日志文件,主要用来rewrite调试
RewriteLogLevel3 #设置rewrite日志文件记录的等级,主要用来rewrite调试
}
清单2.为根目录应用的一个Directory容器
AllowOverrideNone
OptionsFollowSymLinks
如果禁用了
FollowSymLinks,Apache就必须检查使用该文件名的所有组件(目录和文件本身),以确保它们不是符号连接。
这会带来额外的开销(磁盘操作)。
清单3.将
FollowSymLinks
约束为一个用户的目录
Directory/home/*/public_html>
Options-FollowSymLinks
【gzip压缩】
网站启用gzip压缩功能对于提升网站性能是非常明显的,首先是减少了服务器使用的带宽,其次是提高了用户浏览网站的速度。
当然也有弊端,就是增加了硬件负载。
gzip可以极大的加速网站.有时压缩比率高到80%,近来测试了一下,最少都有40%以上,还是相当不错的.在Apache2之后的版本,模块名不叫gzip,而叫mod_deflate
对Apache简单做了下优化——启用gzip压缩功能。
Linux下如何开启Apache的gzip压缩功能的:
1生成gzip压缩模块
Apache的gzip功能是使用mod_deflate.so模块,因此,我们先生成mod_deflate.so模块。
首先从网上下载一个Apache安装程序(尽量与当前使用的Apache版本相同)然后解压,我们解压到了tmp目录下
#cd/tmp/httpd-2.2.11/modules/filters
#/usr/local/apache/bin/apxs-i-c-amod_deflate.c
//生成mod_deflate.so模块
这时候在Apache安装目录的modules文件夹下应该就多了一个mod_deflate.so模块文件
#ls/usr/local/apache/modules/
httpd.exp
libphp5.so
mod_deflate.so
2在Apache中开启gzip压缩
如果要开启gzip的话,一定要打开下面二个模块.
LoadModuleheaders_modulemodules/mod_headers.so
LoadModuledeflate_modulemodules/mod_deflate.so
打开Apache配置文件,然后添加mod_deflate.so模块
#vi/usr/local/apache/conf/httpd.conf
LoadModuledeflate_module
modules/mod_deflate.so
3设置gzip压缩
打开Apache配置文件,然后添加如下三行内容
AddOutputFilterByTypeDEFLATEtext/htmltext/phptext/pngtext/jpgtext/plaintext/csstext/xmltext/javascript
DeflateCompressionLevel9
SetOutputFilterDEFLATE
上述参数解释:
AddOutputFilterByTy
对什么样的内容启用GZIP压缩
DeflateCompressionLevel
表压缩级别,置压缩比率,取值范围在1(最低)到9(最高)之间,不建议设置太高,虽然有很高的压缩率,但是占用更多的CPU资源。
SetOutputFilterDEFLATE
启用deflate模块对本站点的所有输出进行GZIP压缩设
4重启Apache
下面二个测试网站
http:
//www.whatsmyip.org/mod_gzip_test/
测试数据对css
OriginalSize:
44KB
GzippedSize:
10KB
DataSavings:
77.27%
测试数据js
6KB
2KB
66.67%
测试数据php
62KB
15KB
75.81%
【deflate】
配置静态页面压缩输出模块deflate
使用mod_deflate模块
在httpd.conf中加入以下设置:
DeflateFilterNoteratio
SetEnvIfNoCaseRequest_URI\.(?
:
gif|jpe?
g|png)$no-gzipdont-vary
exe|t?
gz|zip|bz2|sit|rar)$no-gzipdont-vary
SetEnvIfNoCaseRequest_URI\.pdf$no-gzipdont-vary
或者
AddOutputFilterByTypeDEFLATEtext/*
AddOutputFilterByTypeDEFLATEapplication/ms*application/vnd*application/postscrīpt
两种配置方法的作用差不多,其目的主要是把一些不必要压缩的文件禁止压缩。
【mod_cache】
配置mod_cache模块
#cd/usr/local/apache2.2/conf/Includes
#vimod_cache.conf
在配置文件里添加如下语句
IfModulemod_cache>
LoadModuledisk_cache_modulemodules/mod_disk_cache.so
IfModulemod_disk_cache>
CacheRoot/
CacheSize256
CacheEnabledisk/
CacheDirLevels5
CacheDirLength3
/IfModule>
LoadModulemem_cache_modulemodules/mod_mem_cache.so
IfModulemod_mem_cache>
CacheEnablemem/
MCacheSize4096
MCacheMaxObjectCount100
MCacheMinObjectSize1
MCacheMaxObjectSize2048
vi/usr/local/apache2/conf/httpd.conf
在末尾添加上:
CacheForceCompletion
100
CacheDefaultExpire3600
CacheMaxExpire86400
CacheLastModifiedFactor0.1
设置虚拟目录
然后保存退出。
启动apache
参数的解释:
mod_cache:
CacheEnable:
启动mod_cache,其后接两个参数。
第一个参数指定快取的种类,应设为mem(记忆体快取)或disk(磁碟快取)之其一;
第二个参数指定使用快取的URI路径,如果对整个网站(或虚拟主机)进行快取,简单指定为根目录(/)即可。
CacheForceCompletion:
这个值指定当HTTPrequest被取消时,内容的产生动作要完成的百分比;
预设是60(%)。
CacheDefaultExpire:
指定快取的预设过期秒数;
预设值是一小时(3600)。
CacheMaxExpire:
指定快取最大的过期秒数;
预设值是一天(86400)。
CacheLastModifiedFactor:
用来从回应里LastModified资讯算出expiredate。
计算方式是:
expireperiod(过期时距)=最后更新后至今的时间间距*CacheLastModifiedFactor
而
expiredate=目前时间+expireperiod
不过无论如何,过期时间不能超过CacheMaxExpire的设定值。
现在。
如果用squid对该服务器进行反向代理的话,就可以通过cache实现web的加速了
【mod_expires】
mod_expires可以减少10%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE在本地,根本不向服务器发出请求。
mod_expires的安装配置:
IfModulemod_expires>
ExpiresActiveon
ExpiresByTypeimage/gif"
accessplus1month"
ExpiresByTypetext/css"
nowplus1month"
ExpiresDefault"
nowplus1day"
注释:
所有的.gif文件1个月以后过期
所有的文件缺省1天以后过期
【dosevasive
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 经典linux Apache模块及内核优化大全 经典 linux Apache 模块 内核 优化 大全