文档章节

tomcat 高流量调优

千惊万喜
 千惊万喜
发布于 2016/12/09 15:17
字数 947
阅读 54
收藏 4

java 环境配置: export JAVA_OPTS="-server -Xms8g -Xmx8g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=31"

-server:一定要作为第一个参数,在多个CPU时性能佳
-Xms8g:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx8g:java heap最大值,使用的最大内存 该值与Xms设为一样能防止GC后频繁分配内存
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
-Xss 128k 这使得JBoss每增加一个线程(thread)就会立即消耗128K内存,默认值好像是512k,这个值变小以后使得系统能够产生更多线程,支持高并发访问。
-XX:ParallelGCThreads=20 配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。

-XX:+UseConcMarkSweepGC 
Young区:可以使用普通的或者parallel 垃圾回收算法,由参数 -XX:+UseParNewGC来控制
Old 区:只能使用Concurrent Mark Sweep
-XX:+UseParNewGC 年轻代使用parallel GC
 -XX:SurvivorRatio=8 -XX:SurvivorRatio在用的时候,如果设置成8,代表 -XX:SurvivorRatio:eden=2:8,如果设置成3,代表 -XX:SurvivorRatio:eden=2:3
-XX:TargetSurvivorRatio=90 
一个计算期望存活大小Desired survivor size的参数.
计算公式: (survivor_capacity * TargetSurvivorRatio) / 100 * sizeof(a pointer):survivor_capacity(一个survivor space的大小)乘以TargetSurvivorRatio,
表明所有age的survivor space对象的大小如果超过Desired survivor size,则重新计算threshold,以age和MaxTenuringThreshold的最小值为准,否则以MaxTenuringThreshold为准.
-XX:MaxTenuringThreshold=31
在新生代中对象存活次数(经过Minor GC的次数)后仍然存活,就会晋升到旧生代。
<Connector port="8188" protocol="HTTP/1.1"
maxThreads="30000"
minSpareThreads="512"
maxSpareThreads="2048"
enableLookups="false"
redirectPort="8443" acceptCount="35000"
debug="0"
connectionTimeout="40000"
disableUploadTimeout="true"
URIEncoding="UTF-8" />

参数说明:

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

keepAliveTimeout - 长连接最大保持时间(毫秒)。此处为15秒。

maxKeepAliveRequests - 最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。 一般设置在100~200之间)

maxHttpHeaderSize - http 请求头信息的最大程度,超过此长度的部分不予处理。一般8K。

URIEncoding - 指定Tomcat 容器的URL 编码格式。

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

disableUploadTimeout - 上传时是否使用超时机制

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

bufferSize - defines the size (in bytes) of the buffer to be provided for input

streams created by this connector. By default, buffers of 2048 bytes are provided.

maxSpareThreads - 最大空闲连接数,一旦创建的线程超过这个值,Tomcat 就会关闭不再 需要的socket 线程The default value is 50.

maxThreads - 最多同时处理的连接数,Tomcat 使用线程来处理接收的每个请求。这个值表 示Tomcat 可创建的最大的线程数。minSpareThreads - 最小空闲线程数,Tomcat 初始化 时创建的线程数.

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

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

修改启动时内存参数

window 下, 在catalina.bat 最前面:

set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m

一定加在catalina.bat 最前面。

linux 下,在catalina.sh 最前面增加:

JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m

-Duser.timezone=Asia/Shanghai"

注意:前后二者区别,有无set,有无双引号。

© 著作权归作者所有

共有 人打赏支持
千惊万喜
粉丝 4
博文 56
码字总数 15471
作品 0
海淀
程序员
有经验JAVA程序员如何提升自己?

具有一到五年开发经验 需要学习内容很多 JVM/分布式/高并发/性能优化/Spring MVC/Spring Boot/Spring Cloud/MyBatis/Netty源码分析等等等 01、透彻理解Tomcat原理手写动静态资源的实现 02、分...

阿阳啊啊
2017/11/29
0
0
成为Java GC专家系列

成为Java GC专家(1):深入浅出Java垃圾回收机制 成为Java GC专家(2):如何监控Java垃圾回收机制 成为Java GC专家(3):如何优化Java垃圾回收机制 成为Java GC专家(4):Apache的MaxClients参数...

HenrySun
2016/06/21
66
0
tomcat调优方案

一、操作系统调优 对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU的处理能力越强,系统...

蜡笔小小小新
2015/09/07
64
0
Tomcat 性能调优方案

一、操作系统调优 对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU的处理能力越强,系统...

华宰
2011/11/13
2.5K
2
深入浅出“JVM”性能优化

深入浅出“JVM”性能优化 理解性能优化 性能基准 性能优化到底是什么 衡量维度 JVM调优 知其然,知其所以然 详解什么是JVM运行时数据区 详解什么是JVM内存模型JMM 详解GC可达 详解各垃圾回收...

Java高级架构
2017/12/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

sed命令扩展使用操作

打印某行到某行之间的内容 假若文件test.txt的内容是: ertfff**[abcfd]123324444[rty]**fgfgf 怎么能截取 [abcfd]123324444[rty] 这一部分出来呢? 操作命令: 知道开始行和结...

野雪球
32分钟前
1
0
JVM内存笔记

Hotspot JVM 中的 Java 线程与原生操作系统线程有直接的映射关系。当线程本地存储、缓 冲区分配、同步对象、栈、程序计数器等准备好以后,就会创建一个操作系统原生线程。 Java 线程结束,原...

凌渡
37分钟前
1
0
284. Peeking Iterator

Description Tag: Design Difficulties: Medium Given an Iterator class interface with methods: next() and hasNext(), design and implement a PeekingIterator that support the pee......

52iSilence7
40分钟前
1
0
防止快速重复点击的两种思维

防止重复执行的两种思维 场景 下单时,提交按钮,因为网络卡顿或者手快重复点击,导致重复提交订单; 微博,更新个人状态或发表评论时,快速多次点击[发送]按钮,导致相同的信息发送多次. 解决思路 ...

黄威
今天
0
0
在windows环境下使用Virtualbox虚拟Debian系统来运行Docker

标题绕口。 我之前一直使用 Virtualbox 和 homestead 来运行我的 PHP 开发环境。最近决心开始尝试 DevOps,使得开发、部署容器化,来化解人为操作失误和环境不兼容等问题造成的各种损失。就打...

zgldh
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部