安装Tomcat-Native(异步IO)

本文详细介绍了如何在Linux环境下下载并安装Tomcat-Native,包括解决依赖关系、编译安装、配置运行模式等步骤,确保Tomcat能充分利用本地资源,提升性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tomcat-Native下载地址
http://tomcat.apache.org/download-native.cgi

解决Tomcat-Native的依赖关系

yum -y install apr-devel gcc gcc-c++ make openssl-devel openssl

Tomcat-Native在/usr/local/tomcat/bin/目录下
在这里插入图片描述
解压安装包

tar xf tomcat-native.tar.gz -C /usr/local/src/

查看文件
在这里插入图片描述
编译
切换到/native/

./configure --with-apr=/usr/ --with-java-home=/usr/local/jdk1.8.0_191 --with-ssl

在这里插入图片描述
检测编译是否有问题

echo $?

在这里插入图片描述
编译完,安装

make && make install

在这里插入图片描述
添加库文件

vim /etc/ld.so.conf

添加一行(/usr/local/apr/lib)
在这里插入图片描述
重新加载库文件

ldconfig

添加环境变量

vim /etc/profile.d/jdk8.sh
添加 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

在这里插入图片描述
加载环境变量

source /etc/profile.d/jdk8.sh

Tomcat 运行的三种模式,bio(阻塞IO)、nio(非阻塞IO)、apr(异步IO)
配置默以apr运行
配置主配置文件,指定apr

vim /usr/local/tomcat/conf/server.xml

在这里插入图片描述
(修改69行protocol="HTTP/1.1"为protocol=“org.apache.coyote.http11.Http11AprProtocol”)

引用apr

vim /usr/local/tomcat/bin/catalina.sh

在这里插入图片描述
(254行加入JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib")

重新启动tomcat服务

service tomcat restart

看日志是否支持native

cat /usr/local/tomcat/logs/catalina.out | grep Native

在这里插入图片描述

### Spring Boot 中 `java.lang.OutOfMemoryError: GC overhead limit exceeded` 错误解决方案 当应用程序抛出 `java.lang.OutOfMemoryError: GC overhead limit exceeded` 错误时,表明垃圾回收器花费了过多的时间来尝试释放内存,但只恢复了一小部分可用空间[^1]。对于基于 Spring Boot 的应用而言,调整 JVM 参数是一个有效的解决方法。 #### 调整JVM参数配置 为了防止此类错误的发生,在启动 Spring Boot 应用程序时可以增加堆大小并优化垃圾收集行为: -Xms` 和 `-Xmx` 来指定最小和最大的 Java 堆大小。例如,如果希望给定的应用程序分配至少 512MB 至多 4GB 的内存,则可以在命令行中加入如下选项: ```bash -Xms512m -Xmx4g ``` 这有助于确保有足够的内存供应用程序正常运作而不至于频繁触发垃圾回收操作[^3]。 - **启用并发标记清除 (CMS)** 使用 CMS 收集器能够减少长时间暂停的风险,适合那些对响应时间敏感的服务端应用。可以通过下面的参数开启它: ```bash -XX:+UseConcMarkSweepGC ``` 此外还可以考虑其他更先进的垃圾收集算法如 G1 或 ZGC, 它们提供了更好的性能特性[^2]。 - **降低新生代比例** 适当减小年轻代的比例可以帮助缓解老年代的压力,从而间接改善整体表现。比如将新对象区占总堆容量的比例设为 20% : ```bash -XX:NewRatio=4 ``` 以上措施通常能有效预防因过度消耗 CPU 进行垃圾回收而导致 OOM 错误的情况发生。 #### 修改Spring Boot内置Tomcat配置 针对某些特定场景下即使增加了堆栈也无法解决问题的情形,可能是因为默认情况下 Tomcat 使用的是 BIO 模型而非 NIO/Native IO 方式工作所致。此时建议编辑 application.properties 文件以激活异步 I/O 功能,并相应地提高线程池上限值: ```properties server.tomcat.max-threads=800 server.tomcat.min-spare-threads=50 server.tomcat.accept-count=100 server.tomcat.connection-8 ``` 同时也可以探索是否有必要引入连接池组件(如 HikariCP),以便更好地管理数据库资源访问过程中的瞬态峰值需求[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值