九爷带你了解 Tomcat 优化

如何优化tomcat配置(从内存、并发、缓存4个方面)优化

[+]

Tomcat有很多方面,我从内存、并发、缓存四个方面介绍优化方法。 
  

一.Tomcat内存优化

  Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。 
  JAVA_OPTS参数说明 
  -server 启用jdk 的 server 版; 
  -Xms Java虚拟机初始化时的最小内存; 
  -Xmx java虚拟机可使用的最大内存; 
  -XX: PermSize 内存永久保留区域 
  -XX:MaxPermSize 内存最大永久保留区域 
  服务器参数配置

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

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

  配置完成后可重启Tomcat ,通过以下命令进行查看配置是否生效: 
  首先查看Tomcat 进程号:

  sudo lsof -i:9027

  我们可以看到Tomcat 进程号是 12222 。 
  查看是否配置生效:

  sudo jmap – heap 12222

  我们可以看到MaxHeapSize 等参数已经生效。

二.Tomcat并发优化

  1.Tomcat连接相关参数

  在Tomcat 配置文件 server.xml 中的

  <Connector port="9027"  protocol="HTTP/1.1"  maxHttpHeaderSize="8192"  minProcessors="100"  maxProcessors="1000"  acceptCount="1000"  redirectPort="8443"  disableUploadTimeout="true"/>1234567812345678

  2.调整连接器connector的并发处理能力

  1>参数说明

  maxThreads 客户请求最大线程数 
  minSpareThreads Tomcat初始化时创建的 socket 线程数 
  maxSpareThreads Tomcat连接器的最大空闲 socket 线程数 
  enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名 
  redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口 
  acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads ) 
  connectionTimeout 连接超时 
  minProcessors 服务器创建时的最小处理线程数 
  maxProcessors 服务器同时最大处理线程数 
  URIEncoding URL统一编码

  2>Tomcat中的配置示例

  <Connector port="9027"  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"/>1234567891011121312345678910111213

  3.Tomcat缓存优化

  1>参数说明

  c ompression 打开压缩功能 
  compressionMinSize 启用压缩的输出内容大小,这里面默认为2KB 
  compressableMimeType 压缩类型 
  connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间

  2>Tomcat中的配置示例

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

  4.参考配置

  1>旧有的配置

  参考网络对服务器做过如下配置,拿出来分享下:

reads="1000"  minSpareThreads="25"  maxSpareThreads="75"  enableLookups="false"  compression="on"  compressionMinSize="2048"  compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"  connectionTimeout="20000"  URIEncoding="utf-8"  acceptCount="200"  redirectPort="8443"  disableUploadTimeout="true" />123456789101112131415123456789101112131415

  后来发现在访问量达到3 百万多的时候出现性能瓶颈。 
  2>更改后的配置

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

总结:再牛的服务器,也顶不住兼容不好的代码 优化的条件是良好的代码质量和设计。

时间: 2024-08-25 19:26:41

九爷带你了解 Tomcat 优化的相关文章

九爷带你了解 nginx优化

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发. Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理.负载平衡.但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞.所以必须使

九爷 带你走向职场 百度篇

 转眼即逝,步入IT行业的我不知不觉已经在这个领域打拼了三个年头.虽然称不上什么技术大牛,但一路也是乘风破浪.                             畅想未来;      起初的我刚刚大学毕业,拿着一份简历四处求职,那个时候可以说互联网行业已经步入正轨.转眼2017年已经过了三分之一 ,回头看去中国IT行业正在逐步攀升.从大型机械时代 个人PC时代 互联网时代 云计算时代 人工智能化时代 机器人时代 每个时代的变迁都考验着IT精英的迅速递进.随着云计算大数据的来临每个IT精英都

九爷带你玩转 php单元测试

<我不是九爷> 我总感觉 PHP 的开发者们并没有对 PHP 的质量有所追求,可能是因为 PHP 的机制问题吧,让大?糠值目⒄咦芤晕榔鞣梦示兔挥形侍猓院芏嗍焙颍? PHP 开发的,就没有单元测试的这些概念了.能不能有点追求? 我个人也是 PHP,但同时我也比较讨厌那些完事就算了的开发者,作为一个开发者,或者说是一个产品的经手人,就应该用心地去做好每个细节,一次比一次要更好. 但是做单元测试,质量检查,是需要一定的时间和人力投入的,但我敢保证地说,你花时间投入的,绝对不会是没用的,一定对你,对项

我不是九爷 带你了解 ansible

  <我不是九爷> Ansible 1. 了解什么是ansible ansible是个什么东西呢?官方的title是"Ansible is Simple IT Automation"--简单的自动化IT工具.这个工具的目标有这么几项:让我们自动化部署APP:自动化管理配置项:自动化的持续交付:自动化的(AWS)云服务管理. 所有的这几个目标本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已.就像我之前有介绍过的Fabric,以及我们基于Fabric开发的自动化应用

我不是九爷 带了解 Unity3D与VR虚拟现实

对于大多数人来说,可能不知道Unity3D是什么,但是却知道VR虚拟现实是什么,更不会把VR虚拟现实和Unity3D联系在一起,外行的人根本不知道这两者之间有什么关系.那么,今天来给你讲解一下Unity3D与VR虚拟现实之间的区别和联系分别是什么? 什么是Unity3D?Unity3D是一软专业3D游戏引攀,其具备跨平台发布.离效能优化.高性价比,AAA级游戏画面演染效果等特点.目前Unity3D应用范围广泛,从手机游戏到联网的大型游戏,从严肃游戏到电子商务,再到VR虚拟现实均可完美呈现. 什么

九爷带你玩转 docker 五大监控

轻量级虚拟化容器 Docker,自发布以来便广受业界关注,在开源界和企业界掀起了一阵风.Docker 容器相对于 VM 有以下几个优势:启动速度快:资源利用率高:性能开销小. 从图中可以看出 Docker 和 虚拟机的差异,虚拟机的 Guest OS 和 Hypervisor 层在 Docker 中被 Docker Engine 层所替代,Docker 有着比虚拟机更少的抽象层.由于 Docker 不需要通过 Hypervisor 层实现硬件资源虚拟化,运行在 Docker 容器上的程序直接使用

我不是九爷 带你了解 Hadoop分布式文件系统设计要点与架构

Hadoop分布式文件系统设计要点与架构 Hadoop简介:一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储.Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上.而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(lar

九爷带你了解 带你了解 Nosql Redis ttserver Flare memcache比较

Nosql Redis ttserver Flare memcache比较 随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速.而传统的关系数据库在应付 web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如: 1.High performance - 对数据库高并发读写的需求 web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动

九爷带你了解 nginx 的反向代理

1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器. 从上图可以看出:反向代理服务器位于网站机房,代理网站Web服务器接收Http请求,对请求进行转发. 1.2 反向代理的作用 ①保护网站安全:任何来自Internet的请求都必须先经过代理服务器: ②通过配置缓存功能加速Web请求:可以缓存真