精华内容
下载资源
问答
  • tomcat线程配置

    2017-08-22 15:48:13
    --------------------------------------------------------------------------------------------------------------...一、Tomcat的JVM提示内存溢出 查看%TOMCAT_HOME%\logs文件夹下,日志文件是否有内存溢出错误


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

     

    一、Tomcat的JVM提示内存溢出

    查看%TOMCAT_HOME%\logs文件夹下,日志文件是否有内存溢出错误

    二、修改Tomcat的JVM

    1、错误提示:java.lang.OutOfMemoryError: Java heap space

    Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误,Out of Memory(系统内存不足)的异常,从而导致客户端显示500错误,一般调整Tomcat的使用内存即可解决此问题。 

    Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:set JAVA_OPTS=-Xms256m -Xmx512m 

    Linux环境下修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:JAVA_OPTS=’-Xms256m -Xmx512m’ 

    其中,-Xms设置初始化内存大小,-Xmx设置可以使用的最大内存。

    2、错误提示:java.lang.OutOfMemoryError: PermGen space

    原因:
    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存
    放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的
    Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用
    中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的
    时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信
    息了。
    解决方法:

    在catalina.bat的第一行增加:
    set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -
    XX:MaxPermSize=256m
    在catalina.sh的第一行增加:
    JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -
    XX:MaxPermSize=256m

    3、JVM设置

    堆的尺寸 
    -Xmssize in bytes 
        设定Java堆的初始尺寸,缺省尺寸是2097152 (2MB)。这个值必须是1024个字节(1KB)的倍数,且比它大。(-server选项把缺省尺寸增加到32M。) 
    -Xmnsize in bytes 
        为Eden对象设定初始Java堆的大小,缺省值为640K。(-server选项把缺省尺寸增加到2M。) 
    -Xmxsize in bytes 
        设定Java堆的最大尺寸,缺省值为64M,(-server选项把缺省尺寸增加到128M。) 最大的堆尺寸达到将近2GB(2048MB)。 

    请注意:很多垃圾收集器的选项依赖于堆大小的设定。请在微调垃圾收集器使用内存空间的方式之前,确认是否已经正确设定了堆的尺寸。 

    垃圾收集:内存的使用 
    -XX:MinHeapFreeRatio=percentage as a whole number 
        修改垃圾回收之后堆中可用内存的最小百分比,缺省值是40。如果垃圾回收后至少还有40%的堆内存没有被释放,则系统将增加堆的尺寸。 
    -XX:MaxHeapFreeRatio=percentage as a whole number 
        改变垃圾回收之后和堆内存缩小之前可用堆内存的最大百分比,缺省值为70。这意味着如果在垃圾回收之后还有大于70%的堆内存,则系统就会减少堆的尺寸。 
    -XX:NewSize=size in bytes 
        为已分配内存的对象中的Eden代设置缺省的内存尺寸。它的缺省值是640K。(-server选项把缺省尺寸增加到2M。) 
    -XX:MaxNewSize=size in bytes 
        允许您改变初期对象空间的上限,新建对象所需的内存就是从这个空间中分配来的,这个选项的缺省值是640K。(-server选项把缺省尺寸增加到2M。) 
    -XX:NewRatio=value 
        改变新旧空间的尺寸比例,这个比例的缺省值是8,意思是新空间的尺寸是旧空间的1/8。 
    -XX:SurvivorRatio=number 
        改变Eden对象空间和残存空间的尺寸比例,这个比例的缺省值是10,意思是Eden对象空间的尺寸比残存空间大survivorRatio+2倍。 
    -XX:TargetSurvivorRatio=percentage 
        设定您所期望的空间提取后被使用的残存空间的百分比,缺省值是50。 
    -XX:MaxPermSize=size in MB 
        长久代(permanent generation)的尺寸,缺省值为32(32MB)。

    三、查看Tomcat的JVM内存

    1. Tomcat6中没有设置任何默认用户,因而需要手动往Tomcat6的conf文件夹下的tomcat-users.xml文件中添加用户。

     

        如:<role rolename="manager"/>
              <user username="tomcat" password="tomcat" roles="manager"/>

        注:添加完需要重启Tomcat6。

     

    2. 访问http://localhost:8080/manager/status,输入上面添加的用户名和密码。

     

    3. 然后在如下面的JVM下可以看到内存的使用情况。

    JVM

        Free memory: 2.50 MB Total memory: 15.53 MB Max memory: 63.56 MB

    四、Tomcat连接数设置

    在tomcat配置文件server.xml中的<Connector ... />配置中,和连接数相关的参数有:
    minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
    maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
    acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100
    enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
    connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

    其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。

     

     

    提高Tomcat的并发能力一些方法
    1、Apache + Tomcat 结合起来用Apache 负责静态页面,Tomcat负责动态页面,同时减少connectionTimeout的时间,以应对并发量大线程回收来不及的情况。
    2、压力过大的问题,可以做负载均衡,一个TOMCAT无论如何也不可能担当如此多的线程负载,而且JVM过大,其内存管理成本将显著加大。2G的内存,做3-4个TOMCAT实例(512RAM*4),更为科学合理。
    3、数据库连接池,不少人,都推荐使用C3P0,能提高访问数据库的并发性能好几倍。(有博文称使用tomcat自带的jdbc-pool更好,还没试过)
    4、采用Tomcat集群可以最大程度的发挥服务器的性能,可以在配置较高的服务器上部署多个Tomcat,也可以在多台服务器上分别部署 Tomcat,Apache和Tomcat整合的方式还是JK方式。经过验证,系统对大用户量使用的响应方面,Apache+3Tomccat集群> Apache+2Tomcat集群> Apache集成Tomcat >单个Tomcat。并且采用Apache+多Tomcat集群的部署方式时,如果一个Tomcat出现宕机,系统可以继续使用,所以在硬件系统性能足够优越的情况下,需要尽量发挥软件的性能,可以采用增加Tomcat集群的方式。
    5. 打开KeepAlive支持
    KeepAlive on, KeepAliveTimeout 15 MaxKeepAliveRequests 1000
    根据实际经验,通过Apache和Tomcat集群的方式提高系统性能的效果十分明显,这种方式可以最大化的利用硬件资源,通过多个Tomcat的处理来分担单Tomcat时的压力。
    web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。


    展开全文
  • 设置web线程需要在Tomcat配置文件server.xml中配置 1、打开/conf/server.xml &lt;Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="...

    转:https://www.cnblogs.com/chengssblog/p/6635211.html
    设置web线程需要在Tomcat配置文件server.xml中配置

    1、打开/conf/server.xml

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="10" minSpareThreads="5" 
            maxIdleTime="60000" prestartminSpareThreads="true" maxQueueSize="100" />

    name:共享线程池的名字
    namePrefix:在JVM上,每个运行线程都可以有一个name 字符串。这一属性为线程池中每个线程的name字符串设置了一个前缀,Tomcat将把线程号追加到这一前缀的后面。默认值:tomcat-exec-;
    maxThreads:最多线程数量,如果请求超过这个数则要等到其它线程结束再处理
    minSpareThreads:即最小空闲线程数。如果当前的空闲数小于该值,则一次性创建这个数量的空闲线程,所以它本身也是一个创建线程的步长。
    maxIdleTime:在Tomcat关闭一个空闲线程之前,允许空闲线程持续的时间(以毫秒为单位)。只有当前活跃的线程数大于minSpareThread的值,才会关闭空闲线程。默认值:60000(一分钟)。
    prestartminSpareThreads:

    2、配置Connector

    <Connector executor="tomcatThreadPool"  
               port="8080" protocol="HTTP/1.1"  
                   connectionTimeout="20000"  
                   redirectPort="8443"   
               minProcessors="5"  
               maxProcessors="75"  
               acceptCount="1000"/>  

    executor:表示使用该参数值对应的线程池;

    minProcessors:服务器启动时创建的处理请求的线程数;

    maxProcessors:最大可以创建的处理请求的线程数;

    acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。

    展开全文
  • 准备 ...服务端配置: server.tomcat.max-threads=1 server.tomcat.min-spare-threads=1 server.tomcat.accept-count=1 server.tomcat.max-connections=1 客户端测试时,同时发起5个http请求,结...

    准备

    各参数具体含义可以参考文档1文档2
    服务端对请求进行拦截,长时间不返回结果

    测试

    1.测试一

    服务端配置:

    server.tomcat.max-threads=1
    server.tomcat.min-spare-threads=1
    server.tomcat.accept-count=1
    server.tomcat.max-connections=1
    

    客户端测试时,同时发起5个http请求,结果如下

    {"result":"Connect to 127.0.0.1:8090 [/127.0.0.1] failed: connect timed out","startTime":1581486423174,"consume":3652,"threadName":"Thread-3"}
    {"result":"Connect to 127.0.0.1:8090 [/127.0.0.1] failed: connect timed out","startTime":1581486423174,"consume":3652,"threadName":"Thread-4"}
    {"result":"Connect to 127.0.0.1:8090 [/127.0.0.1] failed: connect timed out","startTime":1581486423174,"consume":3652,"threadName":"Thread-0"}
    {"result":"Read timed out","startTime":1581486423174,"consume":5660,"threadName":"Thread-2"}
    {"result":"Read timed out","startTime":1581486423174,"consume":5661,"threadName":"Thread-1"}
    

    可见服务端共处理2个请求,其余请求均无法建立连接

    2.测试二

    服务端配置:

    server.tomcat.max-threads=1
    server.tomcat.min-spare-threads=1
    server.tomcat.accept-count=1
    server.tomcat.max-connections=3
    

    客户端测试时,同时发起5个http请求,结果如下

    {"result":"Connect to 127.0.0.1:8090 [/127.0.0.1] failed: connect timed out","startTime":1581485959745,"consume":3829,"threadName":"Thread-0"}
    {"result":"Read timed out","startTime":1581485959745,"consume":5692,"threadName":"Thread-4"}
    {"result":"Read timed out","startTime":1581485959745,"consume":5693,"threadName":"Thread-1"}
    {"result":"Read timed out","startTime":1581485959745,"consume":5807,"threadName":"Thread-3"}
    {"result":"Read timed out","startTime":1581485959745,"consume":5807,"threadName":"Thread-2"}
    

    可见服务端共处理4个请求,其余请求均无法建立连接

    3.测试三

    服务端配置:

    server.tomcat.max-threads=1
    server.tomcat.min-spare-threads=1
    server.tomcat.accept-count=2
    server.tomcat.max-connections=1
    

    客户端测试时,同时发起5个http请求,结果如下

    {"result":"Connect to 127.0.0.1:8090 [/127.0.0.1] failed: connect timed out","startTime":1581486615613,"consume":3630,"threadName":"Thread-2"}
    {"result":"Connect to 127.0.0.1:8090 [/127.0.0.1] failed: connect timed out","startTime":1581486615613,"consume":3630,"threadName":"Thread-0"}
    {"result":"Read timed out","startTime":1581486615614,"consume":5634,"threadName":"Thread-3"}
    {"result":"Read timed out","startTime":1581486615614,"consume":5635,"threadName":"Thread-4"}
    {"result":"Read timed out","startTime":1581486615613,"consume":5637,"threadName":"Thread-1"}
    

    可见服务端共处理3个请求,其余请求均无法建立连接

    展开全文
  • Tomcat线程配置

    2017-06-21 09:23:57
    同台tomcat下两个项目通过hession发布接口调用测压,经apache-jmeter-3.0 配置1000线程测压根据测试后,报 org.springframework.remoting.RemoteConnectFailureException: Cannot connect to Hessian remote service...

    问题背景:

    同台tomcat下两个项目通过hession发布接口调用测压,经apache-jmeter-3.0 配置1000线程测压根据测试后,报 org.springframework.remoting.RemoteConnectFailureException: Cannot connect to Hessian remote service  xxxxx  ConnectException: Connection refused: connect异常


    异常情况:

    百分之五十到六十的请求正常,其他的报异常。


    原因分析:

    可能是线程连接数量限制。

    问题解决办法:

    tomcat配置:

    在tomcat的server.xml文件中打开配置,<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="1000" minSpareThreads="4"/>,默认已有但是被注释掉了,注意修改maxThreads值;

    在<Connector executor="tomcatThreadPool" connectionTimeout="20000" maxPostSize="0" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>中配置executor="tomcatThreadPool",值为Excutor的name


    修改后,测压不报异常

    展开全文
  • 1) 服务端 如何查看java进程的线程数量 jps 查看java进程 使用pstree -p 进程号 这个命令可以列出改进程下所有的...Tomcat 配置最大连接数 # 等待队列的长度 默认 100 # 当调用web服务的http的请求数量 到达tom
  • 转自最近一直在解决线上一个问题,表现是:Tomcat每到凌晨会有一个...服务器性能很好,Tomcat版本是7.0.54,配置如下:maxThreads="3000" minSpareThreads="800"/>connectionTimeout="60000"keepAliveTimeout="3...
  • tomcat线程

    2019-04-23 11:40:55
    tomcat的maxThreads、acceptCount(最大线程数、最大排队数) tomcat 6的Connector配置如下 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" ...
  • tomcat9线程配置-server.xml

    千次阅读 2019-06-15 22:42:34
    tomcat9线程配置-server.xml 一、不使用线程池 <Connector port="8080" //监听的端口 protocol="HTTP/1.1" redirectPort="8443" connectionTimeout="30000" //连接超时时间 keepAliveTimeout="15000" ...
  • Tomcat中的线程配置

    千次阅读 2016-12-05 18:36:00
    一、概述  tomcat中在server.xml中配置线程,可以在connector中配置,也可以配置executor,这两者之间... 连接器中的线程配置是私有的,连接器自己的配置只能自己使用;而线程池可以被共享,多个连接器通过executor属
  • 本文前半部分结论存在严重错误,请看最后2015-1-20更新部分。...服务器性能很好,Tomcat版本是7.0.54,配置如下:事后thread dump看其实真正处于RUNNABLE状态的线程很少,绝大部分线程都处于TIMED_WAITIN...
  • 一、配置Tomcat/conf/server.xml修改配置 <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"  redirectPort="8443"  URIEncoding="UTF-8"  minSpareThreads="2...
  • Tomcat线程

    2016-05-30 15:23:32
    可以通过调节并发线程数来对tomcat自身进行优化。 tomcat中service.xml配置如下:    Executor name="tomcatThreadPool" namePrefix="catalina-exec-"   maxThreads="150" minSpareThreads="4"/>  -->
  • Tomcat线程分析

    2019-03-11 19:54:19
    用一般配置Tomcat 9线程情况进行分析 main Thread:一般是唯一非daemon线程,await NioBlockingSelector.BlockPoller-(1,2) ContainerBackgroundProcessor:一般只有engine有此线程 http-nio-8080-exec-(1到10)...
  • 1. tomcat线程配置参数详情如下:  修改conf/server.xml中的<Connector .../> 节点如下:  <Connector port="8080" protocol=...
  • Tomcat配置线程配置数据库连接池 1、tomcat配置线程池: [root@RD2_AS yanghuihui]# cd /usr/tomcat/conf/ [root@RD2_AS conf]# vi server.xml 第一步,打开共享的线程池 源码 <Service name="Catalina...
  • 一、配置 ...Tomcat/conf/server.xml修改配置 <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"redirectPort="8443"URIEncoding="UTF-8"minSpareThreads="25"...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,039
精华内容 815
关键字:

tomcat线程配置