Tomcat的常见优化和JVM常见分析工具

Tomcat的常用优化配置

	(1) 内存空间:
/etc/sysconfig/tomcat
JAVA_OPTS="-server -Xms32g -Xmx32g -XX:NewSize= -XX:MaxNewSize= -XX:PermSize= -XX:MaxPermSize="
-server:服务器模型
-Xms:堆内存初始化大小;
-Xmx:堆内存空间上限;
-XX:NewSize=:新生代空间初始化大小;
-XX:MaxNewSize=:新生代空间最大值;
-XX:PermSize=:持久代空间初始化大小;
-XX:MaxPermSize=:持久代空间最大值; (2) 线程池设置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 常用属性:
maxThreads:最大线程数;最大并发连接数;
minSpareThreads:最小空闲线程数;
maxSpareThreads:最大空闲线程数;
acceptCount:等待队列的最大长度;
URIEncoding:URI地址编码格式,建议使用UTF-8;
enableLookups:是否启用dns解析,建议禁用;
compression:是否启用传输压缩机制,建议“on";
compressionMinSize:启用压缩传输的数据流最小值,单位是字节;
compressableMimeType:定义启用压缩功能的MIME类型;
text/html, text/xml, text/css, text/javascript (3) 禁用8005端口;
<Server port="-1" shutdown="SHUTDOWN"> (4) 隐藏版本信息:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> Server="SOME STRING"

JVM常用的分析工具

	jps:用来查看运行的所有jvm进程;
jinfo:查看进程的运行环境参数,主要是jvm命令行参数;
jstat:对jvm应用程序的资源和性能进行实时监控;
jstack:查看所有线程的运行状态;
jmap:查看jvm占用物理内存的状态;
jconsole:
jvisualvm:
jps:Java virutal machine Process Status tool,
jps [-q] [-mlvV] [<hostid>]
-q:静默模式;
-v:显示传递给jvm的命令行参数;
-m:输出传入main方法的参数;
-l:输出main类或jar完全限定名称;
-V:显示通过flag文件传递给jvm的参数;
[<hostid>]:主机id,默认为localhost;
jinfo:输出给定的java进程的所有配置信息;
jinfo [option] <pid>
-flags:to print VM flags
-sysprops:to print Java system properties
-flag <name>:to print the value of the named VM flag
jstack:查看指定的java进程的线程栈的相关信息;
jstack [-l] <pid>
jstack -F [-m] [-l] <pid>
-l:long listings,会显示额外的锁信息,因此,发生死锁时常用此选项;
-m:混合模式,既输出java堆栈信息,也输出C/C++堆栈信息;
-F:当使用“jstack -l PID"无响应,可以使用-F强制输出信息;
jstat:输出指定的java进程的统计信息
jstat -help|-options
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] # jstat -options
-class:class loader
-compiler:JIT
-gc:gc
-gccapacity:统计堆中各代的容量
-gccause:
-gcmetacapacity
-gcnew:新生代
-gcnewcapacity
-gcold:老年代
-gcoldcapacity
-gcutil
-printcompilation
[<interval> [<count>]]
interval:时间间隔,单位是毫秒;
count:显示的次数; -gc:
YGC:新生代的垃圾回收次数;
YGCT:新生代垃圾回收消耗的时长;
FGC:Full GC的次数;
FGCT:Full GC消耗的时长;
GCT:GC消耗的总时长;
图形工具:
jconsole
jvisualvm
jmap:Memory Map, 用于查看堆内存的使用状态;
jhat:Java Heap Analysis Tool
jmap [option] <pid>
查看堆空间的详细信息:
jmap -heap <pid>
查看堆内存中的对象的数目:
jmap -histo[:live] <pid>
live:只统计活动对象;
保存堆内存数据至文件中,而后使用jvisualvm或jhat进行查看:
jmap -dump:<dump-options> <pid>
dump-options:
live dump only live objects; if not specified, all objects in the heap are dumped.
format=b binary format
file=<file> dump heap to <file>

最新文章

  1. 【Java每日一题】20170105
  2. A Beginner&#39;s Guide To Understanding Convolutional Neural Networks(转)
  3. 转载:第五弹!全球首个微信小程序(应用号)开发教程!通宵吐血赶稿,每日更新!
  4. hiho一下 第九十八周 搜索一&#183;24点
  5. linux下安装pymssql
  6. SQL语句AND 和 OR执行的优先级
  7. 几条特殊的SQL语句
  8. Jsoup库 解析DOM文档
  9. (转)H264(NAL简介与I帧判断)
  10. 简单html以及css的用法
  11. 关于SSH框架设计的一些理解
  12. jieba库分词统计
  13. Win10系统给文件夹添加备注
  14. 【Python】批量修改指定目录下所有文件的文件名/后缀
  15. apache_php_mysql
  16. 安卓学习第一节--环境搭建及Android Studio 安装
  17. Vista的MBR磁盘签名(Disk Signature) (转帖)
  18. 遗传算法MATLAB工具包简介
  19. 将项目部署到 github上(部署到码云操作一样,前提是有码云账号)
  20. Ionic Js十五:对话框

热门文章

  1. CentOS7 Failed to start LSB: Bring up/down解决方法(真正有效的方法)
  2. Vue如何在data中正常引入图片路径
  3. 解决EF 4.0 中数据缓存机制
  4. Dijkstra算法C++实现总结
  5. 用C# ASP.net将数据库中的数据表导出到Excel中
  6. amoeba连接mysql--ERROR 2006 (HY000): MySQL server has gone away
  7. Android 4.4.2上与BLE 蓝牙锁设备的通讯
  8. POJ 3469_Dual Core CPU
  9. Apache 使用localhost(127.0.0.1)可以访问,使用本机IP(局域网)不能访问
  10. Layui导航、面包屑