Tomcat的三种模式及并发优化

Tomcat的运行模式有3种 1、bio 默认的模式,性能非常低下,没有经过任何优化处理和支持.

2、nio 利用java的异步io护理技术,noblocking IO技术. 想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为

1
2
3
4
5
6
7
<Connector port="80" 
    protocol="org.apache.coyote.http11.Http11NioProtocol" 
    connectionTimeout="20000" 
    URIEncoding="UTF-8" 
    useBodyEncodingForURI="true" 
    enableLookups="false" 
    redirectPort="8443">

启动后,就可以生效。 3、apr 从操作系统级别来解决异步的IO问题,大幅度的提高性能。 必须要安装apr和native,直接启动就支持apr 修改protocol为org.apache.coyote.http11.Http11AprProtocol 安装apr

yum -y install apr apr-devel

安装native 进入tomcat/bin目录,比如:

cd /usr/local/tomcat/bin/
tar xzfv tomcat-native.tar.gz 
cd tomcat-native-1.1.20-src/jni/native/
./configure --with-apr=/usr/bin/apr-1-config
make
make install

安装完成之后 会出现如下提示信息

Libraries have been installed in:
   /usr/local/apr/lib

安装成功后还需要对tomcat设置环境变量,方法是在catalina.sh文件中增加1行:

CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"

修改8080端对应的conf/server.xml

protocol="org.apache.coyote.http11.Http11AprProtocol"

启动tomcat之后,查看日志会有这一行信息,说明已经是APR模式启动了

INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

并发优化 1.JVM 调优 在TOMCAT_HOME/bin/catalina.sh 增加如下语句,具体数值视情况而定。 添加到上面CATALINA_OPTS的后面即可:

JAVA_OPTS="-Xms1024m -Xmx1024m -Xss1024K -XX:PermSize=64m -XX:MaxPermSize=128m"

参数详解 -Xms JVM初始化堆内存大小 -Xmx JVM堆的最大内存 -Xss 线程栈大小 -XX:PermSize JVM非堆区初始内存分配大小 -XX:MaxPermSize JVM非堆区最大内存 建议和注意事项:

-Xms和-Xmx选项设置为相同堆内存分配,以避免在每次GC 后调整堆的大小,堆内存建议占内存的60%~80%;非堆内存是不可回收内存,大小视项目而定;线程栈大小推荐256k.

32G内存配置如下:

JAVA_OPTS=”-Xms20480m -Xmx20480m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m”

2.关闭DNS反向查询 在<Connector port=”8080″ 中加入如下参数 enableLookups=”false”

3.优化tomcat参数(使用APR)

<Connector port="8080" 
           protocol="org.apache.coyote.http11.Http11AprProtocol"
           connectionTimeout="20000" //链接超时时长
           redirectPort="8443" 
           maxThreads="500" 
           minSpareThreads="20" 
           acceptCount="1000" 
           enableLookups="false" 
           URIEncoding="UTF-8" />

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2015-01-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猿天地

Spring Boot中整合Sharding-JDBC读写分离示例

在我《Spring Cloud微服务-全栈技术与案例解析》书中,第18章节分库分表解决方案里有对Sharding-JDBC的使用进行详细的讲解。

4013
来自专栏大数据智能实战

ubuntu远程访问win7登录后语言为繁体字的解决办法

用ubuntu远程访问win7后,发现登录后语言为繁体字,这个还是比较烦人的,网上找到了一个解决办法,在此记录一下。以后肯定还会再用到。 在win7电脑上进行修...

2337
来自专栏乐沙弥的世界

使用CRM方式管理heartbeat

1、在heartbeat v2之后的版本,可以将haresources方式管理的资源转化为基于CIB方式进行管理 2、使用CRM(CIB)管理,需要配置ha...

1414
来自专栏散尽浮华

Linux下monit进程管理操作梳理

Monit对运维人员来说可谓神器,它是一款功能非常丰富的进程、文件、目录和设备的监测工具,用于Unix平台。它可以自动修复那些已经停止运作的程序,特使适合处理那...

1.4K10
来自专栏云计算教程系列

​如何使用Nginx反向代理配置SSL加密的Jenkins

默认情况下,Jenkins自带内置的Winstone网络服务器,可以通过8080端口进行监听,方便入门。但是,只要您认真使用Jenkins,就应该使用SSL保护...

2984
来自专栏java闲聊

AvtiveMQ与SpringBoot结合

2237
来自专栏小夜博客

星光互联Linux系统挂载硬盘

40311
来自专栏java闲聊

windows下实用工具推荐

在windwos下启动工具平常的操作是需要在桌面找到图标,然后点击打开,现在你可以去掉第一步操作了,实用Wox会让你爱不释手,只需一步即可打开你想要的软件,快捷...

943
来自专栏小李刀刀的专栏

Nginx泛解析到子目录,自动判断有无public目录

在配置本地 PHP 开发环境时,除非是在 Windows 下,否则我都是偏向于 Nginx + PHP-FPM, 即使 Mac 下已经有了自带的 Apache+...

4784
来自专栏Java学习123

linux mount -t用法

1.3K5

扫码关注云+社区

领取腾讯云代金券