﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-风香园-文章分类-AP Server</title><link>http://www.blogjava.net/wuxufeng8080/category/28146.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 16 Dec 2007 09:35:32 GMT</lastBuildDate><pubDate>Sun, 16 Dec 2007 09:35:32 GMT</pubDate><ttl>60</ttl><item><title>Tomcat常用调优技巧 </title><link>http://www.blogjava.net/wuxufeng8080/articles/168062.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Sun, 16 Dec 2007 06:02:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/articles/168062.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/168062.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/articles/168062.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/168062.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/168062.html</trackback:ping><description><![CDATA[<p dir="ltr" align="center">&nbsp;</p>
<a id="viewpost1_TitleUrl" href="http://www.blogjava.net/zhuyuanxiang/archive/2007/12/15/167979.html">&nbsp;<u>&nbsp; 本文是就Tomcat 4为基础向大家介绍WEB容器调优的，因为许多朋友安装好之后就开始正式上线，很少有人以用户现场为基础对服务器进行调优。如果并发量小，系统可能不会出问题，但是并发量大时，系统反应速度迅速下</u>降，由于不了解原因，因此大家还拼命在自己的应用中寻找问题，从而浪费了宝贵的现场时间。但是Tomcat如何调优呢？<br />
&nbsp;&nbsp;&nbsp; 其实真正的WEB容器调优是需要许多方面的知识的，你必须了解网络＋硬件＋OS＋JVM＋WEB容器，但是这篇文章无法讲解那么多，而应用服务器本身也有些调优的基本原则，下文就会给予介绍。<br />
&nbsp;&nbsp;&nbsp; 先在Tomcat安装目录中找到conf子目录，然后再打开web.xml文件，搜索附件A中的内容，可能会有些不同。不同的地方就是需要修改的部分。<br />
&nbsp;&nbsp;&nbsp; 1. 屏蔽DNS查询。<br />
&nbsp;&nbsp;&nbsp; Web应用程序可以通过Web容器提供的getRemoteHost()方法获得访问Web应用客户的IP地址和名称，但是这样会消耗Web容器的资源，并且还需要通过IP地址和DNS服务器反查用户的名字，因此当系统上线时，可以将这个属性关闭，从而减少资源消耗，那么Web应用也就只能记录下IP地址了。修改的属性是enableLoopups="false"<br />
&nbsp;&nbsp;&nbsp; 2. 调整线程数。<br />
&nbsp;&nbsp;&nbsp; Tomcat通过线程池来为用户访问提供响应，对于上线的系统初步估计用户并发数量后，然后调整线程池容量。例如：用户并发数量大约在100左右。那么可以设置minProcessors="100" maxProcessors="100"，将最大和最小设置为一样后，线程池不会再释放空闲的线程，使用户访问突然增加的时候，不需要再消耗系统资源去创建新的线程。<br />
&nbsp;&nbsp;&nbsp; 3. 调整最大连接数<br />
&nbsp;&nbsp;&nbsp; 这个其实最复杂，即使用户并发量大，但是系统反应速度快的话，可以把这个值不用设置太高，高了系统需要消耗大量的资源去切换线程，但是如果设置太低也会造成应用无法满足用户并发需要。因此设置这个最好能够结合整个系统的跟踪与调优，使系统达到最好的平稳状态。一般设置为maxProcessors的1.5倍就可以了。<br />
&nbsp;&nbsp;&nbsp; 4. 调整网络超时。<br />
&nbsp;&nbsp;&nbsp; 主要是HTTP协议也有个连接过程，客户端连接到服务器上后，多长时间没有得到处理就会被释放。如果服务器处理速度较慢，但是希望每个用户都能得到有效处理，或者网络环境不好，需要保证用户不会因为超时会断，也可以把时间加长。但是一般设置成connectionTimeout="30000"就可以了。太长对系统来说价值不大，反而会浪费系统资源在无谓的长连接上。<br />
&nbsp;&nbsp;&nbsp; 附件A。<br />
&nbsp;&nbsp;&nbsp; 在tomcat配置文件server.xml中的&lt;Connector ... /&gt;配置中，和连接数相关的参数有：<br />
&nbsp;&nbsp;&nbsp; minProcessors：最小空闲连接线程数，用于提高系统处理性能，默认值为10<br />
&nbsp;&nbsp;&nbsp; maxProcessors：最大连接线程数，即：并发处理的最大请求数，默认值为75<br />
&nbsp;&nbsp;&nbsp; acceptCount：允许的最大连接数，应大于等于maxProcessors，默认值为100<br />
&nbsp;&nbsp;&nbsp; enableLookups：是否反查域名，取值为：true或false。为了提高处理能力，应设置为false<br />
&nbsp;&nbsp;&nbsp; connectionTimeout：网络连接超时，单位：毫秒。设置为0表示永不超时，这样设置有隐患的。通常可设置为20000毫秒。&nbsp;&nbsp;&nbsp; &lt;Connector<br />
&nbsp;&nbsp;&nbsp; className="org.apache.coyote.tomcat4.CoyoteConnector"<br />
&nbsp;&nbsp;&nbsp; port="8080" minProcessors="5" maxProcessors="75"<br />
&nbsp;&nbsp;&nbsp; enableLookups="true" redirectPort="8443"<br />
&nbsp;&nbsp;&nbsp; acceptCount="10" debug="0" connectionTimeout="20000"<br />
&nbsp;&nbsp;&nbsp; useURIValidationHack="false"<br />
/&gt;<font style="background-color: #cce8cf">Tomcat常用调优技巧.txt</font></a>
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/168062.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2007-12-16 14:02 <a href="http://www.blogjava.net/wuxufeng8080/articles/168062.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>