当前位置:文档之家› 服务器性能调优

服务器性能调优

服务器性能优化1、Apache+tomcat集群方式服务器基本设置:1个apache集成二个tomcat。

安装apache http server省略,访问地址为http://127.0.0.1:8081安装tomcat,解压apache-tomcat-6.0.20.zip,测试时我是把两个tomcat分开放在不同的虚拟机,其中一个是和apache同一台虚拟机。

两个tomcat分别命名为worker2和worker3先说tomcat.worker2的配置:server.xml第一步:配置http监听端口,这里端口设为8079,该步骤非必要,只要不冲突就行了。

<Connector port="8079" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />第二步:配置AJP监听端口,这里端口设为8077,该步骤非必要,只要不冲突就行了。

<Connector port="8077" protocol="AJP/1.3" redirectPort="8443" />第三步:配置服务器标识,这里标识名配置为:worker2,添加jvmRoute="worker2",该步骤必须。

<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">在Engine节点启用集群配置,只需去掉Cluster节点前的注释就行了,该步骤必须,配置了集群才能实现Session复制,如果只有一个集群,只按我下边的配置就行了,如果多个集群,则不能按此配置,tomcat服务器内的帮助文档/docs/cluster-howto.html,/docs/config/cluster.html有介绍,需要的可以参考下。

<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2"> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>要实现session复制,还需要在context.xml添加属性distributable="true",如下:<Context distributable="true">如果不想在context.xml中添加distributable="true",还有另一方法是在应用程序的web.xml中添加<distributeable/>,不过这方法我没有测试。

配置完成,访问地址为:http://127.0.0.1:8079另一个tomcat.worker3的配置server.xml<Connector port="8078" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><Connector port="9009" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost" jvmRoute="worker3"> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>context.xml配置tomcat.worker2一样。

配置完成,访问地址为:http://127.0.0.1:8078注意:如果两个tomcat是放在同一台机内,server.xml可能还需要修改其它端口,请确认两个tomcat能正常启动。

第四步:使用ajp_proxy方式进行集群去掉httpd.conf文件中下面内容的注释(删掉#号),开启下边的配置Include conf/extra/httpd-vhosts.confLoadModule proxy_module modules/mod_proxy.soLoadModule proxy_ajp_module modules/mod_proxy_ajp.soLoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_connect_module modules/mod_proxy_connect.soLoadModule proxy_ftp_module modules/mod_proxy_ftp.soLoadModule proxy_http_module modules/mod_proxy_http.sohttpd.conf,删除刚才jk方式的配置内容,增加下边的配置ProxyRequests Off<proxy balancer://loadbalancer>BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=worker3 BalancerMember ajp://108.88.3.105:8077 loadfactor=1 route=worker2</proxy>conf/extra/httpd-vhosts.conf增加配置<VirtualHost *:8081>ServerAdmin xxxx@ServerName localhostServerAlias localhostProxyPass / balancer://loadbalancer/ stickysession=jsessionid nofailover=OnProxyPassReverse / balancer://loadbalancer/ErrorLog "logs/loadbalancer-error.log"CustomLog "logs/loadbalancer-access.log" common</VirtualHost>配置完成任务,访问http://127.0.0.1:8081/test/test.jsp,检查是否能正常访问。

2、Apache开启缓存和GZIP的压缩模式第1步LoadModule deflate_module modules/mod_deflate.soLoadModule headers_module modules/mod_headers.so打开httpd.conf后,先将上面两行配置前面的#号去掉,这样apache就会启用这两个模块,其中mod_deflate是压缩模块,就是对要传输到客户端的代码进行gzip压缩;mod_headers模块的作用是告诉浏览器页面使用了gzip压缩,如果不开启mod_headers那么浏览器就会对gzip压缩过的页面进行下载,而无法正常显示。

第2步在httpd.conf中加入以下代码,<IfModule mod_deflate.c>SetOutputFilter DEFLATESetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-varySetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-varySetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascriptAddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphpBrowserMatch ^Mozilla/4 gzip-only-text/htmlBrowserMatch ^Mozilla/4.0[678] no-gzipBrowserMatch \bMSIE !no-gzip !gzip-only-text/html</IfModule>本配置到这里apache中的gzip压缩就配置完成,重启apache后,新的配置就会生效。

最后再用工具检查一下,果然分数提高了很多~呵呵。

不过开启gzip 功能需要额外CPU资源开销。

3、优化Tomcat运行性能第一步:修改Tomcat Connector运行模式修改Tomcat以nio模式来运行,只需要在Tomcat安装目录/conf/server.xml文件中将如下配置:<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />中的protocol属性值改为org.apache.coyote.http11.Http11NioProtocol即可:<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000"redirectPort="8443" />此时,我们就可以在Tomcat Manager中看到当前服务器状态页面的HTTP协议的Connector运行模式已经从http-bio-8080变成了http-nio-8080。

相关主题