??xml version="1.0" encoding="utf-8" standalone="yes"?>国产在线精品成人一区二区三区,成人久久18免费网站图片,欧美中文日韩http://www.aygfsteel.com/kyleYang/archive/2010/08/18/329287.html飞熊飞熊Wed, 18 Aug 2010 15:24:00 GMThttp://www.aygfsteel.com/kyleYang/archive/2010/08/18/329287.htmlhttp://www.aygfsteel.com/kyleYang/comments/329287.htmlhttp://www.aygfsteel.com/kyleYang/archive/2010/08/18/329287.html#Feedback0http://www.aygfsteel.com/kyleYang/comments/commentRss/329287.htmlhttp://www.aygfsteel.com/kyleYang/services/trackbacks/329287.html
核心提示Q第一步: 在http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.6 下蝲mod_jk_1.2.6_2.0.50.dll文gQ将其改名ؓmod_jk.so后放到apache2/modules目录中?W二步: workers.propertiesQ?workers.tomcat_home=D:\My_Work\Tomcat\

W一步: 在http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.6 
                            下蝲mod_jk_1.2.6_2.0.50.dll文gQ将其改名ؓmod_jk.so后放到apache2/modules目录中。?br />W二步: workers.propertiesQ?br />workers.tomcat_home=D:\My_Work\Tomcat\apache-tomcat-6.0.14
workers.java_home=D:\Program Files\Java\jdk1.5.0_07
ps=\
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1 

W三步:用记事本打开apache/conf/httpd.conf文g末尾Q添加下面一D:
    
LoadModule jk_module modules/mod_jk.so
JkWorkersFile "D:\Program Files\Apache Software Foundation\Apache2.2\modules\workers.properties"
#ServerAdmin wangguiwei@gmail.com   
#ServerName localhost
DirectoryIndex index.html index.htm index.jsp
JkMount /* ajp13   
JkAutoAlias "D:\My_Work\Tomcat\apache-tomcat-6.0.14\webapps"  
Options Indexes FollowSymLinks
#allow from all 
    
保存Q停止apache服务Q在启动Q就可以新配置应用了?
******************************
一QApache与Tomcat介绍

    Apache是当前用最为广泛的WWW服务器YӞh相当强大的静态HTML处理的能力?

     Tomcat服务器是一个免费的开放源代码的Web应用服务器,它是Apache软g基金会(Apache Software FoundationQ的Jakarta目中的一个核心项目,由Apache、Sun和 ?其他一些公司及个h共同开发而成。由于有了Sun的参与和支持Q最新的Servlet和JSP   规范L能在Tomcat中得C玎ͼTomcat5支持最新的Servlet 2.4和JSP 2.0规范。因为Tomcat技术先q、性能E_Q而且免费Q因而深受Java爱好者的喜爱q得C部分软g开发商的认可,成ؓ目前比较行的Web应用服务器?

Tomcat和IIS、Apache{Web服务器一Ph处理HTML面的功能,另外它还是一个Servlet和JSP容器Q独立的Servlet容器是Tomcat的默认模式?br />二.Z么需要整?

整合的最主要原因是ؓ了在现有的硬件条件下提供最大的负蝲?

如果单独使用Tomcat做JSP服务器,在工作效率上会存在问?Tomcat处理静态HTML的能力不如ApacheQƈ且所能承受的最大ƈ发连接数也有一定的限制Q?

在测试中Q当q发q接较多ӞTomcat׃处于“僵歠Z状态,对后l的hq接失去响应。所以现在提Z个“整合”解x案:html?jsp的功能部分进行明分工,让tomcat只处理jsp部分Q其它的由apacheq个web server处理。Apache与Tomcat各司其职Q那么服务器的整体效率就能够得到提升?
三.整合的基本原?

作ؓApache下面的子目QTomcat ?Apache之间有着天然的联pR在实际操作中,主要是Apache作ؓL务器q行Q当监听到有jsp或者servlet的请求时Q将h转发l?tomcat服务器,由tomcat服务器进行解析后Q发回apacheQ再由apache发回用户?

在tomcat中有两个监听的端口,一个是8080用于提供web服务,一个是8009用于监听来自于apache的请求。当apache收到 jsp或者servlethӞ向tomcat ?009端口发送请求,交由tomcat处理后,再返回给apacheQ由apacheq回l客戗?
四.安装Apache与Tomcat服务?

   操作pȝ环境QWindows xp home

   安装文gQapache-tomcat-6.0.14.exe apache_2.2.6-win32-x86-openssl-0.9.8e.msi mod_jk-apache-2.2.4.so
  到apache 与tomcat 的官方网站上面下载apache 与tomcatQ安装apache与tomcat

     到http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32下蝲 mod_jk-apache-2.2.4.so

     mod_jk-apache-2.2.4.so拯到apache安装目录下面的modules目录中?

五.修改Tomcat讄

     在tomcat的conf目录下徏一个workers.properties的文本文Ӟd如下配置 

     workers.tomcat_home="tomcat安装目录"

     #让mod_jk模块知道Tomcat的安装\?

     workers.java_home="java安装目录"

     #让mod_jk模块知道jdk路径

     ps="

     worker.list=ajp13

     #q里是关键,名字要和httpd.conf的一致。如果这里改了httpd.conf也要攏V?

     worker.ajp13.port=8009

     #工作端口,tomcat的jk监听端口Q可以查看Server.xml中有port="8009"           

     worker.ajp13.host=localhost

     #Tomcat所在机器,如果安装在与apache不同的机器则需要设|IP

     worker.ajp13.type=ajp13

     #cdQ好像不能改Q会出问?

     worker.ajp13.lbfactor=1

     #负蝲q因子   

六.修改Apache讄

修改apache安装目录下conf目录下的httpd.conf,增加如下配置

  LoadModule jk_module modules/mod_jk-apache-2.2.4.so

       JkWorkersFile "tomcat安装目录/conf/workers.properties"

    JkLogFile "apache安装目录/logs/mod_jk.log" 

      JkMount /*.jsp ajp13

      JkMount /*.do ajp13

七.整合操作说明
  mod_jk-apache-2.2.4.so相当于是apache与tomcat之间的桥梁一P所以在apache的配|文件下面加上LoadModule jk_module modules/mod_jk-apache-2.2.4.so 此模块载入?

JkWorkersFile "tomcat安装目录/conf/workers.properties" 说明了mod_jk-apache-2.2.4.so 如何工作Q当出现要{发时Q将h发送到那里q行处理Q代表了一pd的工作参数?br />      JkLogFile "apache安装目录/logs/mod_jk.log" 讑֮日志的地址?

JkMount 说明了将什么样的URLq行发送到tomcatq行处理。JkMount /*.jsp ajp13 说明了要jsph发到tomcat,JkMount /*.do ajp13说明了要?do型的servlet发到tomcatq行处理。在实际的分发中Q如果servlet命名不带后缀的话Q将无法被识别,也就无法q行处理?br /> 
 八.l束?
       在查阅了不少文章之后Q我仔细的了解了下这两者进行整合的q程Q网上很多文章讲的整合应该不是真正意义上面的整合,希望此文章能够ؓ正ؓq些问题苦恼的同行们解决一点小困难……?/p>

飞熊 2010-08-18 23:24 发表评论
]]>
Apache HTTP Server ?Tomcat 的三U连接方式介l?/title><link>http://www.aygfsteel.com/kyleYang/archive/2010/08/18/329286.html</link><dc:creator>飞熊</dc:creator><author>飞熊</author><pubDate>Wed, 18 Aug 2010 15:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/kyleYang/archive/2010/08/18/329286.html</guid><wfw:comment>http://www.aygfsteel.com/kyleYang/comments/329286.html</wfw:comment><comments>http://www.aygfsteel.com/kyleYang/archive/2010/08/18/329286.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/kyleYang/comments/commentRss/329286.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/kyleYang/services/trackbacks/329286.html</trackback:ping><description><![CDATA[ <blockquote>整合 Apache Http Server ?Tomcat 可以提升寚w态文件的处理性能、利?Web 服务器来做负载均衡以及容错、无~的升应用E序。本文介l了三种整合 Apache ?Tomcat 的方式?/blockquote> <!--START RESERVED FOR FUTURE USE INCLUDE FILES--> <!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --> <!--END RESERVED FOR FUTURE USE INCLUDE FILES--> <p>首先我们先介l一下ؓ什么要?Apache ?Tomcat 之间q行q接。事实上 Tomcat 本n已经提供?HTTP 服务Q该服务默认的端口是 8080Q装?tomcat 后通过 8080 端口可以直接使用 Tomcat 所q行的应用程序,你也可以该端口改ؓ 80?/p> <p>既然 Tomcat 本n已经可以提供q样的服务,我们Z么还要引?Apache 或者其他的一些专门的 HTTP 服务器呢Q原因有下面几个Q?/p> <p>1. 提升寚w态文件的处理性能</p> <p>2. 利用 Web 服务器来做负载均衡以及容?/p> <p>3. 无缝的升U应用程?/p> <p>q三点对一?web |站来说是非怹重要的,我们希望我们的网站不仅是速度快,而且要稳定,不能因ؓ某个 Tomcat 宕机或者是升E序D用户讉K不了Q而能完成q几个功能的、最好的 HTTP 服务器也只?apache ?http server 了,它跟 tomcat 的结合是最紧密和可靠的?/p> <p>接下来我们介l三U方法将 apache ?tomcat 整合在一赗?/p> <p> <a name="N10058"> <span id="wmqeeuq" class="atitle">JK</span> </a> </p> <p>q是最常见的方式,你可以在|上扑ֈ很多关于配置JK的网,当然最全的q是其官Ҏ提供的文档。JK 本n有两个版本分别是 1 ?2Q目?1 最新的版本?1.2.19Q而版?2 早已l废弃了Q以后不再有新版本的推出了,所以徏议你采用版本 1?/p> <p>JK 是通过 AJP 协议?Tomcat 服务器进行通讯的,Tomcat 默认?AJP Connector 的端口是 8009。JK 本n提供了一个监控以及管理的面 jkstatusQ通过 jkstatus 可以监控 JK 目前的工作状态以及对?tomcat 的连接进行设|,如下图所C:</p> <br /> <a name="N10066"> <b>?1Q监控以及管理的面 jkstatus</b> </a> <br /> <img height="228" alt="?1Q监控以及管理的面 jkstatus" src="http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/images/image002.jpg" width="554" border="0" /> <br /> <p>在这个图中我们可以看到当前JK配了两个q接分别?8109 ?8209 端口上,目前 s2 q个q接是停止状态,?s1 q个q接自上ơ重启后已经处理?47 万多个请求,量辑ֈ 6.2 ?GQ最大的q发数有 13 {等。我们也可以利用 jkstatus 的管理功能来切换 JK C同的 Tomcat 上,例如?s2 启用Qƈ停用 s1Q这个在更新应用E序的时候非常有用,而且整个切换q程对用h说是透明的,也就辑ֈ了无~升U的目的。关?JK 的配|文章网上已l非常多了,q里我们不再详细的介l整个配|过E,但我要讲一下配|的思\Q只要明白了配置的思\QJK 是一个非常灵zȝlg?/p> <p>JK 的配|最关键的有三个文gQ分别是 </p> <p> <b>httpd.conf </b> <br />Apache 服务器的配置文gQ用来加?JK 模块以及指定 JK 配置文g信息</p> <p> <b>workers.properties</b> <br />?Tomcat 服务器的q接定义文g</p> <p> <b>uriworkermap.properties</b> <br />URI 映射文gQ用来指定哪?URL ?Tomcat 处理Q你也可以直接在 httpd.conf 中配|这?URIQ但是独立这些配|的好处?JK 模块会定期更新该文g的内容,使得我们修改配置的时候无需重新启动 Apache 服务器?/p> <p>其中W二、三个配|文件名都可以自定义。下面是一个典型的 httpd.conf ?JK 的配|?/p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"># (httpd.conf) # 加蝲 mod_jk 模块 LoadModule jk_module modules/mod_jk.so # # Configure mod_jk # JkWorkersFile conf/workers.properties JkMountFile conf/uriworkermap.properties JkLogFile logs/mod_jk.log JkLogLevel warn </pre> </td> </tr> </tbody> </table> <br /> <p>接下来我们在 Apache ?conf 目录下新Z个文件分别是 workers.properties、uriworkermap.properties。这两个文g的内容大概如?/p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode"># # workers.properties # # list the workers by name worker.list=DLOG4J, status # localhost server 1 # ------------------------ worker.s1.port=8109 worker.s1.host=localhost worker.s1.type=ajp13 # localhost server 2 # ------------------------ worker.s2.port=8209 worker.s2.host=localhost worker.s2.type=ajp13 worker.s2.stopped=1 worker.DLOG4J.type=lb worker.retries=3 worker.DLOG4J.balanced_workers=s1, s2 worker.DLOG4J.sticky_session=1 worker.status.type=status </pre> </td> </tr> </tbody> </table> <br /> <p>以上?workers.properties 配置是我们前面那个屏幕抓图的页面所用的配置。首先我们配|了两个cd?ajp13 ?worker 分别?s1 ?s2Q它们指向同一台服务器上运行在两个不同端口 8109 ?8209 ?Tomcat 上。接下来我们配置了一个类型ؓ lbQ也是负蝲均衡的意思)?workerQ它的名字是 DLOG4JQ这是一个逻辑?workerQ它用来理前面配置的两个物理连?s1 ?s2。最后还配置了一个类型ؓ status ?workerQ这是用来监?JK 本n的模块。有了这三个 worker q不够,我们q需要告?JKQ哪?worker 是可用的Q所以就?<b>worker.list = DLOG4J, status</b> q行配置?/p> <p>接下来便?URI 的映配|了Q我们需要指定哪些链接是?Tomcat 处理的,哪些是由 Apache 直接处理的,看看下面q个文g你就能明白其中配|的意义</p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">/*=DLOG4J /jkstatus=status !/*.gif=DLOG4J !/*.jpg=DLOG4J !/*.png=DLOG4J !/*.css=DLOG4J !/*.js=DLOG4J !/*.htm=DLOG4J !/*.html=DLOG4J </pre> </td> </tr> </tbody> </table> <br /> <p>怿你已l明白了一大半了:所有的h都由 DLOG4J q个 worker q行处理Q但是有几个例外Q?jkstatus h?status q个 worker 处理。另外这个配|中每一行数据前面的感叹h什么意思呢Q感叹号表示接下来的 URI 不要?JK q行处理Q也是 Apache 直接处理所有的囄、css 文g、js 文g以及静?html 文本文g?/p> <p>通过?workers.properties ?uriworkermap.properties 的配|,可以有各U各Ll合来满x们前面提出对一?web |站的要求。您不妨动手试试Q?/p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td> <img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /> <br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /> </td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td> <img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /> <br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="center"> </td> <td valign="top" align="right"> <a class="fbox" > <b> </b> </a> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p> <a name="N100C4"> <span id="wmqeeuq" class="atitle">http_proxy</span> </a> </p> <p>q是利用 Apache 自带?mod_proxy 模块使用代理技术来q接 Tomcat。在配置之前L保是否用的?2.2.x 版本?Apache 服务器。因?2.2.x 版本对这个模块进行了重写Q大大的增强了其功能和稳定性?/p> <p>http_proxy 模式是基?HTTP 协议的代理,因此它要?Tomcat 必须提供 HTTP 服务Q也是说必d?Tomcat ?HTTP Connector。一个最单的配置如下</p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">ProxyPass /images ! ProxyPass /css ! ProxyPass /js ! ProxyPass / http://localhost:8080/ </pre> </td> </tr> </tbody> </table> <br /> <p>在这个配|中Q我们把所?http://localhost 的请求代理到 http://localhost:8080/ Q这也就?Tomcat 的访问地址Q除?images、css、js 几个目录除外。我们同样可以利?mod_proxy 来做负蝲均衡Q再看看下面q个配置</p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">ProxyPass /images ! ProxyPass /css ! ProxyPass /js ! ProxyPass / balancer://example/ <Proxy balancer://example/> BalancerMember http://server1:8080/ BalancerMember http://server2:8080/ BalancerMember http://server3:8080/ </Proxy> </pre> </td> </tr> </tbody> </table> <br /> <p>配置?JK 单多了,而且它也可以通过一个页面来监控集群q行的状态,q做一些简单的l护讄?/p> <br /> <a name="N100EA"> <b>?2Q监控集运行状?/b> </a> <br /> <img height="427" alt="?2Q监控集运行状? src="http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/images/image004.gif" width="553" border="0" /> <br /> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td> <img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /> <br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /> </td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td> <img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /> <br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="center"> <br /></td> <td valign="top" align="right"> <a class="fbox" > <b> </b> </a> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p> <a name="N100FA"> <span id="wmqeeuq" class="atitle">ajp_proxy</span> </a> </p> <p>ajp_proxy q接方式其实?http_proxy 方式一P都是?mod_proxy 所提供的功能。配|也是一P只需要把 http:// 换成 ajp:// Q同时连接的?Tomcat ?AJP Connector 所在的端口。上面例子的配置可以改ؓQ?/p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">ProxyPass /images ! ProxyPass /css ! ProxyPass /js ! ProxyPass / balancer://example/ <Proxy balancer://example/> BalancerMember ajp://server1:8080/ BalancerMember ajp://server2:8080/ BalancerMember ajp://server3:8080/ </Proxy> </pre> </td> </tr> </tbody> </table> <br /> <p>采用 proxy 的连接方式,需要在 Apache 上加载所需的模块,mod_proxy 相关的模块有 mod_proxy.so、mod_proxy_connect.so、mod_proxy_http.so、mod_proxy_ftp.so、mod_proxy_ajp.soQ?其中 mod_proxy_ajp.so 只在 Apache 2.2.x 中才有。如果是采用 http_proxy 方式则需要加?mod_proxy.so ?mod_proxy_http.soQ如果是 ajp_proxy 则需要加?mod_proxy.so ?mod_proxy_ajp.soq两个模块?/p> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td> <img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /> <br /> <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /> </td> </tr> </tbody> </table> <table class="no-print" cellspacing="0" cellpadding="0" align="right"> <tbody> <tr align="right"> <td> <img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /> <br /> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="center"> <img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /> <br /> </td> <td valign="top" align="right"> <a class="fbox" > <b> <font color="#5c81a7">回页?/font> </b> </a> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <p> <a name="N1010F"> <span id="wmqeeuq" class="atitle">三者比?/span> </a> </p> <p>相对?JK 的连接方式,后两U在配置上是比较单的Q灵zL方面也一炚w不逊色。但q定性而言׃?JK q样久经考验Q毕?Apache 2.2.3 推出的时间ƈ不长Q采用这U连接方式的|站q不多,因此Q如果是应用于关键的互联|网站,q是采用 JK 的连接方式?/p> <br /> <br /> <p> <a name="resources"> <span id="wmqeeuq" class="atitle">参考资?</span> </a> </p> <ul> <li>获得 <a ><font color="#996699">Apache Http Server</font></a>?<br /><br /></li> <li>获得 <a ><font color="#5c81a7">Apache Tomcat</font></a>?<br /><br /></li> <li> <a > <font color="#5c81a7">JK 文档</font> </a>?</li> </ul> <img src ="http://www.aygfsteel.com/kyleYang/aggbug/329286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/kyleYang/" target="_blank">飞熊</a> 2010-08-18 23:17 <a href="http://www.aygfsteel.com/kyleYang/archive/2010/08/18/329286.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>析tomcat nio 配置http://www.aygfsteel.com/kyleYang/archive/2010/01/24/310623.html飞熊飞熊Sat, 23 Jan 2010 17:25:00 GMThttp://www.aygfsteel.com/kyleYang/archive/2010/01/24/310623.htmlhttp://www.aygfsteel.com/kyleYang/comments/310623.htmlhttp://www.aygfsteel.com/kyleYang/archive/2010/01/24/310623.html#Feedback0http://www.aygfsteel.com/kyleYang/comments/commentRss/310623.htmlhttp://www.aygfsteel.com/kyleYang/services/trackbacks/310623.html术语
   Tomcat 6.X实现了JCP的Servlet 2.5和JSP2.1的规范,q且包括其它很多有用的功能,使它成ؓ开?br />和部|web应用和web服务的坚实^台?br />       NIO QNo-blocking I/OQ从JDK 1.4PNIO API作ؓ一个基于缓冲区Qƈ能提供非dI/O操作的API
被引入。?br />       作ؓ开源web服务器的java实现Qtomcat几乎是web开发者开发、测试的首选,有很多其他商业服?br />器的开发者也会优先选择tomcat作ؓ开发时候用,而在部v的时候,把应用发布在商业服务器上。也?br />许多商业应用部v在tomcat上,tomcat承蝲着其核心的应用。但是很多开发者很qhQؓ什么在自己的应
用里使用tomcat作ؓq_的时候,而ƈ发用戯q一定数量,服务器就变的非常J忙Q而且很快出C
connection refuse的错误。但是很多商业应用部|在tomcat上运行却安然无恙?br />
      其中有个很大的原因就是,配置良好的tomcat都会使用APR(Apache Portable Runtime),APR?br />Apache HTTP Server2.x的核心,它是高度可移植的本地库,它用高性能的UXIN I/O操作Q低性能?br />java io操作Q但是APR对很多Java开发者而言可能E稍有点隑ֺQ在很多OSq_上,你可能需要重新编
译APR。但是从Tomcat6.0以后, Java开发者很Ҏ可以是用NIO的技术来提升tomcat的ƈ发处理能力?br />但是Z么NIO可以提升tomcat的ƈ发处理能力呢Q我们先来看一下java 传统io?java NIO的差别?br />     
        Java 传统的IO操作都是d式的(blocking I/O), 如果有socket的编E基Q你会接触过堵塞socket?br />非堵塞socketQ堵塞socket是在accept、read、write{IO操作的的时候,如果没有可用W合条g的资
源,不马上返回,一直等待直到有资源为止。而非堵塞socket则是在执行select的时候,当没有资源的?br />候堵塞,当有W合资源的时候,q回一个信P然后E序可以执行accept、read、write{操作,一般来
_如果使用堵塞socketQ通常我们通常开一个线Eaccept socketQ当dq次socketh的时候,开一
个单独的U程处理q个sockethQ如果用非堵塞socketQ通常是只有一个线E,一开始是selectӞ
当有信号的时候可以通过 可以通过多\复用QMultiplexing)技术传递给一个指定的U程池来处理hQ然
后原来的U程l箋select状态?最单的多\复用技术可以通过java道(Pipe)来实现。换句话_如果
客户端的q发h很大的时候,我们可以使用于客户端ƈ发请求的U程数来处理q些hQ而这些来?br />及立卛_理的h会被d在java道或者队列里面,{待U程池的处理。请?听v来很复杂Q在q个?br />构当道的java 世界里,现在已经有很多优U的NIO的架构方便开发者用,比如Grizzly,Apache Mina{?br />{,如果你对如何~写高性能的网l服务器有兴,你可以研读这些源代码?br />
      单说一下,在web服务器上dIO(BIO)与NIO一个比较重要的不同是,我们使用BIO的时候往往?br />为每一个webh引入多线E,每个webh一个单独的U程Q所以ƈ发量一旦上MQ线E数׃?br />了,CPU忙着U程切换Q所以BIO不合适高吞吐量、高可׾~的web服务器;而NIO则是使用单线E??br />个CPU)或者只使用量的多U程(多CPU)来接受SocketQ而由U程池来处理堵塞在pipe或者队列里的请
?q样的话Q只要OS可以接受TCP的连接,web服务器就可以处理该请求。大大提高了web服务器的?br />伸羃性?br />
    我们来看一下配|,你只需要在server.xml里把 HTTP Connector做如下更改,

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    改ؓ
    <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
               connectionTimeout="20000"
               redirectPort="8443" />

然后启动服务器,你会看到org.apache.coyote.http11.Http11NioProtocol start的信息,表示NIO已经启动。其他的配置请参考官斚w|文档?br />Enjoy it.

最后脓上官Ҏ档上对tomcat的三UConnector的方式做一个简单比较,
                  Java Blocking Connector       Java Nio Blocking Connector       APR Connector
Classname Http11Protocol Http11NioProtocol Http11AprProtocol
Tomcat Version 3.x 4.x 5.x 6.x 6.x 5.5.x 6.x
Support Polling NO YES YES
Polling Size N/A Unlimited - Restricted by mem Unlimited
Read HTTP Request Blocking Blocking Blocking
Read HTTP Body Blocking Blocking Blocking
Write HTTP Response Blocking Blocking Blocking
SSL Support Java SSL Java SSL OpenSSL
SSL Handshake Blocking Non blocking Blocking
Max Connections maxThreads See polling size See polling size


飞熊 2010-01-24 01:25 发表评论
]]>
վ֩ģ壺 Ӫɽ| ʦ| | | | | | | | ϴ| | ʳ| | | | Զ| | | Ƕ| | ̩| п| | ͨ| | | ʯ| | | ®| | Դ| dz| ˮ| ݰ| | | | żҴ| | ֿ|