`

tomcat jvm 及优化

 
阅读更多

系统配置:
CPU: AMD Opteron 2GHz × 2
内存: 4G RAM (其中MySQL使用了2G)
OS: SuSE Linux Enterprise Server SP3 x86_64 bit, Kernel 2.6.5
JDK: Sun HotSpot 1.5.0-10 x86_64 bit
Tomcat: 5.5.12 (APR)

Tomcat配置:

server.xml

Xml代码
  1. <Connector port="8080" maxHttpHeaderSize="8192" useBodyEncodingForURI="true"
  2. maxThreads="1000" minSpareThreads="25" maxSpareThreads="75"
  3. enableLookups="false" redirectPort="8443" acceptCount="100"
  4. compression="on" compressionMinSize="2048"
  5. compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
  6. connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
<Connector port="8080" maxHttpHeaderSize="8192" useBodyEncodingForURI="true"                maxThreads="1000" minSpareThreads="25" maxSpareThreads="75"                enableLookups="false" redirectPort="8443" acceptCount="100"                compression="on" compressionMinSize="2048"  compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"                connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>



catalina.sh这个文件啥都没有改,懒得指定JVM参数进行优化了。

测试文件就用你贴出来的那个,用ab并发1000个请求,发送10000个请求,轻轻松松跑完测试,没有一个request fail。

我特别需要声明的是,这台服务器的CPU是很古老的型号了,而且上面还跑着异常繁忙的JavaEye后台数据库。因此在这台服务器上面做测试,性 能数据受到影响是可以预见的。而且我没有对JVM参数做任何优化,也没有对Tomcat进行任何特别的优化。即便如此,轻松的支撑1000个并发,这还是 直接用ab去压tomcat,没有走lighttpd。我另外也测试了一下走lighttpd,速度稍微慢一点,但是1000并发也毫无问题。


————————————————————————————————
现在系统部署只能达到240+ , tomcat + apache 也只能到 900 + ,看到robbin的发帖能达到1000 ,不知道该如何配置,特来请教:

http://www.javaeye.com/post/370111?page=8
robbin 写道
既然你用tomcat4都可以达到并发600,那tomcat5.5在同样环境下经过调优完全可以达到1000,看来问题还是在于你们tomcat没有配置好。

附带环境配置如下:

 

环境配置如下: (jdk没有用 -server)

Java代码
  1. windows 2003 企业版 sp2
  2. Intel(R) Xeon(R) 4 CPU 5130 @ 2.0GHz 4.00GB 内存
  3. apache_2.2.8-win32-x86
  4. mod_jk-apache-2.0.59
  5. jdk-1_5_0_14-windows-i586-p.exe -client
  6. Tomcat-6.0.16 + apr
windows 2003 企业版 sp2  Intel(R) Xeon(R) 4 CPU 5130 @ 2.0GHz 4.00GB 内存  apache_2.2.8-win32-x86  mod_jk-apache-2.0.59  jdk-1_5_0_14-windows-i586-p.exe -client  Tomcat-6.0.16 + apr

 

server.xml

Xml代码
  1. <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="2000" minSpareThreads="1000"/>
  2. <Connector port="8080" protocol="HTTP/1.1"
  3. connectionTimeout="2000"
  4. redirectPort="8443" enableLookups="false"
  5. acceptCount="5000" maxThreads="2000"/>
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="2000" minSpareThreads="1000"/>           <Connector port="8080" protocol="HTTP/1.1"                 connectionTimeout="2000"                 redirectPort="8443"  enableLookups="false"        acceptCount="5000" maxThreads="2000"/>

catalina.bat

Java代码
  1. set JAVA_OPTS=-Xms1400m -Xmx1400m -Djava.awt.headless=true
set JAVA_OPTS=-Xms1400m -Xmx1400m -Djava.awt.headless=true

 

index.jsp (除了下面这些代码,还有200行html代码,没有一个图片)

Java代码
  1. <%
  2. for(int i=0;i<1000;i++){
  3. request.setAttribute("key_"+i,"value_"+i);
  4. }
  5. for(int i=0;i<100;i++){
  6. request.getSession().setAttribute("key_"+i,"value_"+i);
  7. }
  8. %>
  9. <br />
  10. <%=request.getSession().getAttribute("key_0")%>
  11. <%=request.getSession().getAttribute("key_0")%>
  12. <%=request.getSession().getAttribute("key_0")%>
  13. <%=request.getSession().getAttribute("key_0")%>
  14. <%=request.getSession().getAttribute("key_0")%>
  15. <%=request.getSession().getAttribute("key_0")%>
<% for(int i=0;i<1000;i++){    request.setAttribute("key_"+i,"value_"+i);  }   for(int i=0;i<100;i++){    request.getSession().setAttribute("key_"+i,"value_"+i);  } %> <br /> <%=request.getSession().getAttribute("key_0")%> <%=request.getSession().getAttribute("key_0")%> <%=request.getSession().getAttribute("key_0")%> <%=request.getSession().getAttribute("key_0")%> <%=request.getSession().getAttribute("key_0")%> <%=request.getSession().getAttribute("key_0")%>

tomat 启动信息如下:

Java代码 <embed height="15" width="14" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptaccess="always" quality="high" flashvars="clipboard=2008-5-6%2017%3A54%3A52%20org.apache.catalina.core.AprLifecycleListener%20init%0A%E4%BF%A1%E6%81%AF%3A%20Loaded%20APR%20based%20Apache%20Tomcat%20Native%20library%201.1.10.%0A2008-5-6%2017%3A54%3A52%20org.apache.catalina.core.AprLifecycleListener%20init%0A%E4%BF%A1%E6%81%AF%3A%20APR%20capabilities%3A%20IPv6%20%5Bfalse%5D%2C%20sendfile%20%5Btrue%5D%2C%20accept%20filters%20%5Bfalse%5D%2C%20r%0Aandom%20%5Btrue%5D.%0A2008-5-6%2017%3A54%3A52%20org.apache.coyote.http11.Http11AprProtocol%20init%0A%E4%BF%A1%E6%81%AF%3A%20Initializing%20Coyote%20HTTP%2F1.1%20on%20http-8080%0A2008-5-6%2017%3A54%3A52%20org.apache.coyote.ajp.AjpAprProtocol%20init%0A%E4%BF%A1%E6%81%AF%3A%20Initializing%20Coyote%20AJP%2F1.3%20on%20ajp-30008%0A2008-5-6%2017%3A54%3A52%20org.apache.catalina.startup.Catalina%20load%0A%E4%BF%A1%E6%81%AF%3A%20Initialization%20processed%20in%20973%20ms%0A2008-5-6%2017%3A54%3A52%20org.apache.catalina.core.StandardService%20start%0A%E4%BF%A1%E6%81%AF%3A%20Starting%20service%20Catalina%0A2008-5-6%2017%3A54%3A52%20org.apache.catalina.core.StandardEngine%20start%0A%E4%BF%A1%E6%81%AF%3A%20Starting%20Servlet%20Engine%3A%20Apache%20Tomcat%2F6.0.16%0A2008-5-6%2017%3A54%3A52%20org.apache.coyote.http11.Http11AprProtocol%20start%0A%E4%BF%A1%E6%81%AF%3A%20Starting%20Coyote%20HTTP%2F1.1%20on%20http-8080%0A2008-5-6%2017%3A54%3A53%20org.apache.coyote.ajp.AjpAprProtocol%20start%0A%E4%BF%A1%E6%81%AF%3A%20Starting%20Coyote%20AJP%2F1.3%20on%20ajp-30008%0A2008-5-6%2017%3A54%3A53%20org.apache.catalina.startup.Catalina%20start%0A%E4%BF%A1%E6%81%AF%3A%20Server%20startup%20in%20310%20ms%0A" src="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf">
  1. 
    

-----------------------------------------------------------------------------------------

 

单独测试tomcat基本上只能达到240+左右的并发,tomcat+apache 900+并发,如果是静态页面tomcat并发1000+没有任何问题。

tomcat基本上都保持在 20% - 45% 之间 , 内存在 80M -- 600M +之间 ,根据并发和请求的大小,内存的变法比较明显,cpu基本保存在这里,apache占用的cpu基本上是在 15% - 40%。

分享到:
评论

相关推荐

    Tomcat JVM内存优化(Linux环境)

    ### Tomcat JVM内存优化(Linux环境) 在Linux环境下运行Tomcat服务器时,经常会遇到与Java虚拟机(JVM)相关的内存溢出问题。这些问题通常表现为`java.lang.OutOfMemoryError`异常,具体又分为两类:`PermGen ...

    Tomcat JVM的参数调优

    【标题】"Tomcat JVM参数调优"涉及的是在运行Apache Tomcat服务器时优化Java虚拟机(JVM)性能的过程。Tomcat是一个流行的开源Java应用服务器,它用于部署和运行Java Servlets和JavaServer Pages(JSP)。由于JVM是...

    Tomcat JVM内存设置方法

    ### Tomcat JVM内存设置方法详解 #### 一、前言 Tomcat作为一款广泛使用的Java应用服务器,其性能优化一直是开发者关注的重点之一。而在性能优化的过程中,合理设置JVM(Java Virtual Machine)内存是非常关键的一...

    Tomcat 调优及 JVM 参数优化

    这篇文章将深入探讨Tomcat调优与JVM参数优化的各个方面,帮助你提升服务器性能。 首先,我们来了解一下Tomcat调优的基础知识。Tomcat调优主要包括以下几个方面: 1. **线程池配置**:调整`maxThreads`和`...

    tomcat-jvm优化

    ### Tomcat-JVM优化策略详解 #### 一、理解Tomcat与JVM的关系 Tomcat作为一款开源的Servlet容器,其运行依赖于JVM(Java虚拟机)。这意味着,要优化Tomcat的性能,首先需要对JVM进行合理的配置。本文将深入探讨...

    关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论

    标题中的“关于tomcat乱码以及...综上所述,解决Tomcat的乱码问题需要正确配置字符编码,而处理JVM内存溢出则需优化内存分配和垃圾收集策略。对于MySQL的配置,理解`my.cnf`文件的内容对于数据库的高效运行也至关重要。

    Tomcat性能优化及JVM内存工作原理

    Tomcat性能优化及JVM内存工作原理 Tomcat性能优化是指通过调整Tomcat服务器的配置和JVM的参数,以提高Tomcat服务器的性能和响应速度。Tomcat性能优化主要包括代码层优化、JVM内存优化和应用配置优化三方面。 代码...

    tomcat/jvm优化下载完整版

    JVM优化入门,优化tomcat执行效率提高tomcat请求响应效率。基于CMS是用于对tenured generation的回收,也就是年老代的回收,目标是尽量减少应用的暂停时间,减少full gc发生的几率,利用和应用程序线程并发的垃圾...

    JVM优化3(Tomcat参数调优,JVM参数调优,jvm字节码,代码优化).pdf

    本篇文件内容主要介绍了JVM优化的第三部分,重点围绕Tomcat参数调优、JVM参数调优、JVM字节码优化以及代码优化等几个方面。下面是针对这些知识点的详细解释: 1. Tomcat参数调优 在Tomcat参数调优部分,首先介绍了...

    java缓存代码,tomcat JVM配置

    其次,Tomcat JVM配置对于优化Web应用性能至关重要。JVM(Java Virtual Machine)是Java程序运行的环境,其配置直接影响到应用的启动速度、运行效率和稳定性。在`tomcat连接池设定.docx`文档中,可能包含以下几方面...

    Tomcat性能优化

    【描述】:“Tomcat7性能优化调优Tomcat7性能优化调优Tomcat7性能优化调优”重复强调了对Tomcat7版本的性能调整,这可能涉及到内存管理、线程池设置、连接器配置、JVM参数优化等多个方面。性能调优的目标是提高...

    java虚拟机jvm及Tomcat中的jvm有关内存的设置与调优

    以下是在Tomcat环境中优化JVM内存的具体步骤: 1. **环境变量设置**:通过设置`CATALINA_OPTS`环境变量,可以在系统级别全局地调整Tomcat中JVM的内存参数。 2. **编辑catalina.bat**:在Tomcat的bin目录下,直接...

    JVM优化/Tomcat优化/mysql优化-某学院VIP教程

    1 什么是性能优化\ 2 性能测试与优化\ 3 性能优化JVM篇\ 4 性能优化Tomcat篇\ 5 性能优化mysql篇\

    ECLIPSE,TOMCAT,JVM内存设置

    标题 "ECLIPSE,TOMCAT,JVM内存设置" 涉及到的是在开发Java Web应用程序时,如何配置Eclipse集成开发环境(IDE)、Apache Tomcat服务器以及Java虚拟机(JVM)的内存参数,以优化性能和避免内存溢出等问题。...

    tomcat7安装使用及jvm连接数参数调优

    Tomcat7 安装使用及 JVM 连接数参数调优 Tomcat7 是一个流行的 Java Web 服务器,主要用于部署和管理基于 Java 的 Web 应用程序。为了确保 Tomcat7 的稳定运行和高效性能,需要对其进行合理的安装、配置和优化。...

    Tomcat JVM调优-TomcatJVM.zip

    然而,为了确保应用的高性能和稳定性,对Tomcat的JVM进行优化是必不可少的环节。本文将深入探讨Tomcat JVM调优的关键技术和实践策略。 一、理解JVM Java虚拟机(JVM)是Java程序运行的基础,它负责执行字节码、...

    tomcat jvm内存修改

    ### Tomcat JVM 内存调整方法与原理 #### 一、背景介绍 在日常的运维工作中,经常会遇到 Tomcat 应用服务器出现内存溢出的问题,表现为 `java.lang.OutOfMemoryError` 异常。这类问题通常是由于 JVM(Java 虚拟机...

    redis集群jvm调优实战MySQL5.6性能优化&Tomcat7优化.rar

    本资料集围绕四个核心主题展开:Redis集群、JVM调优、MySQL 5.6性能优化和Tomcat 7的优化,旨在帮助开发者和运维人员更好地理解和实践这些关键领域的优化策略。 首先,Redis是一个高性能的键值存储系统,常用于缓存...

    设置tomcat的jvm虚拟机大小

    设置 Tomcat 的 JVM 虚拟机大小 ...9. Tomcat 优化:Tomcat 的优化可以通过设置连接器参数、JVM 的内存大小和垃圾回收机制来实现。此外,还可以通过调整堆的大小、垃圾回收机制和连接器参数来优化 Tomcat 的性能。

Global site tag (gtag.js) - Google Analytics