tomcat中NIO、NIO2链接器的socket属性
属性名称
|
默认值
|
描述
|
---|---|---|
socket.rxBufSize | JVM设置 | Socket接收缓冲区(SO_RCVBUF),以字节为单位。 |
socket.txBufSize | JVM设置 | Socket发送缓冲区(SO_SNDBUF),以字节为单位。 |
socket.tcpNoDelay | JVM设置 | 相当于Socket的标准属性tcpNoDelay,boolean类型取值 |
socket.soKeepAlive | JVM设置 | Socket长连接设置(SO_KEEPALIVE),取值:boolean类型 |
socket.ooBInline | JVM设置 |
Socket OOBINLINE设置,取值:boolean类型 |
socket.soReuseAddress | JVM设置 | Socket复用连接地址(SORESUEADDR),取值:boolean类型 |
socket.soLingerOn | JVM设置 | Socket延时关闭选项,标准属性中connectionLinger>=0时,此值为true,connectionLinger<0时,此值为false。取值为true时,必须设置socket.soLingerTime,否则将使用JVM设置。取值:boolean类型 |
socket.soLingerTime | JVM设置 | Socket延时关闭时长(SO_LINGER),单位:秒。 |
socket.soTimeout | 相当于标准属性中的connectionTimeout | |
socket.performanceConnectionTime | JVM设置 | 性能设置的第一个值,这三个值必须同时设置。 |
socket.performanceLatency | JVM设置 | 性能设置的第二个值,这三个值必须同时设置。 |
socket.performanceBandwidth | JVM设置 | 性能设置的第三个值,这三个值必须同时设置。 |
socket.unlockTimeout | 250 | Socket解锁的超时时间,单位:毫秒。 |
NIO的特有属性
属性名称
|
默认值
|
描述
|
---|---|---|
pollerThreadCount | 1 | 处理轮询事件的线程数量,在版本7.0.27及以前版本,默认值是每个处理器1个。版本7.0.28的默认值是每个处理器1个,但不超过2个。 |
pollerThreadPriority | 5 | 轮询线程的优先级。 |
selectorTimeout | 1000 | 选择轮询器的超时时间。单位:毫秒。 |
useComet | true | 是否允许comet servlet。comet是基于http的长连接技术。 |
useSendfile | true | 是否允许send file。 |
socket.directBuffer | false | 直接使用ByteBuffers或java映射的ByteBuffers。当使用direct ByteBuffers,请确保你分配适当的内存量给直接内存空间。JDK配置如-XX:MaxDirectMemorySize=256M。 |
socket.appReadBufSize | 8192 |
在Tomcat中每个连接的开辟连接一个读ByteBuffer。此属性控制这个缓冲区的大小。单位:字节。 对于较低的并发,可以增加这个值以缓冲更多的数据。对于长连接数很多的情况,需要降低这个数值或者增加堆大小。 |
socket.appWriteBufSize | 8192 |
在Tomcat中每个连接的开辟连接一个写ByteBuffer。此属性控制这个缓冲区的大小。单位:字节。 对于较低的并发,你可以增加这个值以缓冲更多的响应数据。对于长连接数很多的情况,你需要降低这个数值或者增加堆大小。 |
socket.bufferPool | 500 |
NIO连接器使用NioChannel这个类来持有链接到一个套接字的元素。为了减少垃圾收集,NIO连接器缓存这些通道的对象。此值指定这个缓存的大小。 默认值是500,表示缓存将持有500个 NioChannel的对象。-1表示不限制缓存大小,0表示不缓存。 |
socket.bufferPoolSize | 1024*1024*100 |
NioChannel池是基于尺寸大小,而不是基于对象数的。NioChannel的缓冲区大小=读取缓冲区大小+写入缓冲区大小; SecureNioChannel的缓冲区大小=应用程序读取缓冲区大小+应用程序写入缓冲区的大小+网络读取缓冲区大小+网络写入缓冲区的大小。单位:字节。 |
socket.processorCache | 500 | Tomcat缓存SocketProcessor对象的最大值。默认值是500。-1表示不限制缓存大小,0表示不缓存。 |
socket.keyCache | 500 | Tomcat缓存KeyAttachment对象的最大值。默认值是500。-1表示不限制缓存大小,0表示不缓存。 |
socket.eventCache | 500 | Tomcat缓存PollerEvent对象的最大值。默认值是500。-1表示不限制缓存大小,0表示不缓存。 |
selectorPool.maxSelectors | 200 | 以减少选择器的争用,在池中使用的选择器最大个数。命令行值org.apache.tomcat.util.net.NioSelectorShared设置为false时,使用此选项。 |
selectorPool.maxSpareSelectors | -1 |
以减少选择器的争用,在池中使用的最大备用选择器个数。当选择器返回到池中时,系统可以决定保留它或者让他垃圾回收。 当org.apache.tomcat.util.net.NioSelectorShared 值设置为false时,使用此选项。默认值是-1(无限制) |
command-line-options |
可用于NIO连接器的命令行选项。如果你想每个线程使用一个选择器,将此值设置为false。 当你将它设置为false,你可以通过使用selectorPool.maxSelectors属性控制选择器池的大小。 |
|
oomParachute | 1024*1024*1 |
NIO连接器实现了一个名叫parachute的OutOfMemoryError错误的策略。 它拥有一个块的数据作为一个字节数组。在一个OOM的情况下,这个数据块被释放,并报告错误。单位:字节。 |
NIO2的特有属性
属性名称
|
默认值
|
描述
|
---|---|---|
useSendfile
|
true
|
控制是否开启sendfilenegligible。使用sendfile将使tomcat的压缩功能无效
|
socket.directBuffer | false | 直接使用ByteBuffers或java映射的ByteBuffers。当使用direct ByteBuffers,请确保你分配适当的内存量给直接内存空间。JDK配置如-XX:MaxDirectMemorySize=256M。 |
socket.directSslBuffer | false | 用于ssl缓冲 |
socket.appReadBufSize | 8192 |
在Tomcat中每个连接的开辟连接一个读ByteBuffer。此属性控制这个缓冲区的大小。单位:字节。 对于较低的并发,可以增加这个值以缓冲更多的数据。对于长连接数很多的情况,需要降低这个数值或者增加堆大小。 |
socket.appWriteBufSize | 8192 |
在Tomcat中每个连接的开辟连接一个写ByteBuffer。此属性控制这个缓冲区的大小。单位:字节。 对于较低的并发,你可以增加这个值以缓冲更多的响应数据。对于长连接数很多的情况,你需要降低这个数值或者增加堆大小。 |
socket.bufferPool | 500 | 缓存Nio2Channel对象的个数(用于降低垃圾回收),-1表示不限制,0表示不缓存 |
socket.processorCache | 500 | Tomcat缓存SocketProcessor对象的最大值。默认值是500。-1表示不限制缓存大小,0表示不缓存。 |