Tomcat优化和JVM分析工具

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>
原文地址:https://www.cnblogs.com/shenxm/p/8466838.html