tomcat服务器个配置优化

.Tomcat内存优化

T omcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS参数。

1.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 ,通过以下命令进行查看配置是否生效:

1.  首先查看Tomcat 进程号:

我们可以看到Tomcat 进程号是 12145 。

  1. 查看是否配置生效:

jmap  – heap 12145

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

.Tomcat并发优化

1.Tomcat连接相关参数

在Tomcat 配置文件 server.xml 中的 <Connector ... /> 配置中

1.参数说明

minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为 10

maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为 75

acceptCount:允许的最大连接数,应大于等于 maxProcessors ,默认值为 100

enableLookups:是否反查域名,取值为: true 或 false 。为了提高处理能力,应设置为 false

connectionTimeout:网络连接超时,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为30000 毫秒。

其中和最大连接数相关的参数为maxProcessors 和 acceptCount 。如果要加大并发连接数,应同时加大这两个参数。

web server允许的最大连接数还受制于操作系统的内核参数设置,通常 Windows 是 2000 个左右, Linux 是1000 个左右。

2.Tomcat中的配置示例

1. <Connector port="9027"

2.

3.                 protocol="HTTP/1.1"

4.

5.                 maxHttpHeaderSize="8192"

6.

7.                 minProcessors="100"

8.

9.                 maxProcessors="1000"

10.

11.                acceptCount="1000"

12.

13.                redirectPort="8443"

14.

15.                disableUploadTimeout="true"/>

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中的配置示例

1. <Connector port="9027"

2.

3.                 protocol="HTTP/1.1"

4.

5.                 maxHttpHeaderSize="8192"

6.

7.                 maxThreads="1000"

8.

9.                 minSpareThreads="100"

10.

11.                maxSpareThreads="1000"

12.

13.                minProcessors="100"

14.

15.                maxProcessors="1000"

16.

17.                enableLookups="false"

18.

19.                URIEncoding="utf-8"

20.

21.                acceptCount="1000"

22.

23.                redirectPort="8443"

24.

25.                disableUploadTimeout="true"/>

3.Tomcat缓存优化

1.参数说明

compression 打开压缩功能

compressionMinSize   启用压缩的输出内容大小,这里面默认为2KB

compressableMimeType 压缩类型

connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间

2.Tomcat中的配置示例

1. <Connector port="9027"

2.

3.                 protocol="HTTP/1.1"

4.

5.                 maxHttpHeaderSize="8192"

6.

7.                 maxThreads="1000"

8.

9.                 minSpareThreads="100"

10.

11.                maxSpareThreads="1000"

12.

13.                minProcessors="100"

14.

15.                maxProcessors="1000"

16.

17.                enableLookups="false"

18.

19.                compression="on"

20.

21.                compressionMinSize="2048"

22.

23.                compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

24.

25.                connectionTimeout="20000"

26.

27.                URIEncoding="utf-8"

28.

29.                acceptCount="1000"

30.

31.                redirectPort="8443"

32.

33.                disableUploadTimeout="true"/>

4.参考配置

1.旧有的配置

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

1. <Connector port="9027"

2.

3. protocol="HTTP/1.1"

4.

5.                 maxHttpHeaderSize="8192"

6.

7.                 maxThreads="1000"

8.

9.                 minSpareThreads="25"

10.

11.                maxSpareThreads="75"

12.

13.                enableLookups="false"

14.

15.                compression="on"

16.

17.                compressionMinSize="2048"

18.

19.                compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

20.

21.                connectionTimeout="20000"

22.

23.                URIEncoding="utf-8"

24.

25.                acceptCount="200"

26.

27.                redirectPort="8443"

28.

29.                disableUploadTimeout="true" />

后来发现在访问量达到3 百万多的时候出现性能瓶颈。

2.更改后的配置

1. <Connector port="9027"

2.

3.                 protocol="HTTP/1.1"

4.

5.                 maxHttpHeaderSize="8192"

6.

7.                 maxThreads="1000"

8.

9.                 minSpareThreads="100"

10.

11.                maxSpareThreads="1000"

12.

13.                minProcessors="100"

14.

15.                maxProcessors="1000"

16.

17.                enableLookups="false"

18.

19.                compression="on"

20.

21.                compressionMinSize="2048"

22.

23.                compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

24.

25.                connectionTimeout="20000"

26.

27.                URIEncoding="utf-8"

28.

29.                acceptCount="1000"

30.

31.                redirectPort="8443"

32.

33.                disableUploadTimeout="true"/>

性能有待观察中 ……

5.tomcat数据库连接池的参考配置

1.平台的配置

1.  <!--name:DataSource的名称-->

2.   <!--type:数据源对应的java类型,一般设计为javax.sql.DataSource-->

3.   <!--username:数据库登陆名-->

4.   <!--password:数据库登陆密码-->

5.   <!--driverClassName:指定数据库JDBC驱动程序-->

6.   <!--url:指定数据库的URL-->

7.   <!--maxIdle:连接池处于空闲状态的数据库连接的最大数目,取0表示不受限制-->

8.   <!--maxWait:连接池中数据库连接处于空闲状态的最长时间(以毫秒为单位),取0表示无限制等待时间-->

9.   <!--maxActive:连接池处于活动状态的数据库连接的最大数目,去0表示不受限制-->

  1. 2.    优化文档

<Resource name="jdbc/books" 
auth="Container"type="javax.sql.DataSource" maxActive="100" 
maxIdle="30" maxWait="10000" username="sa" password="120010" 
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
url="jdbc:sqlserver://localhost:1433;DatabaseName=news"/>

参数含义: JNDI (java naming and directory interface): Java 命名和目录接口

maxActive="100"

表示并发情况下最大可从连接池中获取的连接数。如果数据库不是单独,供一个应用使用,通过设置maxActive参数可以避免某个应用无限制的获取连接对其他应用造成影响,如果一个数据库只是用来支持一个应用那么maxActive理论上可以设置成该数据库可以支撑的最大连接数。maxActive只是表示通过连接池可以并发的获取的最大连接数。连接的获取与释放是双向,当应用程序并发请求连接池时,连接池就需要从数据库获取连接,那么但应用程序使用完连接并将连接归还给连接池时,连接池是否也同时将连接归还给数据库呢?很显然答案是否定的,如果那样的话连接池就变得多此一举,不但不能提高性能,反而会降低性能,那么但应用成归还连接后,连接池如何处理呢?

maxIdle="30"

如果在并发时达到了maxActive=100,那么连接池就必须从数据库中获取100个连接来供应用程序使用,当应用程序关闭连接后,由于maxIdle=30,因此并不是所有的连接都会归还给数据库,将会有30个连接保持在连接池种中,状态为空闲。

minIdle=”2”

最小默认情况下并不生效,它的含义是当连接池中的连接少有minIdle,系统监控线程将启动补充功能,一般情况下我们并不启动补充线程。

问题:如何设置maxActivemaxIdle

理论上讲maxActive应该设置成应用的最大并发数,这样一来即便是在最大并发的情况下,应用依然能够从连接池中获取连接,但是困难时的是我们很难准确估计到最大并发数,设置成最大并发数是一种最优的服务质量保证,事实上,如果某个用户登录提示系统繁忙,那么在他再次登录时,可能系统资源已经充足,对于拜特资金管理系统我们建议将maxActive设置为系统注册人数的十分之一到二十分之一之间。例如系统的注册人数为1000,那么设置成50-100靠近100的数字,例如85或90。

maxIdle对应的连接,实际上是连接池保持的长连接,这也是连接池发挥优势的部分,理论上讲保持较多的长连接,在应用请求时可以更快的响应,但是过多的连接保持,反而会消耗数据库大量的资源,因此maxIdle也并不是越大越好,同上例我们建议将 maxIdle设置成

50-100中靠近50的数字,例如55。这样就能在兼顾最大并发同时,保持较少的数据库连接,而且在绝大多情况,能够为应用程序提供最快的相应速度。

removeAbandoned="true"

removeAbandonedTimeout="60"

logAbandoned="true"

有时粗心的程序编写者在从连接池中获取连接使用后忘记了连接的关闭,这样连池的连接就会逐渐达到maxActive直至连接池无法提供服务。现代连接池一般提供一种“智能”的检查,但设置了removeAbandoned="true"时,当连接池连接数到达(getNumIdle() < 2) and (getNumActive() >getMaxActive() - 3)时便会启动连接回收,那种活动时间超过removeAbandonedTimeout="60"的连接将会被回收,同时如果logAbandoned="true"设置为true,程序在回收连接的同时会打印日志。removeAbandoned是连接池的高级功能,理论上这中配置不应该出现在实际的生产环境,因为有时应用程序执行长事务,可能这种情况下,会被连接池误回收,该种配置一般在程序测试阶段,为了定位连接泄漏的具体代码位置,被开启,生产环境中连接的关闭应该靠程序自己保证。

 

 

 

转载于:https://blog.51cto.com/zzxtbl/1635863

tomcat服务器配置优化相关推荐

  1. tomcat 优化_浅谈Tomcat服务器优化方法

    对于JavaWeb开发人员而言,Tomcat已成为默认的web服务器,但是在生产环境下使用Tomcat部署应用,我们如果采用Tomcat默认的配置,尤其是内存和线程的配置,其配置都很低,容易成为性能瓶 ...

  2. tomcat限速_解析Tomcat性能优化N种方法

    Tomcat在各位JavaWeb从业者常常就是默认的开发环境,但是Tomcat的默认配置作为生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. 幸好Tomcat还有很多的提升空间.下文介 ...

  3. 浅谈Tomcat服务器优化方法

    对于JavaWeb开发人员而言,Tomcat已成为默认的web服务器,但是在生产环境下使用Tomcat部署应用,我们如果采用Tomcat默认的配置,尤其是内存和线程的配置,其配置都很低,容易成为性能瓶 ...

  4. 限制tomcat带宽_必看的Tomcat性能优化

    在目前流行的互联网架构中,对一个应用来说,Tomcat是首,SSM是中,JVM是尾,我们通常对于SSM是比较了解的,而忽略了收尾,而Tomcat在目前的网络编程中是举足轻重的,但是我们其实对Tomca ...

  5. Tomcat配置优化

    TOMCAT配置优化 一. Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式, 按天存放,解决catalina.out日志文件过大问题 1.准备jar包: log4j-1 ...

  6. Eclipse下Tomcat服务器配置和使用

    在安装完Tomcat之后,在没有进行相关配置时,我们需要到终端下面去启动Tomcat.如果我们在使用Eclipse进行Java开发时,如果能够直接启动Tomcat服务器那将是极为方便,本篇就来讲述Ec ...

  7. (干货!)Tomcat性能优化

    (干货!)Tomcat性能优化 tomcat启动参数 共享这部分内存 jps tail -f log/catalina.out jmap ps -ef|grep tomcat jmap -heap 3 ...

  8. 配置Tomcat性能优化

    配置Tomcat性能优化

  9. Tomcat服务器配置https双向认证,使用JDK的keytool生成证书(适用于web、安卓、IOS)

    Tomcat服务器配置https双向认证,使用JDK的keytool生成证书(适用于web.安卓.IOS) 一.原理 1.HTTP:平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的( ...

  10. tomcat 的优化配置

    http://blog.csdn.net/herrapfel/archive/2007/07/30/1717081.aspx http://blog.csdn.net/rko/archive/2005 ...

最新文章

  1. js 让鼠标右下角有一排小字_js布局中一排大字下面接着一排小字怎么打出来?...
  2. mysql 常用命令 汇总
  3. pdf.js浏览中文pdf乱码的问题解决
  4. linux 第三章红帽子,红帽子 Linux_命令全解
  5. 浅说深度学习(2):简史
  6. 解析鸿蒙内核消息队列QueueMail接口的哼哈二将
  7. PipedInputStream/PipedOutputStream
  8. 不同表结构数据迁移_C语言:数据结构-广义表的存储结构
  9. Golang map的底层实现
  10. 如何将pdf转换成txt破解版
  11. 剖析Unreal Engine超真实人类的渲染技术Part 1 - 概述和皮肤渲染
  12. 走进全球互联网中枢,顶级域名服务器的分布
  13. 从一个简单的SQL来聊聊等价改写
  14. 天津发票版本文件服务器端口,天津增值税发票综合服务平台入口
  15. ProxmoxVE6.2 Bond配置
  16. 走近棒球运动·韩国职业棒球联盟·MLB棒球创造营
  17. abp zero mysql_2、ABPZero系列教程之拼多多卖家工具 更改数据库为Mysql
  18. 《Effective Modern C++》笔记
  19. 行程码是怎么知道你去过哪些地方的呢?
  20. PHp勾股定理,【中考备考】有关数学必考奥数题之勾股定理练习题 初二数学

热门文章

  1. python模块 - functools模块
  2. 湖南城市学院计算机题库和答案,湖南城市学院 计算机选择题题库
  3. python内置函数分类_注意 Python 内置函数并不是万能的!
  4. 2021孝感高中高考成绩查询,孝感高中成绩排名2021,孝感中考分数线排行榜
  5. linux下下载fnl数据,NCEP再分析资料FNL数据在windows平台用cygwin批量下载方法
  6. 8086cpu学习笔记(3):寻址方式
  7. Kotlin — 适用于 Web 开发
  8. L1-028 判断素数 (10 分)—团体程序设计天梯赛
  9. c/c++ 多线程 ubuntu18.04 boost编译与运行的坑
  10. 12-畅通工程续(多种方法求最短路径)