Tomcat 参数调优

1、优化内核及TCP连接:

fs.file-max = 655350  # 系统文件描述符总量

net.ipv4.ip_local_port_range = 1024 65535  # 打开端口范围

net.ipv4.tcp_max_tw_buckets = 2000  # 设置tcp连接时TIME_WAIT个数
net.ipv4.tcp_tw_recycle = 1  # 开启快速tcp TIME_WAIT快速回收
net.ipv4.tcp_tw_reuse = 1  # 开启TIME_WAIT重用
net.ipv4.tcp_syncookies = 1  # 开启SYN cookies 当出现syn等待溢出,启用cookies来处理,可防范少量的syn攻击
net.ipv4.tcp_syn_retries = 2  # 对于一个新建的tcp连接,内核要发送几个SYN连接请求才决定放弃
net.ipv4.tcp_synack_retries = 2  # 这里是三次握手的第二次连接,服务器端发送syn+ack响应 这里决定内核发送次数
net.ipv4.tcp_keepalive_time = 1200  # tcp的长连接,这里注意:tcp的长连接与HTTP的长连接不同
net.ipv4.tcp_fin_timeout = 15    # 设置保持在FIN_WAIT_2状态的时间
net.ipv4.tcp_max_syn_backlog = 20000  # tcp半连接最大限制数
net.core.somaxconn = 65535  # 定义一个监听最大的队列数
net.core.netdev_max_backlog = 65535  # 当网络接口比内核处理数据包速度快时,允许送到队列数据包的最大数目

保存退出
[[email protected] ~]# sysctl -p   # 添加生效

2、修改Tomcat Connector运行模式为apr

  Tomcat Connector有三种运行模式:

    bio:阻塞IO bio是三种运行模式中性能最低第一种。

    nio:是一个基于缓冲区,并能提供非阻塞I/O操作的JAVA API 因此NIO也成为非阻塞I/O,比bio拥有更好的并发性能。

    apr:调用httpd核心链接库来读取或文件传输,从而提高tomat对静态文件的处理性能。Tomcat APR模式也是Tomcat在高并发下的首选运行模式:

[[email protected] src]# java -version    # 请确保JDK版本的正确性
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)# 安装apr、apr-util、tomcat-native.tar.gz
[[email protected] src]# wget http://apache.fayea.com//apr/apr-1.5.2.tar.gz
[[email protected] src]# wget http://apache.fayea.com//apr/apr-util-1.5.4.tar.gz
[[email protected] apr-1.5.2]# cd apr-1.5.2
[[email protected] apr-1.5.2]# vim configure    #查找 $RM "$cfgfile" 这个地方,用#注释掉,然后就可以了
[[email protected] apr-1.5.2]# ./configure --prefix=/usr/local/apr
[[email protected] apr-1.5.2]# make && make install
[[email protected] apr-1.5.2]# cd ..
[[email protected] src]# tar xf apr-util-1.5.4.tar.gz
[[email protected] src]# cd apr-util-1.5.4
[[email protected] apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[[email protected] apr-util-1.5.4]# make && make install
[[email protected] apr-util-1.5.4]# ll /usr/local/apr*
/usr/local/apr:
total 16
drwxr-xr-x. 2 root root 4096 Apr 24 08:20 bin/
drwxr-xr-x. 2 root root 4096 Apr 24 08:20 build-1/
drwxr-xr-x. 3 root root 4096 Apr 24 08:20 include/
drwxr-xr-x. 3 root root 4096 Apr 24 08:20 lib/

/usr/local/apr-util:
total 12
drwxr-xr-x. 2 root root 4096 Apr 24 08:23 bin/
drwxr-xr-x. 3 root root 4096 Apr 24 08:22 include/
drwxr-xr-x. 3 root root 4096 Apr 24 08:23 lib/
[[email protected] apr-util-1.5.4]# cp -a /usr/local/tomcat8.0/bin/tomcat-native.tar.gz /usr/local/src/
[[email protected] apr-util-1.5.4]# cd !$
cd /usr/local/src/
[[email protected] src]# tar xf tomcat-native.tar.gz
[[email protected] src]# cd tomcat-native
tomcat-native-1.2.5-src/ tomcat-native.tar.gz
[[email protected] src]# cd tomcat-native-1.2.5-src/
[[email protected] tomcat-native-1.2.5-src]# cd native/

[[email protected] native]# ./configure --prefix=/usr/local/apr --with-java-home=/usr/local/jdk1.8/
[[email protected] native]# make && make install
[[email protected] native]# vim /etc/profile.d/apr.sh
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
:wq
[[email protected] native]# source /etc/profile.d/apr.sh

[[email protected] bin]# sh shutdown.sh
[[email protected] bin]# sh startup.sh
[[email protected] bin]# tail ../logs/catalina.out
24-Apr-2016 08:42:20.319 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat8.0/webapps/ROOT has finished in 39 ms
24-Apr-2016 08:42:20.320 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat8.0/webapps/examples
24-Apr-2016 08:42:20.713 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat8.0/webapps/examples has finished in 393 ms
24-Apr-2016 08:42:20.717 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat8.0/webapps/manager
24-Apr-2016 08:42:20.799 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat8.0/webapps/manager has finished in 82 ms
24-Apr-2016 08:42:20.799 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat8.0/webapps/docs
24-Apr-2016 08:42:20.835 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat8.0/webapps/docs has finished in 36 ms
24-Apr-2016 08:42:20.843 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8080"]  # 通过查看启动日志,tomcat运行模式已经切换到APR。
24-Apr-2016 08:42:20.872 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-apr-8009"]
24-Apr-2016 08:42:20.877 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 1090 ms

三、Tomcat内存优化:

  Tomcat内存优化主要是对tomcat启动参数优化,可以修改catalina.sh中设置JAVA_OPTS参数

    1.JAVA_OPTS参数说明

    -server  启用jdk 的 server 版;
    -Xms    java虚拟机初始化时的最小内存;
    -Xmx   java虚拟机可使用的最大内存;

配置如下:

[[email protected] bin]# vim /usr/local/tomcat8.0/bin/catalina.sh
 97行 JAVA_OPTS=‘-server -Xms1024m -Xmx1024m‘

四、Tomcat并发优化

  1、Tomcat配置文件server.xml中<Connector .../> 

  2、参数说明:

minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为 10
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为 75
acceptCount:允许的最大连接数,应大于等于 maxProcessors ,默认值为 100
enableLookups:是否反查域名,取值为: true 或 false 。为了提高处理能力,应设置为 false
connectionTimeout:网络连接超时,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为 30000 毫秒。
其中和最大连接数相关的参数为maxProcessors 和 acceptCount 。如果要加大并发连接数,应同时加大这两个参数。
web server允许的最大连接数还受制于操作系统的内核参数设置,通常 Windows 是 2000 个左右, Linux 是 1000 个左右。 

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

配置如下:

 69     <Connector port="8080" protocol="HTTP/1.1"
 70                maxThreads="1000"
 71                minProcessors="100"
 72                maxProcessors="1000"
 73                minSpareThreads="100"
 74                maxSpareThreads="1000"
 75                enableLookups="false"
 76                URIEncoding="utf-8"
 77                acceptCount="1000"
 78                connectionTimeout="20000"
 79                disableUploadTimeout="ture"
 80                redirectPort="8443" />

tomcat对内存及并发的优化就这些。可根据具体的资源进行调整。重启tomcat,观察日志有无报错。

原文地址:https://www.cnblogs.com/caiwenjing/p/8118635.html

时间: 2024-11-10 20:00:32

Tomcat 参数调优的相关文章

大数据技术之_30_JVM学习_01_JVM 位置+JVM 体系结构概览+堆体系结构概述+堆参数调优入门+JVM 的配置和优化+Tomcat 的配置和优化

1.JVM 位置2.JVM 体系结构概览3.堆体系结构概述4.堆参数调优入门5.JVM 的配置和优化6.Tomcat 的配置和优化 熟悉 JVM 架构与 GC 垃圾回收机制以及相应的 JVM 调优,有过在 Linux 系统下的调优经验. 淘宝的周志明<深入理解 Java 虚拟机>中说 JVM 的优化,其中 99% 优化的是堆,1% 优化的是方法区. 内地女歌手照片--李嘉欣,贴在桌面上. 1.JVM 位置 JVM 是运行在操作系统之上的,它与硬件没有直接的交互 2.JVM 体系结构概览 详解如

使用JMeter对Tomcat进行压力测试与Tomcat性能调优

一.准备工作. 1.安装JDK1.6或1.6版本以后的,并配置环境变量. 2.在Apache的官网下载最新的Jmeter,http://jmeter.apache.org/download_jmeter.cgi,截止目前为止,最新的Jmeter是2.12版本,需要注意的是下载使用的时候不能下载source版本的,必须下载内容更加完整的binaray版本的,比如如果下载apache-jmeter-2.12_src.zip,运行jmeter.bat时,会出现下面的exception: unable

JVM参数调优与垃圾回收机制

自动内存管理机制 Java虚拟机原理  所谓虚拟机,就是一台虚拟的机器.他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可以分为 系统虚拟机和程序虚拟机, 大名鼎鼎的Visual Box.Vmare就属于系统虚拟机,他们完全是对物理计算的仿真, 提供了一个可以运行完整操作系统的软件平台. 程序虚拟机典型代码就是Java虚拟机,它专门为执行单个计算程序而计算,在Java虚拟机中执行的指令我们成为Java 自己码指令.无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中

性能测试三十六:内存溢出和JVM常见参数及JVM参数调优

堆内存溢出: 此种溢出,加内存只能缓解问题,不能根除问题,需优化代码堆内存中存在大量对象,这些对象都有被引用,当所有对象占用空间达到堆内存的最大值,就会出现内存溢出OutOfMemory:Java heap space 永久代溢出 如果发生,则是在初始化的时候,空间太小,解决办法,扩大空间类的一些信息,如类名.访问修饰符.字段描述.方法描述等,所占空间大于永久代最大值,就会出现OutOfMemoryError:PermGen space 内存溢出的检测方法:pid=1730 Jdk/bin目录下

【学习】011 JVM参数调优配置

自动内存管理机制 Java虚拟机原理 所谓虚拟机,就是一台虚拟的机器.他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可以分为 系统虚拟机和程序虚拟机, 大名鼎鼎的Visual Box.Vmare就属于系统虚拟机,他们完全是对物理计算的仿真, 提供了一个可以运行完整操作系统的软件平台. 程序虚拟机典型代码就是Java虚拟机,它专门为执行单个计算程序而计算,在Java虚拟机中执行的指令我们成为Java 自己码指令.无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中.

JVM性能优化--JVM参数配置,使用JMeter简单测试配合说明参数调优

一.JVM参数配置 1.常见参数配置 -XX:+PrintGC 每次触发GC的时候打印相关日志 -XX:+UseSerialGC 串行回收 -XX:+PrintGCDetails 更详细的GC日志 -Xms 堆初始值 -Xmx 堆最大可用值 -Xmn 新生代堆最大可用值 -XX:SurvivorRatio 用来设置新生代中eden空间和from/to空间的比例. -XX:NewRatio 配置新生代与老年代占比 1:2 含以-XX:SurvivorRatio=eden/from=den/to 总

inux IO 内核参数调优 之 参数调节和场景分析

http://backend.blog.163.com/blog/static/2022941262013112081215609/ http://blog.csdn.net/icycode/article/category/5966733 http://blog.sina.cn/dpool/blog/s/blog_b374c0f30102wboi.html 1. pdflush刷新脏数据条件 (linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数. 总

Linux6.x内核参数调优

## 本人在测试机上测试过,效果不错 fs.file-max = 6553600 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_mem = 94500000 915000000 927000000 net.ipv4.tcp_fin_t

spark参数调优

摘要 1.num-executors 2.executor-memory 3.executor-cores 4.driver-memory 5.spark.default.parallelism 6.spark.storage.memoryFraction 7.spark.shuffle.memoryFraction 8.资源参数参考示例 内容 1.num-executors 参数说明:该参数用于设置Spark作业总共要用多少个Executor进程来执行.Driver在向YARN集群管理器申请资