`

Resin 3 pro高并发,响应性与稳定性方案(转)

阅读更多

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

                       
<!--
            - 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


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

                               
  // 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 稳定性和响应性可靠。

分享到:
评论

相关推荐

    resin-pro-4.0.65.zip下载

    它提供了一个强大且高效的运行环境,能够处理高并发的Web请求,对于大型网站或者企业级应用来说,是理想的服务器选择。通过下载这个版本,用户可以获得官方的性能优化和安全更新,确保应用的稳定运行。 主要特性: ...

    resin服务器resin-pro-3.1.8

    被业界誉为“世界上最快的JSP和Servlet容器”之一,Resin以其高效能和稳定性在IT行业中赢得了广泛的赞誉。这款服务器的核心优势在于它的快速启动、低内存占用和高并发处理能力。 1. **Resin的架构**: - **多线程...

    resin-pro-3.0.27

    总的来说,Resin Pro 3.0.27是一款适合中小型企业或开发团队使用的Java应用服务器,其轻量级设计和丰富特性使得它在处理高并发、大数据量的应用场景中表现优秀。下载并解压"resin-pro-3.0.27"压缩包后,你可以根据...

    resin-pro-4.0.50.zip

    Resin Pro 4.0.50 是一款高效、稳定且功能强大的Java应用服务器,尤其适合处理高并发和大规模Web应用程序。它由Caucho Technology公司开发,提供了一个高性能的Servlet容器和JSP引擎,同时也支持Java EE 5规范。在...

    resin-pro-3.0.25.zip

    3. **快速启动与高并发**:Resin Pro以其快速启动和处理高并发请求的能力著称。它采用了高效的线程模型和内存管理策略,可以有效提升Web应用的响应速度和吞吐量。 4. **热部署**:Resin Pro支持热部署,即在不中断...

    resin-pro-3.1.9.rar

    Resin以其高性能、轻量级和稳定性著称,是许多企业和开发者的选择。在深入探讨Resin Pro 3.1.9的知识点之前,我们先了解一下Resin的基本概念。 1. **Java应用服务器**:Java应用服务器(Application Server)是一个...

    resin-pro-4.0.23

    Resin Pro 4.0.23 是一款高效且免费的Java Web服务器,它以其出色的性能和稳定性在IT行业中备受推崇。这款服务器是基于开源项目Caucho Resin的基础之上,提供了一个专业版,旨在满足企业级应用的需求。Resin Pro ...

    Resin3.13 Pro Linux version

    Resin3.13 Pro是基于Java的轻量级应用服务器,特别适合部署Web应用程序,尤其是高并发场景。它由Caucho Technology开发,提供高效、稳定和可扩展的平台来运行Java EE和Servlet应用。在Linux环境下,Resin3.13 Pro...

    resin-pro-3.1.8

    它以其优秀的性能、稳定性以及对Java EE规范的良好支持而受到开发者的青睐。Resin Pro是Resin的增强版,提供了更多的特性和服务,适合于大型企业和复杂的应用场景。 Resin Pro 3.1.8 版本包含了以下关键知识点: 1...

    resin-pro-3.1.6.tar.gz

    - **高性能**:Resin Pro以其高效的Servlet和JSP引擎而闻名,能够处理高并发请求,提供快速的响应时间。 - **轻量级**:相比其他大型的应用服务器,Resin Pro体积小巧,启动迅速,降低了系统资源的需求。 - **...

    resin-pro-3.1.9.rar_resin

    例如,通过调整`resin.conf`中的线程池设置,可以改善服务器对高并发请求的响应能力。同时,监控`logs`目录下的日志文件,可以帮助定位和解决运行时的错误或异常。 总之,Resin Pro 3.1.9是一个强大的Java应用...

    Resin3.13-pro

    3. **内存管理优化**:Resin的内存管理机制有效减少了内存泄漏,提高了服务器的稳定性。 4. **负载均衡与集群支持**:Resin 3.13-pro 可能内置了负载均衡器,可以自动将请求分发到多个服务器,以实现更高的可用性和...

    resin-prp-4.0.44

    在这一版本中,Resin团队致力于提升服务器的稳定性和安全性,同时优化了性能,确保能够处理高并发的Web请求。以下是一些关于Resin Pro 4.0.44的关键知识点: 1. **Servlet容器**:Resin作为一款Servlet容器,支持...

    resin4.0.47

    2. **快速启动与高并发**: Resin以其快速启动时间和高效的并发处理能力而著称。它的多线程模型和优化的内存管理有助于在高负载下保持良好的性能。 3. **Web应用程序部署**: 在Resin 4.0.47中,可以通过WAR(Web...

    resin introduce

    它的负载均衡能力使得在高并发环境下依然能够保持服务的连续性和响应速度。 总之,Resin是一款强大且灵活的Java应用服务器,特别适合需要高性能和企业级功能的Web应用程序。其免费版本对于小型项目来说已经足够,而...

    resin4.0.53 服务器

    这得益于其独特的线程池管理和内存管理策略,能够在高并发环境下保持良好的性能。此外,Resin还支持动态编译JSP,使得页面更新无需重启服务器,提高了开发效率。 在安全性方面,Resin提供了多种安全机制,包括SSL/...

    Netty性能测试报告.pdf

    3. **成功率**:所有请求的成功率是衡量服务器稳定性和可靠性的关键指标,报告中显示Netty和Resin在大部分情况下都能处理所有请求而无失败。 4. **读取速率(read/kb/s)和发送速率(send/kb/s)**:这两项指标反映...

    resion容器

    Resin容器,全称为Resin Application Server,是由Caucho Technology公司开发的一款高性能、轻量级的Java应用服务器,与Tomcat容器在功能上有一定的相似性。Resin以其高效的性能和对Java EE标准的支持,特别是在...

Global site tag (gtag.js) - Google Analytics