Tomcat-调优
Tomcat优化思路
线程池优化
- maxConnections 最大连接数
通过命令 ulimit -a 查看当前服务器支持的最大连接数

2.修改 /etc/security/limits.conf
命令: vi /etc/security/limits.conf

在最后添加这两行
3.添加Connector的配置
3.1 对CPU要求更高时,因为配置过大会和CPU竞争资源,建议不要配置过于大
3.2 对CPU要求不是特别高时,建议配置在3000左右,配置后要进行压力测试,因为如果这个值超过Tomcat最大承载能力的话性能会出现急剧下降的情况。
3.3 配置的地方 conf/server.xml -> connector
3.3 命令打开 vi server.xml

这里主要配置 maxConnections(最大连接数) maxThreads(最大线程数) acceptCount(最大排位等待数) , acceptCount最好是在500到1000之间,最好配置和maxThreads持平就行了 还要配置compression 设置开启Gzip压缩 和 minSpareThreads 最小线程保活数 这个不能超过最大线程数
内存优化
Tomcat本身是居于JVM开发的。与其说是Tomcat优化不如说是JVM优化
1.JVM优化建议
1.1 -server 这个不用说了吧。上服务器就一定要开启的
1.2 -Xms 最小内存 建议与-Xmx相同
1.3 -Xmx 最大内存 建议设置可用内存的80%, 这里要注意一点 JVM是会在最小和最大内存之间动态漂移的。所以建议将两个值设置为一样。防止最大和最小之间漂移导致资源消耗
1.4 -XX:MetaspaceSize 元空间初始值 1.7版本叫持久空间 1.8后才叫元空间
1.5 -XX:MaxMetaspaceSize 元空间最大内存 默认无限 这个可配可不配
1.6 -XX:MaxNewSize 新生代最大内存 默认16M 如果在大内存的服务器上可以调高 比如在32G内存中可以调到32M 64G内存可以调64M
2.配置
进入Tomcat目录 vi bin/catalina.sh

JAVA_OPTS=”-server -Xms512m -Xmx512m -XX:MaxNewSize=64m -XX:MaxMetaspaceSize=128m -XX:MetaspaceSize=128m”
这里只要配置JAVA_OPTS 就可以了。在Tomcat启动时候就会分配给它这个内存
利用jmap 命令就可以查看我们刚刚配置的参数是否生效
| ps -ef | grep tomcat 查看进程编号 |
jmap -heap 3340(进程编号)

高级优化(最强出装)前面的都是些开胃菜
1.Tomcat 三种模式
1.BIO 最稳定最老的一个连接器,使用阻塞形式处理request请求
2.NIO 使用Java的异步IO技术,进行非阻塞形式处理Request请求
3.APR 原生C语言编写的非阻塞IO,目前性能最理想
2.安装APR
apr安装步骤:
1、 apr
1.1 解压至安装目录
1.2 ./configure -prefix=/usr/local/apr
1.3 make
1.4 make install
2、 apr-iconv
2.1 解压至安装目录
2.2 ./configure -prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
2.3 make & make install
3、 apr-util
3.1 解压至安装目录
3.2 ./configure -prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apriconv=/usr/local/apr-iconv
3.3 make & make install
3.Tomcat的APR模式配置
1、配置Tomcat之前需要安装Tomcat-native
%CATALINA_HOME%/bin/tomcat-native-{版本}.tar.gz
2、解压该文件夹
3、进入 native目录进行安装
./configure --with-apr=/usr/local/apr
make & make install
4、修改catalina.sh
LD_LIBRARY_PATH=$LD_LIBRARY_PAYH:/usr/local/apr/lib export LD_LIBRARY_PATH
5、server.xml -> %CATALINA_HOME%/conf/server.xml
修改Connectior节点的protocol属性
-> org.apache.coyote.http11.Http11AprProtocol即可