TOMCAT6 终极优化资料


Tomcat6 内存和线程配置 当在对其进行并发测试时,基本上 30 个 USER 上去就当机了,还要修改默认连接数设置:以下红色四行 TOMCAT6 中好相没有,手工加上就可以了,基本上可以解决连接数过大引起的死机。具体数值可跟据实 际情况设置 这样设置以后,基本上没有再当机过。。。。。 maxThreads="600" ///最大线程数 minSpareThreads="100"///初始化时创建的线程数 maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的 socket 线程。 acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数, 超过这个数的请求将不予处理 Tomcat6 使用安装版本进行安装后,使用内存的调整无法利用修改启动文件的方式进行,但按缺省方式启 动后如果启动的应用较多的话 Tomcat 经常会因为内存不足而失去响应,这个时候必须人工调整内存参数: 1.“开始”--“Apache Tomcat 6”--“Configure Tomcat” 2.选择 Java 标签,在“Initial memory pool(初始内存)”和“Maximum memory pool(最大内存)”中输入你 需要的内存参数即可 与内存相关的 tomcat 错误处理: 1.java.lang.OutOfMemoryError:这个错误是因为 tomcat JVM 的 Permanent Generation space(内存的 永久保存区域)不足引起的,这个区域是 JVM 用于用于存放 Class 和 Meta 的信息的内存区域,GC(Garbage Collection)不会在主程序运行期对 PermGen space 进行清理,所以如果你的应用中有很多 CLASS 的话, 就很可能出现 PermGen space 错误, 这种错误常见在 web 服务器对 JSP 进行 pre compile 的时候。如果 你的 WEB APP 下都用了大量的第三方 jar, 其大小超过了 jvm 默认的大小(4M)那么就会产生此错误信息了, 症状是 tomcat 运行一段时间后失去反应,服务中 tomcat 服务正常,重启 tomcat 服务后网站又正常响应 了。解决方案是人工调整确认大小设置,使用 regedit 修改注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Java 中的 Options 参数,在后面增加一下数据: -XX:PermSize=64M -XX:MaxPermSize=128m 2.java.lang.OutOfMemoryError: Java heap space Heap size 设置 JVM 堆的设置是指 java 程序运行过程 中 JVM 可以调配使用的内存空间的设置.JVM 在启动的时候会自动设置 Heap size 的值,其初始空间(即 -Xms)是物理内存的 1/64,最大空间(-Xmx)是物理内存的 1/4。可以利用 JVM 提供的-Xmn -Xms -Xmx 等 选项可进行设置。Heap size 的大小是 Young Generation 和 Tenured Generaion 之和。提示:在 JVM 中如果 98%的时间是用于 GC 且可用的 Heap size 不足 2%的时候将抛出此异常信息。提示:Heap Size 最 大不要超过可用物理内存的 80%,一般的要将-Xms 和-Xmx 选项设置为相同,而-Xmn 为 1/4 的-Xmx 值。 使用前面所说的方法进行调整即可 =================== Tomcat 内存、连接数等性能参数设置 默认参数不适合生产环境使用,因此需要修改一些参数 1、修改启动时内存参数、并指定 JVM 时区(在 windows server 2008 下时间少了 8 个小时): 在 Tomcat 上运行 j2ee 项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数: window 下, 在 catalina.bat 最前面: set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m 一定加在 catalina.bat 最前面。 linux 下,在 catalina.sh 最前面增加: JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai" 注意:前后二者区别,有无 set,有无双引号。 2、线程池配置(Tomcat6 下) 使用线程池,用较少的线程处理较多的访问,可以提高 tomcat 处理请求的能力。使用方式: 首先。打开/conf/server.xml,增加 最大线程 500(一般服务器足以),最小空闲线程数 20,线程最大空闲时间 60 秒。 然后,修改节点,增加 executor 属性,如: 注意:可以多个 connector 公用 1 个线程池。 3、调整连接相关 Connector 的参数: 参数说明: * 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 标签中增加行 path 代表上下文名称,空表示是根路径。 ================================= Tomcat6.x 目录与 server.xml 详解 tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,目前最新版本是 6.x,相对 5.x 性能提升很 多,主要优化了内存使用,增强 IO 能力,重新构造集群功能。 近期对 Tomcat6.x 作深入学习,参考上述声明的 Tomcat 全攻略,由于笔者是 2001 年针对 Tomcat4.x 所 写,故参考之并针对 Tomcat6.x 做了总结,形成此篇学习笔记,希望对学习的人有所帮助,本文涵盖了: Tomcat 目录、Server.xml 元素讲解,数据库连接池配置、线程池配置、虚拟目录配置。关于如何下载、安 装、运行 Tomcat 略,请 google,相信有详细的文章讲述。 tomcat 的目录结构如下: 目录名 bin 存放启动和关闭 tomcat 脚本 conf 包含不同的配置文件,server.xml(Tomcat 的主要配置文件)和 web.xml work 存放 jsp 编译后产生的 class 文件 webapp 存放应用程序示例,以后你要部署的应用程序也要放到此目录 logs 存放日志文件 lib 这三个目录主要存放 tomcat 所需的 jar 文件 server.xml 配置简介 元素名 属性 解释 server port 指定一个端口,这个端口负责监听关闭 tomcat 的请求 shutdown 指定向端口发送的命令字符串 GlobalNamingResources 服务器的全局 JNDI 资源,可以有子标签 Executor(线程池,一个或多个 Connector 可以共享此线程池) name 线程池名称,名称必须唯一 namePrefix 线程的名字前缀,用来标记线程名字的,这样每个线程就用这个前缀加上线程编号了,比如 catalina-exec-1 、catalina-exec-2 maxThreads 允许的最大线程池里的线程数量,默认是 200,大的并发应该设置的高一些,反正只是限制而已,不占用 资源 minSpareThreads 最小的保持活跃的线程数量,默认是 25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了 白白占用资源 maxIdleTime 最小的保持活跃的线程数量,默认是 25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了 白白占用资源 threadPriority 线程的等级。默认是 Thread.NORM_PRIORITY service name 指定 service 的名字 Connector (表示客户端和 service 之间的连接) port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求 minProcessors 服务器启动时创建的处理请求的线程数 maxProcessors 最大可以创建的处理请求的线程数 enableLookups 如果为 true,则可以通过调用 request.getRemoteHost()进行 DNS 查询来得到远程客户端的实际主机名, 若为 false 则不进行 DNS 查询,而是返回其 ip 地址 redirectPort 指定服务器正在处理 http 请求时收到了一个 SSL 传输请求后重定向的端口号 acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求 将不予处理 connectionTimeout 指定超时的时间数(以毫秒为单位) Engine (表示指定 service 中的请求处理机,接收和处理来自 Connector 的请求) name defaultHost 指定缺省的处理请求的主机名,它至少与其中的一个 host 元素的 name 属性值是一样的 jvmRoute host (表示一个虚拟主机、并且可以包含 Context 子节点配置虚拟目录) name 指定主机名 appBase 应用程序基本目录,即存放应用程序的目录 unpackWARs 如果为 true,则 tomcat 会自动将 WAR 文件解压,否则不解压,直接从 WAR 文件中运行应用程序 autoDeploy 自动部署 xmlValidation 是否验证 xml xmlNamespaceAware Realm (表示存放用户名,密码及 role 的数据库) className 指定 Realm 使用的类名,此类必须实现 org.apache.catalina.Realm 接口 Context(host 子节点配置虚拟目录) Path 虚拟目录名称 docBase 物理路径 Debug Debug 模式 Reload True 重新加载,修改后自动加载 上面我们讲述了 server .xml 个元素的含义,下面我们给出详细示例 Tomcat 数据库连接池配置如下: server.xml 配置 Resource Xml 代码 1. context.xml 文件增加: Xml 代码 1. WEB-INF/web.xml 2. 3. 4. Tomcat 共享线程池配置: 取消 Executor 注释,修改连接数至自己合适的数值既可。 Xml 代码 1. executor="tomcatThreadPool" 标明此连接使用上面配置的名称为 tomcatThreadPool 的连接池,无属性共 享连接不会生效 protocol 表示使用的是 http 协议 端口号为 8080 Java 代码 1. 虚拟目录配置: 在之间增加如下 Xml 代码 1. 附件中是取自 springside3 中,Tomcat production config 配置示例,即生产环境下 Tomcat 配置
还剩8页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

mousefat

贡献于2012-11-15

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf