`

Tomcat6 内存和线程配置

 
阅读更多

1、修改启动时内存参数、并指定JVM时区 (在windows server 2008 下时间少了8个小时)

Tomcat上运行j2ee项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数: 

window下, 在catalina.bat最前面

  set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m

       一定加在catalina.bat最前面

set "CURRENT_DIR=%cd%"前面

linux下,在catalina.sh最前面增加

JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"

    注意:前后二者区别,有无set,有无双引号

2、线程池配置(Tomcat6下)

使用线程池,用较少的线程处理较多的访问,可以提高tomcat处理请求的能力

使用方式:首先,打开/conf/server.xml,增加

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />

最大线程500(一般服务器足以),最小空闲线程数20,线程最大空闲时间60秒。

然后,修改<Connector ...>节点,增加executor属性,如:

<Connector executor="tomcatThreadPool"
               port="80" protocol="HTTP/1.1"
               connectionTimeout="60000"
               keepAliveTimeout="15000"
               maxKeepAliveRequests="1"
               redirectPort="443"
               ....../>

注意:可以多个connector公用1个线程池

3、调整连接相关Connector的参数

<Connector executor="tomcatThreadPool"
               port="80" protocol="HTTP/1.1"
               connectionTimeout="60000"
               keepAliveTimeout="15000"
               maxKeepAliveRequests="1"
               redirectPort="443"
               maxHttpHeaderSize="8192" URIEncoding="UTF-8" enableLookups="false" acceptCount="100" disableUploadTimeout="true"/>

参数说明:

connectionTimeout - 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒

keepAliveTimeout - 长连接最大保持时间(毫秒)。此处为15

maxKeepAliveRequests - 最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200之间) the maximum number of HTTP requests that can be held in the pipeline until the connection is closed by the server. Setting this attribute to 1 disables HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and pipelining. Setting this to -1 allows an unlimited number of pipelined or keep-alive HTTP requests. If not specified, this attribute is set to 100

maxHttpHeaderSize - http请求头信息的最大程度,超过此长度的部分不予处理。一般8K

URIEncoding - 指定Tomcat容器的URL编码格式

acceptCount - 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认为10个。defines the maximum queue length for incoming connection requests when all possible request processing threads are in use. Any requests received when the queue is full are refused. The default value is 10.

disableUploadTimeout - 上传时是否使用超时机制

enableLookups - 是否反查域名,取值为:truefalse。为了提高处理能力,应设置为false

bufferSize - defines the size (in bytes) of the buffer to be provided for input streams created by this connector. By default, buffers of 2048 bytes are provided.

maxSpareThreads - 做多空闲连接数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程 the maximum number of unused request processing threads that are allowed to exist until the thread pool starts stopping the unnecessary threads. The default value is 50

maxThreads - 最多同时处理的连接数,Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。the maximum number of request processing threads to be created by this Connector, which therefore determines the maximum number of simultaneous requests that can be handled. If not specified, this attribute is set to 200

minSpareThreads - 最小空闲线程数,Tomcat初始化时创建的线程数 the number of request processing threads that are created when this Connector is first started. The connector will also make sure it has the specified number of idle processing threads available. This attribute should be set to a value smaller than that set for maxThreads. The default value is 4

minProcessors - 最小空闲连接线程数,用于提高系统处理性能,默认值为10。(用于Tomcat4中)

maxProcessors - 最大连接线程数,即:并发处理的最大请求数,默认值为75。(用于Tomcat4中)

备注:

Tomcat4中可以通过修改minProcessorsmaxProcessors的值来控制线程数。

Tomcat5+主要对以下参数调整

maxThreads

Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。

acceptCount

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

connnectionTimeout

网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

minSpareThreads

Tomcat初始化时创建的线程数。

maxSpareThreads

一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。

4、负载均衡、集群的配置

Tomcat6支持分布式部署,可以实现集群功能,提高响应能力。

5、利用JMX监控Tomcat运行情况,需要手工调整启动参数,如下:

打开cataline.bat,增加一行

set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=10090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"

 linux下修改cataline.sh:

JAVA_OPTS="-Dcom.sun.management.jmxremote.port=10090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=%CATALINA_BASE\conf\logging.properties"

注意JDK\jre\lib\management\management.properties文件必须存在。

重新启动tomcat节点,然后用jconsole连接(此处端口wei10090

6Tomcat增加一个应用

server.xmlHost标签中增加行

<Context displayName="OA" docBase="/app/web-apps/GACWP" path="" />

path代表上下文名称,空表示是根路径。

原创地址:http://feihan21.blog.51cto.com/1364153/1546440

 

 

 

 

分享到:
评论

相关推荐

    Tomcat6_优化_方案

    0. 必须优化JDK和内存,否则内存不足,则无法扛并发.(请参考: ) 1. 如果有中文注释,则文件编码必须指定,另存为 UTF-8 2. 将 URIEncoding 指定为 UTF-8,(如果程序写的太烂,有乱码,则将此行去除) 3. (无用,...

    tomcat发布javaweb项目,以及tomcat的配置

    tomcat发布javaweb项目,去掉项目名称和端口号!,修改tomcat的内存配置以及tomcat的并发量!

    Tomcat监控工具Probe,支持tomcat6-7-8-9.zip

    Threads:tomcat线程,可以查看线程的状态等信息,还可以杀死线程 Cluster:tomcat集群 System Information:系统信息 Connectors:connector信息,可以看到每秒的请求数、响应时间等 Quick check:...

    Tomcat内存溢出的三种情况及解决办法分析

    在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。 这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况: 1.OutOfMemoryError: Java...

    tomcat垃圾回收配置模版.docx

    tomcat垃圾回收配置模版 G1回收器(Garbage-First) G1回收器拥有独特的垃圾回收策略,回收期间可多线程同时工作. 拥有与应用程序交替执行的能力,部分工作可与应用程序同时执行,在整个GC期间不会完全阻塞应用程序。

    nginx+tomcat在windows下做负载均衡

    由于Tomcat自身对内存的占用有控制,当对内存的占用达到最大值时便会出现内存溢出,对网站的访问严重超时等现象,这时便需要重新启动Tomcat以释放占用的内存,这样做便会阻断网站运行。 所以对Tomcat做负载均衡便很...

    Tomcat面试专题及答案.pdf

    可以根据机器的时期性能和内存 大小调整,一般可以在 400-500。最大可以在 800 左右。 minSpareThreads=”25”—Tomcat 初始化时创建的线程数。默认值 4。如果 当前没有空闲线程,且没有超过 maxThreads,一次性创建...

    Tomcat常用配置

    Tomcat常用配置,内存、数据库连接池、多线程

    tomcat内存溢出问题解决经历

    左思右想之后,想到了一个可能会导致tomcat内存上涨的点,那就是多线程,然后翻代码找线程池的配置,发现也没什么可疑之处。 那就先解决下tomcat关不掉的问题吧,百度…检查代码…几十分钟后找到了,在tomc

    JConsole_远程监控Tomcat_ricky

    JConsole能够提供被监控虚拟机的内存、线程、类的加载以及MBean等信息,从而能够对服务器的运行情况进行实时监控。 其实在 JDK 5 中已经新加入了这个功能了. 现在的 JDK 已经内置了对 VM 的监控功能. JDK 6 中这个...

    jprofiler 监控容器 tomcat

    里面含有具体文件,web.xml 配置、 javamelody...把你的web.xml配置 然后把两个jar放到你的项目下面,然后把那个war包放到你的服务下,启动就可以监控你的项目运行情况,如线程信息,内存了,请求地址的次数了,cpu等、

    tomcat性能优化方式简单整理

    Tomcat内存优化 启动时告诉JVM我要一块大内存(调优内存是最直接的方式) 我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数 JAVA_OPTS参数说明 server 启用jdk 的 server 版 Xms java虚拟机初始...

    零基础学会Linux常用配置

    二、 Linux 进程和线程 8 三、 Linux 内存管理 24 四、 文件系统 33 五、 Linux IO 48 六、 Linux 安全 53 七、 Linux系统安装(centos7) 56 八、 Linux vi/vim 59 九、 配置IP地址 66 十、 配置终端连接工具...

    redisson:Redisson-具有内存中数据网格功能的Redis Java客户端。 超过50种基于Redis的Java对象和服务:Set,Multimap,SortedSet,Map,List,Queue,Deque,Semaphore,Lock,AtomicLong,Map Reduce,Publish Subscribe,Bloom过滤器,Spring Cache,Tomcat,Scheduler,JCache API,Hibernate, MyBatis,RPC,本地缓存..

    Redisson-Redis Java客户端具有内存中数据网格的功能 | | | | | 基于高性能的异步和无锁Java Redis客户端和框架。 JDK兼容性:1.8-15,Android 产品特点 Redis复制设置(包括对和) Redis群集设置(包括对和) ...

    应用分析监控平台 闪电狗.zip

    闪电狗监控(flash-dog)起源于杭州斯凯网络科技有限公司一个真实项目,主要优点是轻巧快捷,非侵入式,不影响业务代码,只需加入几个jar包和修改log4j配置文件,就能监控任意指标,如CPU,内存、线程,游戏收入,...

    Java虚拟机

    5.3.4 调整内存设置控制垃圾收集频率 5.3.5 选择收集器降低延迟 5.4 本章小结 第三部分 虚拟机执行子系统 第6章 类文件结构 6.1 概述 6.2 无关性的基石 6.3 Class类文件的结构 6.3.1 魔数与Class文件的版本...

    阿里巴巴,天猫,支付宝面试题

    6. sleep和wait的区别 7. hashmap的底层实现 8. 一万个人抢100个红包,如何实现(不用队列),如何保证2个人不能抢到同一个红包,可用分布式锁 9. java内存模型,垃圾回收机制,不可达算法 10. 两个Integer的引用...

    Java面试宝典2020修订版V1.0.1.doc

    23、Tomcat系统内存怎么配置 39 24、JSTL标签库包含哪些? 39 五、数据库部分 40 1、触发器的作用? 40 2、什么是存储过程?用什么来调用? 40 3、存储过程的优缺点? 40 4、存储过程与函数的区别 41 5、索引的作用...

    java面试题

    6. Collection 和 Collections的区别。 9 7. &和&&的区别。 9 8. HashMap和Hashtable的区别。 10 9. final, finally, finalize的区别。 10 10. sleep() 和 wait() 有什么区别? 10 11. Overload和Override的区别。...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【多线程】简述synchronized 和java.util.concurrent.locks.Lock的异同? 90 【线程】ThreadLocal的作用 90 【Spring】什么是IOC和DI?DI是如何实现的 91 【Spring】spring中的IOC(控制反转)的原理 92 【Spring】...

Global site tag (gtag.js) - Google Analytics