1修改Tomcat的内存配置,打开$TOMCAT_HOME/bin/catalina.sh文件

内存优化:

-server参数:表示以服务模式启动,启动速度会稍微慢一点,但性能会高很多。不加这个参数,默认是以客户端模式启动。 -server:启用jdk的server版本

-XX:PermSize:设置非堆内存初始值,默认是物理内存的1/64。

-XX:MaxNewSize:新生代占整个堆内存的最大值。

-XX:MaxPermSize:Perm(俗称方法区)占整个堆内存的最大值,也称内存最大永久保留区域

1)错误提示:java.lang.OutOfMemoryError:Java heap space

set JAVA_OPTS=-Xms512m-Xmx512m

2)错误提示:java.lang.OutOfMemoryError: PermGenspace

setJAVA_OPTS=-XX:PermSize=128M

2 连接数优化,主要是在conf/server.xml配置文件中进行修改。

2.1、优化线程数

增加maxThreads和acceptCount属性(使acceptCount大于等于maxThreads)

maxThreads:tomcat可用于请求处理的最大线程数,默认是200

minSpareThreads:tomcat初始线程数,即最小空闲线程数

maxSpareThreads:tomcat最大空闲线程数,超过的会被关

acceptCount:当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理.默认100

2.2、使用线程池

在server.xml中增加executor节点,然后配置connector的executor属性

namePrefix:线程池中线程的命名前缀

maxThreads:线程池的最大线程数

minSpareThreads:线程池的最小空闲线程数

maxIdleTime:超过最小空闲线程数时,多的线程会等待这个时间长度,然后关闭

threadPriority:线程优先级

当tomcat并发用户量大的时候,单个jvm进程确实可能打开过多的文件句柄,这时会报java.net.SocketException:Too many open files错误。可使用下面步骤检查:

ps -ef |grep tomcat 查看tomcat的进程ID,记录ID号,假设进程ID为10001

lsof -p 10001|wc -l 查看当前进程id为10001的 文件操作数

使用命令:ulimit -a 查看每个用户允许打开的最大文件数

3 tomcat connector三种运行模式(BIO,NIO,APR)

3.1、三种模式比较

1)BIO:一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下在Linux系统中默认使用这种方式

2)NIO:利用Java的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。Tomcat7必须修改Connector配置来启动(conf/server.xml配置文件):

<Connectorport="8080"protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000"redirectPort="8443"/>

3)APR(Apache Portable Runtime):从操作系统层面解决io阻塞问题。Linux如果安装了apr和native,Tomcat直接启动就支持apr。

3.2、apr模式

安装apr以及tomcat-native

yum -y install

   make && make install

安装成功后还需要对tomcat设置环境变量,方法是在catalina.sh文件中增加1行

修改8080端对应的conf/server.xml

4 并发配置优化

Tomcat的并发请求处理数量=maxThreads + acceptCount

enableLookups:如果为true,调用request.getRemoteHost会执行DNS反查,反向解析IP对应的域名或主机,效率较低,建议设为false。

5 tomcat配置优化

6  执行器优化(线程池)

Executor重要参数说明:

name:共享线程池的名字。这是Connector为了共享线程池要引用的名字,该名字必须唯一。默认值:None;

namePrefix:在JVM上,每个运行线程都可以有一个name 字符串。这一属性为线程池中每个线程的name字符串设置了一个前缀,Tomcat将把线程号追加到这一前缀的后面。默认值:tomcat-exec-;

maxThreads:该线程池可以容纳的最大线程数。默认值:200;

maxIdleTime:在Tomcat关闭一个空闲线程之前,允许空闲线程持续的时间(以毫秒为单位)。只有当前活跃的线程数大于minSpareThread的值,才会关闭空闲线程。默认值:60000(一分钟)。

minSpareThreads:Tomcat应该始终打开的最小不活跃线程数。默认值:25。

threadPriority:线程的等级。默认是Thread.NORM_PRIORITY

Connector重要参数说明:

executor:表示使用该参数值对应的线程池;

minProcessors:服务器启动时创建的处理请求的线程数;

maxProcessors:最大可以创建的处理请求的线程数;

acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。

7 禁用AJP连接器

我们一般是使用Nginx+tomcat的架构,所以用不着AJP协议,所以把AJP连接器禁用

8 配置优化

8.1 Connector 优化

<Connector port="8080"   protocol="HTTP/1.1"   maxThreads="1000"   minSpareThreads="100"   acceptCount="1000"  maxConnections="1000"  connectionTimeout="20000"   maxHttpHeaderSize="8192"  tcpNoDelay="true"  compression="on"  compressionMinSize="2048"  disableUploadTimeout="true"  redirectPort="8443"  enableLookups="false"  URIEncoding="UTF-8" />

8.2 线程池

Executor代表了一个线程池,可以在Tomcat组件之间共享。使用线程池的好处在于减少了创建销毁线程的相关消耗,而且可以提高线程的使用效率。

<Executor name="tomcatThreadPool"   namePrefix="catalina-exec-"   maxThreads="1000"   minSpareThreads="100"  maxIdleTime="60000"  maxQueueSize="Integer.MAX_VALUE"  prestartminSpareThreads="false"  threadPriority="5"  className="org.apache.catalina.core.StandardThreadExecutor"/>

8.3 Listener

Server标签中可以配置多个Listener,其中 JreMemoryLeakPreventionListener是用来预防JRE内存泄漏。此Listener只需在Server标签中配置即可,默认情况下无需配置,已经添加在 Server中。

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

9 设置Tomcat的编码

10 设置Tomcat的热部署

docBase:项目所在路径,可以使用绝对路径或相对路径,相对路径是相对于webapps ;

path:访问项目的路径;

reloadable:是否自动加载新增或改变的class文件;

11 修改Tomcat命令窗口的名字

在运行多个tomcat窗口的时候,可以通过修改tomcat命令窗口的名字来区分不同的tomcat;

12

tomcat优化配置相关推荐

  1. Tomcat优化学习

    服务器分类 javaEE是企业技术的平台,技术有jsp,servlet,jdbc,在2018年更名为jakartaEE(雅加达), 应用服务器(javaEE技术全部支持实现) 是javaEE规范的具体 ...

  2. tomcat常见配置及优化、升级

    介绍 Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet.JSP 程序的首选. 升级 1.备份之前的tomcat 2.下载当前 ...

  3. Tomcat的配置与优化

    目录 一.Tomcat概述 二.Tomcat组成 2.1Tomcat功能组件机构 2.2Container结构分析 三.Tomcat服务部署 3.1.安装jdk 3.2.安装启动tomcat 3.3. ...

  4. tomcat 的优化配置

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

  5. Tomcat、JVM 优化配置

    为了让Tomcat稳定长期的运行,提高性能,默认的配置肯定是不行的. 从两个方向入手:Tomcat本身配置优化和JVM优化 环境:Tomcat8+JDK1.8+Linux Ubuntu16.04 一. ...

  6. RHEL5(CentOS)下nginx+php+mysql+tomcat+memchached配置全过程(转)

    RHEL5(CentOS)下nginx+php+mysql+tomcat+memchached配置全过程 一.准备工作:SSH,telnet终端中文显示乱码解决办法vi /etc/sysconfig/ ...

  7. 提高网站访问性能——Tomcat优化

    一.前言 tomcat 服务器在JavaEE项目中使用率非常高,所以在生产环境对tomcat的优化也变得非常重要了,对于tomcat的优化,主要是从2个方面入手,一是tomcat本身的配置,另一个是t ...

  8. Tomcat6优化配置

    在WEB的大型应用中,对于Tomcat的配置优化显得尤其重要,它会造成非常严重的并发危机.因此它是除了WEB服务器以及数据库服务器之外,也同时需要大量的时间进行实地的测试与优化. 一.修改tomcat ...

  9. Tomcat参数配置

    2019独角兽企业重金招聘Python工程师标准>>> 1. JAVA_OPTS内存优化 Tomcat内存优化主要是对启动参数的优化,可以在Tomcat的启动脚本catalina.s ...

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

    Tomcat是我们经常使用的 servlet容器之一,甚至很多线上产品都使用 Tomcat充当服务器.而且优化后的Tomcat性能提升显著,本文从以下几方面进行分析优化. 一.内存优化 默认情况下To ...

最新文章

  1. wpf采用Xps实现文档显示、套打功能
  2. python连接mysql数据库数据库_python如何连接mysql数据库
  3. [译]创建物化视图的先决条件
  4. 分享一些好用的 Chrome 插件!
  5. ADO.NET封装的SqlHelper
  6. Impala 调用Hbase 报错 LeaseException
  7. MySQL:错误代码1215 无法添加外键约束的解决思路
  8. idea无法创建class
  9. 2021年陕西高考成绩单招查询时间,2021年陕西高考录取结果什么时候出来,查询时间一览表...
  10. 单元测试框架TestableMock快速入门(七):常用注解参数
  11. 教务管理系统——数据库课程设计mysql+java
  12. Maven镜像源汇总(含国内、国外)
  13. 拷优(CopyU!)mini独家具备穿透U盘防拷贝软件的功能!
  14. OpenKG数据逐一截图说明
  15. wps页眉怎么设置不同页码_WPS论文排版教程二:如何设置不同页码
  16. Environment 的使用
  17. 北京大学陈斌教授 python_好老师陈斌,这样在北大走红
  18. RK988键盘切换蓝牙模式
  19. 《人力资源管理》在线作业
  20. 使用Git从gitee仓库中,只下载其中的某单个的文件夹

热门文章

  1. 2013年上半年 系统分析师 论文 真题
  2. 夏泽网 中国渔业统计年鉴年鉴资料网
  3. Android 首次开机优化
  4. python selenium +firefox 扩展插件闪现并消失,没有运行
  5. windows驱动开发 DDK/WDK/WDM/WDF区别
  6. 进军杀毒市场!百度杀毒软件2013正式发布
  7. 2021SC@SDUSC Zxing开源代码(十五)PDF417二维码(一)
  8. sap abap开发从入门到精通_Nginx 开发从入门到精通《实战书籍》学会这些就够了...
  9. 计算机仿真技术与cad第三版课后答案,《计算机仿真技术与CAD习题答案》.doc
  10. matlab tabular,LaTeX表格tabular背景色添加技巧