Dict.CN 在線詞典, 英語學習, 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統計

          留言簿(23)

          積分與排名

          優秀學習網站

          友情連接

          閱讀排行榜

          評論排行榜

          Resin 3 pro高并發,響應性與穩定性方案(轉)

          以下方案我是在Intel xeon(至強) 3.2G 2個雙核物理CPU+2G內存(Ecc)上進行:

          resin版本為resin-pro-3.0.21,JVM為Jrockit 1.5_06, resin java 啟動參數 -Xms256m -Xmx512m

          1. 以下為resin.conf配置
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
          30
          31
          32
          33
          34
          35
          36
          37
          38
          39
          40
          41
          42
          43
          44
          45
          46
          47
          48
          49
          50
          51
          52
          53
          54
          55
          56
          57
          58
          59
          60
          61
          62
          63
          64
          65
          66
          67
          68
          69
          70
          71
          72
          73
          74
          75
          76
          77
          78
          79
          80
          81
          82
          83
          84
          85
          86
          87
          88
          89
          90
          91
          92
          93
          94
          95
          96
          97
          98
          99
          100
          101
          102
          103
          104
          105
          106
          107
          108
          109
          110
          111
          112
          113
          114
          115
          116
          117
          118
          119
          120
          121
          122
          123
          124
          <!--
                      - Resin 3.0 configuration file.
                      -->
                      <resin xmlns="http://caucho.com/ns/resin"
                      xmlns:resin="http://caucho.com/ns/resin/core">
                      <!--
                      - Logging configuration for the JDK logging API.
                      -->
                      <log name="" level="all" path="stdout:" timestamp="[%H:%M:%S.%s] "/>
                       
                      <logger name="com.caucho.java" level="config"/>
                      <logger name="com.caucho.loader" level="config"/>
                       
                      <dependency-check-interval>600s</dependency-check-interval>
                       
                      <javac compiler="internal" args=""/>
                       
                      <thread-pool>
                      <thread-max>10240</thread-max>
                      <spare-thread-min>50</spare-thread-min>
                      </thread-pool>
                       
                      <min-free-memory>5M</min-free-memory>
                       
                      <server>
                      <class-loader>
                      <tree-loader path="${resin.home}/lib"/>
                      <tree-loader path="${server.root}/lib"/>
                      </class-loader>
                       
                      <keepalive-max>1024</keepalive-max>
                      <keepalive-timeout>60s</keepalive-timeout>
                       
                      <resin:if test="${resin.isProfessional()}">
                      <select-manager enable="true"/>
                      </resin:if>
                       
                      <bind-ports-after-start/>
                       
                      <http server-id="" host="*" port="80"/>
                       
                      <cluster>
                      <srun server-id="" host="127.0.0.1" port="6802"/>
                      </cluster>
                       
                      <resin:if test="${resin.isProfessional()}">
                      <persistent-store type="cluster">
                      <init path="session"/>
                      </persistent-store>
                      </resin:if>
                       
                      <ignore-client-disconnect>true</ignore-client-disconnect>
                       
                      <resin:if test="${isResinProfessional}">
                      <cache path="cache" memory-size="20M"/>
                      </resin:if>
                       
                      <web-app-default>
                      <class-loader>
                      <tree-loader path="${server.root}/ext-webapp"/>
                      </class-loader>
                       
                      <cache-mapping url-pattern="/" expires="60s"/>
                      <cache-mapping url-pattern="*.gif" expires="600s"/>
                      <cache-mapping url-pattern="*.jpg" expires="600s"/>
                       
                      <servlet servlet-name="directory"
                      servlet-class="com.caucho.servlets.DirectoryServlet">
                      <init enable="false"/>
                      </servlet>
                       
                      <allow-servlet-el/>
                       
                      <session-config>
                      <enable-url-rewriting>false</enable-url-rewriting>
                      </session-config>
                       
                      </web-app-default>
                       
                      <host-default>
                      <class-loader>
                      <compiling-loader path="webapps/WEB-INF/classes"/>
                      <library-loader path="webapps/WEB-INF/lib"/>
                      </class-loader>
                       
                      <!--access-log path="logs/access.log"
                      format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'
                      rollover-period="1W"/-->
                       
                      <web-app-deploy path="webapps"/>
                       
                      <ear-deploy path="deploy">
                      <ear-default>
                      <!-- Configure this for the ejb server
                      -
                      - <ejb-server>
                      -   <config-directory>WEB-INF</config-directory>
                      -   <data-source>jdbc/test</data-source>
                      - </ejb-server>
                      -->
                      </ear-default>
                      </ear-deploy>
                       
                      <resource-deploy path="deploy"/>
                       
                      <web-app-deploy path="deploy"/>
                      </host-default>
                       
                      <resin:import path="${resin.home}/conf/app-default.xml"/>
                       
                      <host-deploy path="hosts">
                      <host-default>
                      <resin:import path="host.xml" optional="true"/>
                      </host-default>
                      </host-deploy>
                       
                      <host id="" root-directory=".">
                      <web-app id="/" document-directory="d:\website\chat">
                      </web-app>
                      </host>
                      </server>
                      </resin>
                       
                      


          2. 在應用的web.xml中加入resin status查看servlet映射

          1
          2
          3
          4
                <servlet-mapping servlet-class='com.caucho.servlets.ResinStatusServlet'>
                      <url-pattern>/resin-status</url-pattern>
                      <init enable="read"/>
                      </servlet-mapping>
                      


          3. 啟動resin,確認應用正常啟動。

          4. 寫訪問測試程序

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          import java.io.InputStream;
                      import java.net.URL;
                       
                       
                      public class TestURL
                      {
                      public static void main(String[] args) throws Exception
                      {
                      long a = System.currentTimeMillis();
                      System.out.println("Starting request url:");
                      for(int i = 0; i < 10000; i++){
                      URL url = new URL("http://192.168.1.200/main.jsp");
                       
                      InputStream is = url.openStream();
                      is.close();
                      System.out.println("Starting request url:"+i);
                      }
                      System.out.println("request url end.take "+(System.currentTimeMillis()-a)+"ms");
                      }
                       
                      }
                      


          5. 在Jbuilder中執行TestURL

          在執行過程中,一邊刷新http://192.168.1.200/resin-status,查看resin狀態,在http://*:80 中的 Active Threads 和 Total,會一直增長,當長到512的時候不再增長,這時再刷新resin-status頁面時,會發現打開很慢。原因是服務器已經達到最大連接數,在等待前面連接的釋放而不能接受新的連接。

          于是下載Resin 3.0.21源碼,搜索 512,發現com.caucho.server.port.Port類中有以下代碼:
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
            // default timeout
                      private long _timeout = 65000L;
                       
                      private int _connectionMax = 512;//就是這行,查找resin所有源碼后,發現沒有對這個值進行設置
                      private int _minSpareConnection = 16;
                       
                      private int _keepaliveMax = -1;
                       
                      private int _minSpareListen = 5;
                      private int _maxSpareListen = 10;
                      

          將_connectionMax 改為 20480,然后重新編譯并替換resin.jar中的Port類。

          6. 重新啟動Resin,再次運行TestURL進行測試,這次你會發現Threads Active 和 Total 一直變大,且可以超過512一直增大,在測試程序運行過程中刷新頁面,頁面響應性能還是不錯的.

          另,測試過程中Resin會打印出 1-3次 強制執行GC的信息,屬于正常。

          7.待測試完畢,Threads Active 和 Total 馬上降為1.Idle為9,總內存為536.87Meg 空閑內存為480.33M

          再經多次測試,結果一致,內存回收正常,表明當前 resin 穩定性和響應性可靠。

          posted on 2008-03-03 08:47 都市淘沙者 閱讀(3406) 評論(0)  編輯  收藏 所屬分類: Tomcat/Weblogic/Resin/Jboss

          主站蜘蛛池模板: 新丰县| 太原市| 徐州市| 珠海市| 辽阳市| 隆子县| 饶河县| 神农架林区| 鄂伦春自治旗| 民乐县| 鄯善县| 镇安县| 务川| 五峰| 合作市| 宜宾市| 峡江县| 肥乡县| 佛坪县| 大冶市| 周宁县| 祁阳县| 磐石市| 阳朔县| 包头市| 綦江县| 资兴市| 玉树县| 宁城县| 海阳市| 芷江| 长丰县| 即墨市| 类乌齐县| 邯郸县| 南陵县| 黄山市| 鄄城县| 阳新县| 龙口市| 高碑店市|