Apache的配置优化
2015-06-29 23:09
741 查看
Apache的配置优化
【APACHE的工作方式】
prefork模式(默认)这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。
这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将MaxClients设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。
worker模式
此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是,它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。
【apache配置参数备注】
生产配置举例
ServerLimit 1000 StartServers 10 MinSpareServers 10 MaxSpareServers 20 MaxClients 1000 MaxRequestsPerChild 5000
httpd.conf
参数介绍
1、KeepAlive On/OffKeepAlive指的是保持连接活跃,类似于Mysql的永久连接。换一句话说,如果将KeepAlive设置为On,那么来自同一客户端的请求就不需要再一次连接,避免每次请求都要新建一个连接而加重服务器的负担。一般情况下,图片较多的网站应该把KeepAlive设为On。
2、KeepAliveTimeOut number
如果第二次请求和第一次请求之间超过KeepAliveTimeOut的时间的话,第一次连接就会中断,再新建第二个连接。它的设置一般考虑图片或者JS等文件两次请求间隔,我的设置经验为3-5秒。
3、MaxKeepAliveRequests 100
一次连接可以进行的HTTP请求的最大请求次数。将其值设为0将支持在一次连接内进行无限次的传输请求。事实上没有客户程序在一次连接中请求太多的页面,通常达不到这个上限就完成连接了。
4、StartServers 10
设置服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。
5、MinSpareServers 10
设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。
6、MaxSpareThreads 20
设置空闲子进程的最大数量。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成”MinSpareServers+1″。
7、ServerLimit 1000
服务器允许配置的进程数上限。只有在你需要将MaxClients设置成高于默认值256的时候才需要使用。要将此指令的值保持和MaxClients一样。修改此指令的值必须完全停止服务后再启动才能生效,以restart方式重启动将不会生效。
8、MaxClients 1000
用于伺服客户端请求的最大请求数量(最大子进程数),任何超过MaxClients限制的请求都将进入等候队列。默认值是256,如果要提高这个值必须同时提高ServerLimit的值。笔者建议将初始值设为(以Mb为单位的最大物理内存/2),然后根据负载情况进行动态调整。比如一台4G内存的机器,那么初始值就是4000/2=2000。
9、MaxRequestsPerChild 5000
apache.exe进程包括一个是父进程、一个是子进程,父进程接到访问请求后,将请求交由子进程处理。MaxRequestsPerChild这个指令设定一个独立的子进程将能处理的请求数量。在处理“MaxRequestsPerChild 数字”个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放,如果再有访问请求,父进程会重新产生子进程进行处理。 如果MaxRequestsPerChild缺省设为0(无限)或较大的数字(例如10000以上)可以使每个子进程处理更多的请求,不会因为不断终止、启动子进程降低访问效率,但MaxRequestsPerChild设置为0时,如果占用了200~300M内存,即使负载下来时占用的内存也不会减少。内存较大的服务器可以设置为0或较大的数字。内存较小的服务器不妨设置成30、50、100,以防内存溢出。所以一般情况下,如果你发现服务器的内存直线上升,建议修改该参数试试。
Apache插件配置
#LoadModule authn_file_module modules/mod_authn_file.so #LoadModule authn_dbm_module modules/mod_authn_dbm.so #LoadModule authn_anon_module modules/mod_authn_anon.so #LoadModule authn_dbd_module modules/mod_authn_dbd.so #LoadModule authn_default_module modules/mod_authn_default.so LoadModule authz_host_module modules/mod_authz_host.so #LoadModule authz_groupfile_module modules/mod_authz_groupfile.so #LoadModule authz_user_module modules/mod_authz_user.so #LoadModule authz_dbm_module modules/mod_authz_dbm.so #LoadModule authz_owner_module modules/mod_authz_owner.so #LoadModule authz_default_module modules/mod_authz_default.so #LoadModule auth_basic_module modules/mod_auth_basic.so #LoadModule auth_digest_module modules/mod_auth_digest.so #LoadModule dbd_module modules/mod_dbd.so #LoadModule dumpio_module modules/mod_dumpio.so #LoadModule reqtimeout_module modules/mod_reqtimeout.so #LoadModule ext_filter_module modules/mod_ext_filter.so LoadModule include_module modules/mod_include.so #LoadModule filter_module modules/mod_filter.so #LoadModule substitute_module modules/mod_substitute.so LoadModule deflate_module modules/mod_deflate.so LoadModule log_config_module modules/mod_log_config.so LoadModule log_forensic_module modules/mod_log_forensic.so LoadModule logio_module modules/mod_logio.so LoadModule env_module modules/mod_env.so #LoadModule mime_magic_module modules/mod_mime_magic.so #LoadModule cern_meta_module modules/mod_cern_meta.so LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so #LoadModule ident_module modules/mod_ident.so #LoadModule usertrack_module modules/mod_usertrack.so #LoadModule unique_id_module modules/mod_unique_id.so LoadModule setenvif_module modules/mod_setenvif.so #LoadModule version_module modules/mod_version.so LoadModule mime_module modules/mod_mime.so #LoadModule dav_module modules/mod_dav.so LoadModule status_module modules/mod_status.so #LoadModule autoindex_module modules/mod_autoindex.so #LoadModule asis_module modules/mod_asis.so #LoadModule info_module modules/mod_info.so #LoadModule cgi_module modules/mod_cgi.so #LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule vhost_alias_module modules/mod_vhost_alias.so #LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so #LoadModule imagemap_module modules/mod_imagemap.so #LoadModule actions_module modules/mod_actions.so #LoadModule speling_module modules/mod_speling.so #LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule jk_module modules/mod_jk.so
Apache日志配置
LogLevel warn LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common #LogFormat "%h %{HTTP_HOST}i %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio LogFormat "%A - %h %{HTTP_HOST}i %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O \"%V %v:%p %T\" %{cookie}n" combinedio #CustomLog "logs/access_log" common
其中增加了%{cookie}配置,以供大数据平台分析使用;
Apache状态检查
<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from localhost 192.168.1.0/24 </Location>
Apache JkWorker配置
#configure for mod_jk JkWorkersFile conf/workers.properties JkShmFile logs/mod_jk.shm JkLogFile logs/mod_jk.log JkLogLevel error
Apache压缩配置
gzip可以级大的加速网站.有时压缩比率高到80%,近来测试了一下,最少都有40%以上,还是相当不错的.在Apache2之后的版本,模块名不叫gzip,而叫mod_deflate如果要开启gzip的话,一定要打开下面二个模块.
LoadModule headers_module modules/mod_headers.so LoadModule deflate_module modules/mod_deflate.so
设置压缩比率,取值范围在 1(最低) 到 9(最高)之间,不建议设置太高,虽然有很高的压缩率,但是占用更多的CPU资源.
DeflateCompressionLevel 6 AddOutputFilter DEFLATE html xml js css SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary Header append Vary User-Agent env=!dont-vary
Apache Cookie配置
<IfModule usertrack_module> CookieExpires " 1 weeks" CookieStyle RFC2965 CookieName _m_data_ CookieTracking on </IfModule>
Apache静态页面配置
主要用于后台Tomcat没办法正常使用时,主页提示之用,如:升级页面、网站临时异常;#<VirtualHost *:80> # ServerName www.domain.com # ServerAlias www.domain.com # DocumentRoot "/domain/apache2.2.25/htdocs" # ErrorLog "|/domain/apache2.2.25/bin/rotatelogs /domain/apache2.2.25/logs/update/errorlog-%Y-%m-%d 20M" #</VirtualHost> #<VirtualHost *:80> # ServerName *.domain.com # ServerAlias *.domain.com # DocumentRoot "/domain/apache2.2.25/htdocs" # ErrorLog "|/domain/apache2.2.25/bin/rotatelogs /domain/apache2.2.25/logs/update/errorlog-%Y-%m-%d 20M" #</VirtualHost>
Apache虚拟主机
<VirtualHost *:80> ServerName www.domain.com ServerAlias www.domain.com DocumentRoot "/domain/source/www/deploy/domain" SetEnvIf Request_URI \.gif NOLOG SetEnvIf Request_URI \.jpg NOLOG SetEnvIf Request_URI \.png NOLOG SetEnvIf Request_URI \.swf NOLOG SetEnvIf Request_URI \.css NOLOG SetEnvIf Request_URI \.js NOLOG SetEnvIf Request_URI \.ico NOLOG #SetEnvIf Request_URI "/fckeditor/.*" NOLOG ErrorLog "|/domain/apache2.2.25/bin/rotatelogs /domain/apache2.2.25/logs/error/domain-error-%Y%m%d.log 5M" CustomLog "|/domain/apache2.2.25/bin/rotatelogs /domain/apache2.2.25/logs/access/domain-access-%Y%m%d.log 86400 480" combinedio env=!NOLOG AddOutputFilterByType DEFLATE text/html JkMount /* domain_worker JKUnmount /*.js domain_worker JKUnmount /*.css domain_worker JKUnmount /*.img domain_worker JKUnmount /*.jpg domain_worker JKUnmount /*.png domain_worker JKUnmount /*.map domain_worker JKUnmount /image/* domain_worker JKUnmount /images/* domain_worker JKUnmount /upload/* domain_worker KeepAlive off ExpiresActive On ExpiresByType image/gif A2592000 ExpiresByType image/png A2592000 ExpiresByType image/jpg A2592000 ExpiresByType text/plain A2592000 ExpiresByType image/jpeg A2592000 ExpiresByType image/x-icon A2592000 ExpiresByType application/javascript A2592000 Header unset Expires DirectoryIndex index.htm RewriteEngine on RewriteCond %{HTTP_HOST} ^juran.cn$ [NC] RewriteRule ^/(.*) http://www.domain.com/$1 [R=301,L] RewriteRule ^.+/$ index.htm [L,R] ErrorDocument 404 /error.htm </VirtualHost> <Directory "/domain/source/www/deploy/domain/WEB-INF"> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory> <Directory "/domain/source/www/deploy/domain"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
Rewrite 配置
RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) #定义重写发生的条件 RewriteRule ^(.*)$ /index.php/$1 [L] RewriteLog D:/lib/rewrite.log #设置rewrite日志文件,主要用来rewrite调试 RewriteLogLevel 3 #设置rewrite日志文件记录的等级,主要用来rewrite调试
Apache workers.properties配置
worker.list=controller,domain_worker,domain_worker1 worker.domain_worker.port=8009 worker.domain_worker.host=localhost1 worker.domain_worker.type=ajp13 worker.domain_worker1.port=8009 worker.domain_worker1.host=localhost2 worker.domain_worker1.type=ajp13 worker.controller.lbfactor=1 worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=domain_worker,domain_worker1
相关文章推荐
- Apache Qpid Broker的安全机制
- Mac OS 10.10.3下Apache + mod_wsgi配置【一】
- svn更新报svn org.apache.subversion.javahl.ClientException,svn: Unable to connect to a repository at URL
- Apache自动将%20转换为空格
- apache 禁止爬虫
- org.apache.poi读取后缀为.xls和.xlsx的excel文件
- java.lang.SecurityException:Servlet of class org.apache.catalina.servlets.InvokerServlet is privileged
- org.apache.jasper.JasperException:An exception occurred processing JSPpage/control/RuZhuControl.jsp
- Apache虚拟主机设置
- apache kafka系列之server.properties配置文件参数说明
- Apache wsgi Flask配置细节
- apachetop 实时监测web服务器运行状况
- CentOS 7.0 yum安装Apache、PHP和MySQL
- Apache整合PHP+MySQL
- AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0
- maven项目建立pom.xml报无法解析org.apache.maven.plugins:maven-resources-plugin:2.4.3
- ubuntu安装apache
- 安装apache
- com.sun.org.apache.commons.logging.LogConfigurationException: java.lang.NullPointerException
- org.apache.hadoop.dfs.SafeModeException