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,增加

[html] view plaincopyprint?

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

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

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

[html] view plaincopyprint?

  1. <Connector executor="tomcatThreadPool"
  2. port="80" protocol="HTTP/1.1"
  3. connectionTimeout="60000"
  4. keepAliveTimeout="15000"
  5. maxKeepAliveRequests="1"
  6. redirectPort="443"
  7. ....../>
<Connector executor="tomcatThreadPool"
               port="80" protocol="HTTP/1.1"
               connectionTimeout="60000"
               keepAliveTimeout="15000"
               maxKeepAliveRequests="1"
               redirectPort="443"
               ....../>

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

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

[html] view plaincopyprint?

  1. <Connector executor="tomcatThreadPool"
  2. port="80" protocol="HTTP/1.1"
  3. connectionTimeout="60000"
  4. keepAliveTimeout="15000"
  5. maxKeepAliveRequests="1"
  6. redirectPort="443"
  7. maxHttpHeaderSize="8192" URIEncoding="UTF-8" enableLookups="false" acceptCount="100" disableUploadTimeout="true"/>
<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 - 是否反查域名,取值为:true或false。为了提高处理能力,应设置为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中可以通过修改minProcessors和maxProcessors的值来控制线程数。

在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)

6、Tomcat增加一个应用

在server.xml的Host标签中增加行

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

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

时间: 2024-10-02 10:05:04

Tomcat6 内存和线程配置的相关文章

YARN的内存和CPU配置

Hadoop YARN同时支持内存和CPU两种资源的调度,本文介绍如何配置YARN对内存和CPU的使用. YARN作为一个资源调度器,应该考虑到集群里面每一台机子的计算资源,然后根据application申请的资源进行分配Container.Container是YARN里面资源分配的基本单位,具有一定的内存以及CPU资源. 在YARN集群中,平衡内存.CPU.磁盘的资源的很重要的,根据经验,每两个container使用一块磁盘以及一个CPU核的时候可以使集群的资源得到一个比较好的利用. 内存配置

[Spark性能调优] 第四章 : Spark Shuffle 中 JVM 内存使用及配置内幕详情

本课主题 JVM 內存使用架构剖析 Spark 1.6.x 和 Spark 2.x 的 JVM 剖析 Spark 1.6.x 以前 on Yarn 计算内存使用案例 Spark Unified Memory 的运行原理和机制 引言 Spark 从1.6.x 开始对 JVM 的内存使用作出了一种全新的改变,Spark 1.6.x 以前是基于静态固定的JVM内存使用架构和运行机制,如果你不知道 Spark 到底对 JVM 是怎么使用,你怎么可以很有信心地或者是完全确定地掌握和控制数据的缓存空间呢,所

[Spark性能调优] Spark Shuffle 中 JVM 内存使用及配置详情

[Spark性能调优]  Spark Shuffle 中 JVM 内存使用及配置详情 本课主题 JVM 內存使用架构剖析 Spark 1.6.x 和 Spark 2.x 的 JVM 剖析 Spark 1.6.x 以前 on Yarn 计算内存使用案例 Spark Unified Memory 的运行原理和机制 引言 Spark 从1.6.x 开始对 JVM 的内存使用作出了一种全新的改变,Spark 1.6.x 以前是基于静态固定的JVM内存使用架构和运行机制,如果你不知道 Spark 到底对

Hadoop性能调优、YARN的内存和CPU配置

转自: https://blog.csdn.net/tototuzuoquan/article/details/80671128 转: https://blog.csdn.net/dehu_zhou/article/details/52808752 https://blog.csdn.net/dxl342/article/details/52840455 Hadoop为用户作业提供了多种可配置的参数,以允许用户根据作业特点调整这些参数值使作业运行效率达到最优. 一 应用程序编写规范 1.设置Co

Tomcat6.0数据库连接池配置

http://blog.163.com/magicc_love/blog/static/185853662201111101130969/ oracle驱动包Tomcat 6.0配置oracle数据库连接池 安装Tomcat后,在我的电脑-属性—>高级-->环境变量系统变量中添加以下环境变量(假定你的tomcat安装在c:\tomcat); CATALINA_HOME: c:\tomcat CATALINA_BASE: c:\tomcat TOMCAT_HOME: c:\tomcat 然后修改

.NET Core中遇到奇怪的线程死锁问题:内存与线程数不停地增长

一个 asp.net core 站点,之前运行在Linux 服务器上,运行一段时间后有时站点会挂掉,在日志中记录很多“EMFILE too many open files”的错误: Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvException: Error -24 EMFILE too many open files 后来将这个 asp.net 站点部署到 Windows 服务器的 IIS 上.运行一段时间后,发现其中一台

Zabbix 3.0 监控交换机(3)--CPU、内存监控及配置Trigger

要监控交换机的CPU.内存关键在于找到正确的OID,关于怎么寻找OID请参考以下博文. http://tryrus.blog.51cto.com/10914693/1788833 看这篇博文之前请确定已对zabbix的基本操作已有了解,有不明白的地方可以看我之前写的博文. http://tryrus.blog.51cto.com/10914693/1772271 http://tryrus.blog.51cto.com/10914693/1782062 一.配置环境 CentOS 7 Linux

MySQL中内存分为全局内存和线程内存

首先我们来看一个公式,MySQL中内存分为全局内存和线程内存两大部分(其实并不全部,只是影响比较大的 部分): 复制代码 代码如下: per_thread_buffers=(read_buffer_size+read_rnd_buffer_size+sort_buffer_size+thread_stack+join_buffer_size+binlog_cache_size+tmp_table_size)*max_connectionsglobal_buffers=innodb_buffer_

java线程内存模型,线程、工作内存、主内存

转自:http://rainyear.iteye.com/blog/1734311 java线程内存模型 线程.工作内存.主内存三者之间的交互关系图: key edeas 所有线程共享主内存 每个线程有自己的工作内存 refreshing local memory to/from main memory must  comply to JMM rules 产生线程安全的原因 线程的working memory是cpu的寄存器和高速缓存的抽象描述:现在的计算机,cpu在计算的时候,并不总是从内存读