tomcat 线程数、NIO配置、内存配置

线程数量;
server.xml

<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />

minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100
enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
acceptCount的配置,我一般是设置的跟maxThreads一样大,这个值应该是主要根据应用的访问峰值与平均值来权衡配置的。
如果设的较小,可以保证接受的请求较快相应,但是超出的请求可能就直接被拒绝
如果设的较大,可能就会出现大量的请求超时的情况,因为我们系统的处理能力是一定的。
下面是默认:
<Connector port="9000" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
参考:
内存大小;
catalina.sh
JAVA_OPTS="-server -Xms384m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=1024m"

-Xmx512m:设置JVM最大可用内存为512M;
-Xms512m:设置JVM启动时堆的初始化大小。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。

-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
-XX:MaxNewSize:
-XX:PermSize=64M /-XX:MaxPermSize=64M : 方法区,永久区大小设置。JVM初始分配的非对内存64M。永久区保存系统的类信息。比如类的字段、方法、常量池等如果系统定义了太多的累,导致方法区溢出,虚拟机同样会抛出内存溢出错误

JDK8+移除了Perm,引入了Metapsace元数据区,元数据库区的大小可以使用-XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m 指定。这是一块堆外的直接内存。与永久区不同,如果不指定大小,默认情况下,虚拟机会耗尽所有的可用系统内存


参考:https://www.cnblogs.com/sucretan2010/p/11046634.html
NIO协议:
tomcat8以上默认是NIO和APR中切换,APR需要额外配置;

www.beicaiduo.com
原文地址:https://www.cnblogs.com/hoge66/p/12601271.html