tomcat性能优化方式简单整理

 更新时间:2019年09月07日 09:37:33   作者:技术-刘腾飞  
这篇文章主要介绍了tomcat性能优化方式简单整理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Tomcat本身优化

  • Tomcat内存优化
    • 启动时告诉JVM我要一块大内存(调优内存是最直接的方式)
    • 我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数
    • JAVA_OPTS参数说明
      • server 启用jdk 的 server 版
      • Xms java虚拟机初始化时的最小内存
      • Xmx java虚拟机可使用的最大内存
      • XX: PermSize 内存永久保留区域
      • XX:MaxPermSize 内存最大永久保留区域
    • 配置示例:
    • JAVA_OPTS='-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'
    • 说明:其内存的配置需要根据服务器(或虚拟机)的实际内存来配置
    • 重启tomcat生效
  • Tomcat IO优化
    • 如何必要可以使用APR来从操作系统级别来解决异步的IO问题。次之使用NIO。
    • 在server.xml中
  • Tomcat 线程优化
    • maxThreads="600" ///最大线程数
    • minSpareThreads="100"///初始化时创建的线程数
    • maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
    • acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
  • 使用线程池
    • 在server.xml中增加executor节点,然后配置connector的executor属性,
    • namePrefix:线程池中线程的命名前缀
    • maxThreads:线程池的最大线程数
    • minSpareThreads:线程池的最小空闲线程数
    • maxIdleTime:超过最小空闲线程数时,多的线程会等待这个时间长度,然后关闭
    • threadPriority:线程优先级
<Executor name="tomcatThreadPool" namePrefix="req-exec-"maxThreads="1000" minSpareThreads="50"maxIdleTime="60000"/>
<Connector port="8080" protocol="HTTP/1.1"executor="tomcatThreadPool"/>
  • 禁用DNS查询
    • 当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值
  • 缓存优化
    • 对于静态页面最好是能够缓存起来,这样就不必每次从磁盘上读。这里我们采用了Nginx作为缓存服务器,将图片、css、js文件都进行了缓存,有效的减少了后端tomcat的访问。
  • Tomcat启用GZIP压缩,提升web性能
    • 修改%TOMCAT_HOME%/conf/server.xml,修订节点如下:
    • GZIP的缺点。相对于没有进行GZIP的工程来说,使用GZIP要增加服务器压缩的压力(cpu消耗)、客户端解压缩的压力,故而对服务器的配置需求更高。另外压缩也要耗费时间,想占用更小的空间,得到高压缩比率,肯定要牺牲较长的时间;反之,如果时间较为宝贵,要求快速,那么所得的压缩比率一定较小,当然会占用更大的空间了(压缩比率=原内容大小/压缩后大小,压缩比率越大,则表明压缩后占用空间的压缩包越小),这就是物理空间与时间的矛盾。
  • 配合nginx做集群
    • jvm虚拟机调优
    • 操作系统调优
    • 对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU的频率,保证文件系统的读写速率等。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Tomcat 多个应用配置方法

    Tomcat 多个应用配置方法

    Tomcat 多个应用配置方法,需要的朋友可以参考下。
    2010-12-12
  • Nginx/Httpd负载均衡tomcat配置教程

    Nginx/Httpd负载均衡tomcat配置教程

    这篇文章主要介绍了Nginx/Httpd负载均衡tomcat配置方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • tomcat之目录映射_动力节点Java学院整理

    tomcat之目录映射_动力节点Java学院整理

    一个web应用包含了许多我们做好的web资源,里面或许包括了多个静态web资源和动态web资源,而我们都知道服务器的虚拟目录映射有三种方式,具体哪三种方式,感兴趣的朋友可以通过本文学习
    2017-07-07
  • Tomcat中的Session与Cookie深入讲解

    Tomcat中的Session与Cookie深入讲解

    这篇文章主要给大家介绍了关于Tomcat中Session与Cookie的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Tomcat具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • 解决Idea的tomcat启动报多个listener的错误问题

    解决Idea的tomcat启动报多个listener的错误问题

    这篇文章主要介绍了解决Idea的tomcat启动报多个listener的错误问题,本文给大家分享解决方法对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Tomcat处理请求的流程

    Tomcat处理请求的流程

    本文主要介绍了Tomcat处理请求的流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 一次因信号量引发的tomcat异常退出解决

    一次因信号量引发的tomcat异常退出解决

    这篇文章主要给大家介绍了一次因信号量引发的tomcat异常退出的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • Tomcat中catalina.out 和 catalina.log的区别和用途详解

    Tomcat中catalina.out 和 catalina.log的区别和用途详解

    本文主要介绍了Tomcat中catalina.out 和 catalina.log的区别和用途详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • SpringBoot 升级内嵌Tomcat的操作示例

    SpringBoot 升级内嵌Tomcat的操作示例

    这篇文章主要介绍了SpringBoot升级内嵌Tomcat,这里采用的是屏蔽旧的依赖,然后手动写dependency的方式,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • 如何在同一局域网下通过IP地址访问本机Tomcat项目

    如何在同一局域网下通过IP地址访问本机Tomcat项目

    这篇文章主要介绍了如何在同一局域网下通过IP地址访问本机Tomcat项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06

最新评论