Tomcat 7.x/8.x 优化

Posted 湾岸技研 Wangan Tech

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat 7.x/8.x 优化相关的知识,希望对你有一定的参考价值。

一、优化Connector
http://www.aikaiyuan.com/8466.html

tomcat的运行模式有3种

1)bio

默认的模式,性能非常低下,没有经过任何优化处理和支持.

2)nio

利用java的异步io护理技术,noblocking IO技术.

想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为

protocol="org.apache.coyote.http11.Http11NioProtocol"
启动后,就可以生效。
( http://www.365mini.com/page/tomcat-connector-mode.htm )
3)apr

安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能.

 

二、Apache Tomcat 8 WebSocket How-To 中文翻译版
http://blog.csdn.net/hills/article/details/39368951

Java WebSocket 1.0 规范要求在一个不同的线程上执行到发起写入的线程的异步写入回调。
由于容器线程池不是通过Servlet API被暴露,因此WebSocket实现必须提供自己的线程池。该线程池可以通过下列servlet context初始化参数被控制:

org.apache.tomcat.websocket.executorCoreSize: executor线程池的核心大小。如果不设置,则默认为0。
org.apache.tomcat.websocket.executorMaxSize:executor线程池所允许的最大值。如果不设置,则默认为200。
org.apache.tomcat.websocket.executorKeepAliveTimeSeconds:executor线程池中空闲进程所保留的最大时间。如果未指定,则默认为60秒。

设置方法:
web.xml中

<!--websocket executor 线程池的核心容量大小 -->
<context-param>
<param-name>org.apache.tomcat.websocket.executorCoreSize</param-name>
<param-value>200</param-value>
</context-param>
<!--websocket executor 线程池的最大容量大小 -->
<context-param>
<param-name>org.apache.tomcat.websocket.executorMaxSize</param-name>
<param-value>1000</param-value>
</context-param>

 

三、设置最大线程数
apache-tomcat-7.0.73\\conf\\server.xml

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

 


<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="1000" minSpareThreads="4"/>

<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

 


参考 :
http://stackoverflow.com/questions/24889113/websocket-allows-only-200-connections
http://hongjiang.info/tomcat-connector-tuning-2/

四、自带的CharacterEncodingFilter 设置编码 解决乱码问题
见apache-tomcat-7.0.73\\conf\\web.xml

<!-- A filter that sets character encoding that is used to decode -->
<!-- parameters in a POST request -->
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<async-supported>true</async-supported>
</filter>

 

最后:吐个槽 :)

以上是关于Tomcat 7.x/8.x 优化的主要内容,如果未能解决你的问题,请参考以下文章

tomcat 基线检查

maven自动部署到远程tomcat教程

Tomacat session 共享复制

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

优化 C# 代码片段、ObservableCollection 和 AddRange

drupal CVE-2018-7600 复现