zoukankan      html  css  js  c++  java
  • 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>
    
  • 相关阅读:
    支付平台架构
    进程、线程与协程
    WSGI
    TLS(SSL)
    Python logger
    Jedis操作Redis--Hash类型
    Jedis操作Redis--List类型
    Jedis操作Redis--String类型
    SpringMVC整合Apache Shiro
    JDK中的Proxy技术实现AOP功能
  • 原文地址:https://www.cnblogs.com/shenxm/p/8466838.html
Copyright © 2011-2022 走看看