tomcat优化相关

一:Tomcat内存优化,启动时告诉JVM我要一块大内存(调优内存是最直接的方式)

Windows 下的catalina.bat

Linux 下的catalina.sh 如:

JAVA_OPTS=‘-Xms256m -Xmx512m‘

-Xms<size> JVM初始化堆的大小

-Xmx<size> JVM堆的最大值 实际参数大小根据服务器配置或者项目具体设置.

二:Tomcat 线程优化 在server.xml中 如:

<Connector port="80" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700"
connectionTimeout="20000"  />

maxThreads="X" 表示最多同时处理X个连接

minSpareThreads="X" 初始化X个连接

maxSpareThreads="X" 表示如果最多可以有X个线程,一旦超过X个,则会关闭不在需要的线程

acceptCount="X" 当同时连接的人数达到maxThreads时,还可以排队,队列大小为X.超过X就不处理

三:Tomcat IO优化

1:同步阻塞IO(JAVA BIO) 同步并阻塞,服务器实现模式为一个连接一个线程(one connection one thread 想想都觉得恐怖,线程可是非常宝贵的资源),当然可以通过线程池机制改善.

2:JAVA NIO:又分为同步非阻塞IO,异步阻塞IO 与BIO最大的区别one request one thread.可以复用同一个线程处理多个connection(多路复用).

3:,异步非阻塞IO(Java NIO2又叫AIO) 主要与NIO的区别主要是操作系统的底层区别.可以做个比喻:比作快递,NIO就是网购后要自己到官网查下快递是否已经到了(可能是多次),然后自己去取快递;AIO就是快递员送货上门了(不用关注快递进度)。

BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解.

NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持.

AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持.

在server.xml中

<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"
    connectionTimeout="20000"
    URIEncoding="UTF-8"
    useBodyEncodingForURI="true"
    enableLookups="false"
    redirectPort="8443" />

实现对Tomcat的IO切换.

四:大杀器APR

APR是从操作系统级别来解决异步的IO问题,大幅度的提高性能. (http://apr.apache.org/).

APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTTP Server 2.x的核心.能更好地和其它本地web技术集成,总体上让Java更有效率作为一个高性能web服务器平台而不是简单作为后台容器.

在产品环境中,特别是直接使用Tomcat做WEB服务器的时候,应该使用Tomcat Native来提高其性能.如果不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待.但是配上APR之后,并发的线程数量明显下降,从原来的300可能会马上下降到只有几十,新的请求会毫无阻塞的进来.

在局域网环境测,就算是400个并发,也是一瞬间就处理/传输完毕,但是在真实的Internet环境下,页面处理时间只占0.1%都不到,绝大部分时间都用来页面传输.如果不用APR,一个线程同一时间只能处理一个用户,势必会造成阻塞。所以生产环境下用apr是非常必要的.

安装Apache Tomcat Native Library,直接启动就支持apr(http://tomcat.apache.org/native-doc/)它本身是基于APR的. 具体安装方法可以参考其他博客和文章. 排除代码问题Tomcat优化到这个层次,可以应对大部分性能需求.

五、利用缓存和压缩
  对于静态页面最好是能够缓存起来,这样就不必每次从磁盘上读。这里我们采用了Nginx作为缓存服务器,将图片、css、js文件都进行了缓存,有效的减少了后端tomcat的访问。
  另外,为了能加快网络传输速度,开启gzip压缩也是必不可少的。但考虑到tomcat已经需要处理很多东西了,所以把这个压缩的工作就交给前端的Nginx来完成。
  除了文本可以用gzip压缩,其实很多图片也可以用图像处理工具预先进行压缩,找到一个平衡点可以让画质损失很小而文件可以减小很多。曾经我就见过一个图片从300多kb压缩到几十kb,自己几乎看不出来区别。

具体参考:https://blog.csdn.net/lhzhktk/article/details/65937685

原文地址:https://www.cnblogs.com/yue1208/p/9541399.html

时间: 2024-10-30 11:39:32

tomcat优化相关的相关文章

九爷带你了解 Tomcat 优化

如何优化tomcat配置(从内存.并发.缓存4个方面)优化 [+] Tomcat有很多方面,我从内存.并发.缓存四个方面介绍优化方法.  一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数.  JAVA_OPTS参数说明  -server 启用jdk 的 server 版:  -Xms Java虚拟机初始化时的最小内存:  -Xmx java虚拟机可使用的最大内存: 

Java应用容器介绍以及tomcat优化实战

     java开发语言在软件开发里面是比较火的,特别涉及到一些大型架构,一般都会使用java来开发软件,所以java容器使用和选型不一样.     1. Tomcat是Apache鼎力支持的Java Web应用服务器,由于它优秀的稳定性以及丰富的文档资料,广泛的使用人群,从而在开源领域受到最广泛的青睐.     2. Jboss作为Java EE应用服务器,它不但是Servlet容器,而且是EJB容器,从而受到企业级开发人员的欢迎,从而弥补了Tomcat只是一个Servlet容器的缺憾.  

Tomcat学习总结(3)——Tomcat优化详细教程

Tomcat是我们经常使用的 servlet容器之一,甚至很多线上产品都使用 Tomcat充当服务器.而且优化后的Tomcat性能提升显著,本文从以下几方面进行分析优化. 一.内存优化 默认情况下Tomcat的相关内存配置较低,这对于一些大型项目显然是不够用的,这些项目运行就已经耗费了大部分内存空间,何况大规模访问的情况.即使是本文中的这个只有一个页面的超小项目,在并发达到一定程度后也会抛出以下类似异常: Java代码   严重: Exception invoking periodic oper

Tomcat优化之容易集合经验

Tomcat优化1. 如何加大tomcat连接数在tomcat配置文件server.xml中的<Connector ... />配置中,和连接数相关的参数有: maxThreads : tomcat起动的最大线程数,即同时处理的任务个数,默认值为200. minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 . maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75 . acceptCount: 当tomcat起动的线程数达到最大时,接

Tomcat优化方案

Tomcat是我们经常使用的 servlet容器之一,甚至很多线上产品都使用 Tomcat充当服务器.而且优化后的Tomcat性能提升显著,本文从以下几方面进行分析优化. 一.内存优化 默认情况下Tomcat的相关内存配置较低,这对于一些大型项目显然是不够用的,这些项目运行就已经耗费了大部分内存空间,何况大规模访问的情况.即使是本文中的这个只有一个页面的超小项目,在并发达到一定程度后也会抛出以下类似异常: Java代码   严重: Exception invoking periodic oper

tomcat优化

Tomcat中的线程池(APR和ThreadPool) 2. 在Connector中指定使用共享线程池: <Connector executor="tomcatThreadPool"           port="8080" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="8443&

Tomcat优化步骤【转】

一.Tomcat的缺省是多少,怎么修改 Tomcat的缺省端口号是8080.修改Tomcat端口号:1.找到Tomcat目录下的conf文件夹2.进入conf文件夹里面找到server.xml文件3.打开server.xml文件4.在server.xml文件里面找到下列信息maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″enableLookups=”false” redirectPort=”8443″ acceptCount=”

mysql 性能优化相关

mysql 性能优化相关: 查看正在运行的sql进程: # mysql -u root -p'xxxx' -e "show processlist;" 一般Sleep过多会占用较高CPU等资源 # mysql -u root -p'xxxx' -e "show processlist;" | grep Sleep | wc -l 查看mysql的wait_timeout时长设置: # mysql -u root -p'xxxx' -e "show glob

Web 前端性能优化相关内容解析

Web 前端性能优化相关内容,来源于<Google官方网页载入速度检测工具PageSpeed Insights 使用教程>一文中PageSpeed Insights 的相关说明.大家可以对照着去优化自己的网站或者相关项目.本文由Jeff 整理. 0.提高服务器的响应速度 砸钱的东西,但却最根本:搞好这一项,甚比下面任何一项. 1.优化样式表和脚本的排列顺序 正确地排列外部样式表与外部和内嵌脚本的顺序,可增加下载时同时加载的数据量,并提高浏览器显示网页的速度. 将样式表放在顶部,将脚本放在底部