欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

apache 重定向tomcat端口_Tomcat优化那些事

程序员文章站 2022-05-07 12:43:45
...

Tomcat 作为容器经常被在JavaWeb服务中应用,但是Tomcat的默认配置在生产环境时,很难满足我们的需求,并且很多方面都是可以优化的,尤其是内存和线程的配置。

现在结合下资料和工作中实际的情况,从内存、并发、缓存、IO四个方面分析下优化的方法,做个记录。

Tomcat内存优化

说到内存优化,主要是对Java的JVM的参数进行优化,优化的文件是

Windows 操作系统中的catalina.bat(对应的Linux 操作系统中的catalina.sh),主要是对其中的 java_OPTS 参数进行设置:

JAVA_OPTS的参数说明 :

-server: 表示启用jdk 的 server 版;

-Xms: 表示java虚拟机初始化时的最小内存,JVM初始化堆的大小;

-Xmx: 表示java虚拟机可使用的最大内存,JVM堆的最大值;

-XX: 表示PermSize (永久代)内存保留区域;

-XX: 表示MaxPermSize 内存最大永久保留区域;

  现在大部分服务器内存一般都可以最大加到2G ,所以可以采取以下配置:

JAVA_OPTS=’-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m’

配置完成后需要重新启动Tomcat ,然后通过以下命令进行查看配置是否生效:

  (1)查看Tomcat的进程号:

sudo lsof -i:9027

   例如得到Tomcat 进程号是 12222

  (2)使用上面的进程号查看配置是否生效:

sudo jmap – heap 12222

MaxHeapSize 等参数已经生效

Tomcat并发优化

线程池指定Web请求负载的数量,Tomcat并发优化主要是通过调整连接器的属性“maxThreads”来完成设置。根据流量的大小,设置合理的maxThreads数值,可以让Tomcat启动的更好。

  (1)Tomcat 配置文件 server.xml 中配置示例

<Connector port="8090" protocol="HTTP/1.1" maxHttpHeaderSize="8192"
  maxThreads="1000" minSpareThreads="100" maxSpareThreads="1000"
  minProcessors="100" maxProcessors="1000" enableLookups="false"
  URIEncoding="UTF-8" acceptCount="1000" redirectPort="8443"
  disableUploadTimeout="true"/>

(2)参数说明

maxThreads:客户请求最大线程数 ,即最多可以同时处理多少个连接;

minSpareThreads:Tomcat 初始化时创建的 socket 线程连接数;

maxSpareThreads:Tomcat 连接器的最大空闲 socket 线程连接数;

connectionTimeout:表示连接超时;

minProcessors:服务器创建时的最小处理线程数;

maxProcessors:服务器同时处理的最大线程数;

URIEncoding:URL统一编码;

enableLookups:若设为true, 则支持域名解析,可把 ip 地址解析为主机名;

redirectPort:在需要基于安全通道的场合,把客户请求转发到基于SSL协议的重定向端口;

acceptAccount:表示可以监听端口队列最大数,队列满了之后客户请求会被拒绝同时不能小于连接器的最大空闲线程连接数;

Tomcat缓存优化

Tomcat可以通过在server.xml配置文件中设置压缩的选项。当文件的大小大于等于500bytes时才会进行压缩,同时需要把属性compression设置为"on"(默认是“off”),这样当文件达到了大小就可以被压缩了。

(1)配置示例

<Connector port="8090" protocol="HTTP/1.1" maxHttpHeaderSize="8192"
  maxThreads="1000" minSpareThreads="100" maxSpareThreads="1000"
  minProcessors="100" maxProcessors="1000" enableLookups="false"
  compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata"
  compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
  connectionTimeout="20000" URIEncoding="utf-8" acceptCount="1000"
  redirectPort="8443" disableUploadTimeout="true"/>

(2)主要参数说明

Compression: 打开压缩功能;

compressionMinSize: 启用压缩的输出内容大小,默认为2KB;

compressableMimeType:压缩的类型;

noCompressionUserAgents:对于配置的浏览器,不启用压缩;

connectionTimeout:表示建立客户连接的超时时间. 设为 -1时, 表示不限制建立客户连接的时间;

Tomcat IO优化

Tomcat通讯协议支持http1.0和1.1,默认走的是BIO通讯模式。

Tomcat中IO优化的配置方法:

在server.xml中 ,将

 <Connector connectionTimeout="20000" port="8066" protocol="HTTP/1.1" redirectPort="8448"/>

改为:

<Connector connectionTimeout="20000" port="8066" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8448"/>

这里的 protocol=”org.apache.coyote.http11.Http11NioProtocol” ,表示以 NIO模式启动

有着优秀的布局设计,最新的特性等的应用,如果在性能这方面还能有完美的提升,那真是真正的优秀的应用。