`
lelong
  • 浏览: 548498 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

tomcat 调整线程数

阅读更多

调整线程数

  另外一个可通过应用程序的连接器(Connector)进行性能控制的的参数是创建的处理请求的线程数。Tomcat使用线程池加速响应速度来处理请求。在Java中线程是程序运行时的路径,是在一个程序中与其它控制线程无关的、能够独立运行的代码段。它们共享相同的地址空间。多线程帮助程序员写出CPU最大利用率的高效程序,使空闲时间保持最低,从而接受更多的请求。

  Tomcat4中可以通过修改minProcessors和maxProcessors的值来控制线程数。这些值在安装后就已经设定为默认值并且是足够使用的,但是随着站点的扩容而改大这些值。minProcessors服务器启动时创建的处理请求的线程数应该足够处理一个小量的负载。也就是说,如果一天内每秒仅发生5次单击事件,并且每个请求任务处理需要1秒钟,那么预先设置线程数为5就足够了。但在你的站点访问量较大时就需要设置更大的线程数,指定为参数maxProcessors的值。maxProcessors的值也是有上限的,应防止流量不可控制(或者恶意的服务攻击),从而导致超出了虚拟机使用内存的大小。如果要加大并发连接数,应同时加大这两个参数。web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。

  在Tomcat5对这些参数进行了调整,请看下表:

 

属性名

描述

maxThreads

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

 

acceptCount

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

 

connnectionTimeout

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

 

minSpareThreads

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

 

maxSpareThreads

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

 

enableLookups 是否反查域名,默认值为true。为了提高处理能力,应设置为false
maxKeepAliveRequests 保持请求数量,默认值100。
bufferSize 输入流缓冲大小,默认值2048 bytes
compression 压缩传输,取值on/off/force,默认值off

   其中和最大连接数相关的参数为maxThreads和acceptCount。如果要加大并发连接数,应同时加大这两个参数。web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。

 

set JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx1280m -XX:MaxNewSize=256m -XX:MaxPermSize=256m


  最好的方式是多设置几次并且进行测试,观察响应时间和内存使用情况。在不同的机器、操作系统或虚拟机组合的情况下可能会不同,而且并不是所有人的web站点的流量都是一样的,因此没有一刀切的方案来确定线程数的值。

分享到:
评论

相关推荐

    调整Tomcat的并发线程

    调整并修改Tomcat的并发线程. 扩大tomcat的并发数,并支持到5000+

    Tomcat面试专题及答案.pdf

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

    Tomcat性能调优指导手册.pdf

    4. 调整线程数(连接数) 4 5. 使用gzip传输 5 6. 负载均衡 5 6.1 实现负载均衡的方式 5 6.2 集成Apache Server 6 6.2.1 配置负载均衡器 6 7. 启用APR库 11 8. 使用Jconsole监控 12 9. 调优综述 13

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

    最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。 第一种:是堆溢出。 在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。 没有内存泄露的情况下,调整-Xms...

    性能调优文档_自动化测试

    该文档为在性能测试过程中对一些中间件的调优,如对tomcat的JVM、连接器、线程数等,中创中间件的JVM、连接数、日志级别调整,weblogic的JVM、关闭访问日志等。 同时包括数据库连接池的调优,Apache集群、oracle参数...

    Java数据库编程宝典2

    4.9.3 多线程 4.10 批更新 4.11 ResultSet 4.12 可滚动的ResultSet 4.12.1 创建可滚动的ResultSet 4.12.2 游标控制 4.12.3 将游标移动到指定行 4.12.4 获得游标位置 4.13 可更新的ResultSet 4.13.1 更新...

    Java数据库编程宝典4

    4.9.3 多线程 4.10 批更新 4.11 ResultSet 4.12 可滚动的ResultSet 4.12.1 创建可滚动的ResultSet 4.12.2 游标控制 4.12.3 将游标移动到指定行 4.12.4 获得游标位置 4.13 可更新的ResultSet 4.13.1 更新...

    Java数据库编程宝典1

    4.9.3 多线程 4.10 批更新 4.11 ResultSet 4.12 可滚动的ResultSet 4.12.1 创建可滚动的ResultSet 4.12.2 游标控制 4.12.3 将游标移动到指定行 4.12.4 获得游标位置 4.13 可更新的ResultSet 4.13.1 更新...

    Java数据库编程宝典3

    4.9.3 多线程 4.10 批更新 4.11 ResultSet 4.12 可滚动的ResultSet 4.12.1 创建可滚动的ResultSet 4.12.2 游标控制 4.12.3 将游标移动到指定行 4.12.4 获得游标位置 4.13 可更新的ResultSet 4.13.1 更新...

    java面试题

    77.3. 修改tomcat连接数 88 77.4. 禁止列出目录下的文件 88 77.5. 设置session失效的时间 89 77.6. 设置MIME响应类型 89 77.7. 设置tomcat的默认访问页面 89 77.8. 设置tomcat管理用户 89 77.9. 附录 90 78. ...

    servlet3-filter-async-test

    调整build.gradle选择容器版本,在 Tomcat 和 Jetty 之间选择,然后gradle run 。 Servlet 请求处理 带 2 个过滤器的正常流量 处理发生在同一个容器线程中: CONTAINER -> Filter1 (doFilter): ... chain....

    Loadrunner报错日志

    1、首先检查是不是连接weblogic服务过大部分被拒绝,需要监控weblogic的连接等待情况,此时需要增加acceptBacklog,每次增加25%来提高看是否解决,同时还需要增加连接池和调整执行线程数,(连接池数*Statement ...

    java面试常见基础(深层次,高级研发)

    15.1.1. 调整数组容量 42 16. Hashmap和 concurrentHashmap除了线程安全 还有什么区别,put的时候是怎么处理的。 43 17. 数据库组合索引,储存在一个叶子节点还是多个? 44 17.1. 索引的利弊与如何判定,是否需要...

    Java虚拟机

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

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 113 5.3 实战:Eclipse运行速度调优 / 114 5.3.1 调优前的程序运行状态 / 114 5.3.2 升级JDK 1.6的性能变化及兼容问题 / 117 5.3.3 编译时间和类加载时间的优化 / 122 5.3.4 调整内存设置控制垃圾收集频率 ...

    java 面试题 总结

    此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),...

    超级有影响力霸气的Java面试题大全文档

    此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),...

    java开源包1

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包11

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包2

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

Global site tag (gtag.js) - Google Analytics