linux ps 命令的结果中 VSZ,RSS,STAT 的含义和大小
参数名 |
含义 |
单位 |
USER |
进程所属用户 |
|
PID |
进程ID |
|
%CPU |
进程占用CPU百分比 |
|
%MEM |
进程占用内存百分比 |
|
VSZ |
虚拟内存占用大小 |
单位:kb(killobytes) |
RSS |
实际内存占用大小 |
单位:kb(killobytes) |
TTY |
终端类型 |
|
STAT |
进程状态 |
|
START |
进程启动时刻 |
|
TIME |
进程运行时长 |
|
COMMAND |
启动进程的命令 |
查看 utomcat 运行的 java 程序
1
|
ps aux|head -1; ps aux | grep java | grep utomcat | sort -k4nr | head -10
|
示例
1 2 3 4 5 6 7 8
|
[root@hjweb01 script]# ps aux|head -1; ps aux | grep java | grep utomcat | sort -k4nr | head -10 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND utomcat 13545 1.6 14.4 3571532 562676 pts/1 Sl 13:31 0:45 /usr/jdk1.8.0_181/bin/java -Djava.util.logging.config.file=/home/utomcat/tomcat/pre/webLoadBalance/web2/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /home/utomcat/tomcat/pre/webLoadBalance/web2/bin/bootstrap.jar:/home/utomcat/tomcat/pre/webLoadBalance/web2/bin/tomcat-juli.jar -Dcatalina.base=/home/utomcat/tomcat/pre/webLoadBalance/web2 -Dcatalina.home=/home/utomcat/tomcat/pre/webLoadBalance/web2 -Djava.io.tmpdir=/home/utomcat/tomcat/pre/webLoadBalance/web2/temp org.apache.catalina.startup.Bootstrap start utomcat 13777 1.5 14.0 3565988 544356 pts/5 Sl 13:34 0:41 /usr/jdk1.8.0_181/bin/java -Djava.util.logging.config.file=/home/utomcat/tomcat/pre/backend/schedule/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /home/utomcat/tomcat/pre/backend/schedule/bin/bootstrap.jar:/home/utomcat/tomcat/pre/backend/schedule/bin/tomcat-juli.jar -Dcatalina.base=/home/utomcat/tomcat/pre/backend/schedule -Dcatalina.home=/home/utomcat/tomcat/pre/backend/schedule -Djava.io.tmpdir=/home/utomcat/tomcat/pre/backend/schedule/temp org.apache.catalina.startup.Bootstrap start utomcat 32454 0.3 13.8 3563932 535848 ? Sl 10:21 0:54 /usr/jdk1.8.0_181/bin/java -Djava.util.logging.config.file=/home/utomcat/tomcat/webLoadBalance/web1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /home/utomcat/tomcat/webLoadBalance/web1/bin/bootstrap.jar:/home/utomcat/tomcat/webLoadBalance/web1/bin/tomcat-juli.jar -Dcatalina.base=/home/utomcat/tomcat/webLoadBalance/web1 -Dcatalina.home=/home/utomcat/tomcat/webLoadBalance/web1 -Djava.io.tmpdir=/home/utomcat/tomcat/webLoadBalance/web1/temp org.apache.catalina.startup.Bootstrap start utomcat 22929 0.1 13.5 3593488 524296 ? Sl Jul24 2:02 /usr/jdk1.8.0_181/bin/java -Djava.util.logging.config.file=/home/utomcat/tomcat/webLoadBalance/web2/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /home/utomcat/tomcat/webLoadBalance/web2/bin/bootstrap.jar:/home/utomcat/tomcat/webLoadBalance/web2/bin/tomcat-juli.jar -Dcatalina.base=/home/utomcat/tomcat/webLoadBalance/web2 -Dcatalina.home=/home/utomcat/tomcat/webLoadBalance/web2 -Djava.io.tmpdir=/home/utomcat/tomcat/webLoadBalance/web2/temp org.apache.catalina.startup.Bootstrap start utomcat 13981 1.5 13.3 3563932 519680 pts/1 Sl 13:36 0:40 /usr/jdk1.8.0_181/bin/java -Djava.util.logging.config.file=/home/utomcat/tomcat/pre/webLoadBalance/web1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /home/utomcat/tomcat/pre/webLoadBalance/web1/bin/bootstrap.jar:/home/utomcat/tomcat/pre/webLoadBalance/web1/bin/tomcat-juli.jar -Dcatalina.base=/home/utomcat/tomcat/pre/webLoadBalance/web1 -Dcatalina.home=/home/utomcat/tomcat/pre/webLoadBalance/web1 -Djava.io.tmpdir=/home/utomcat/tomcat/pre/webLoadBalance/web1/temp org.apache.catalina.startup.Bootstrap start utomcat 15263 0.1 6.6 3568036 259860 ? Sl Jul19 12:08 /usr/jdk1.8.0_181/bin/java -Djava.util.logging.config.file=/home/utomcat/tomcat/backend/schedule/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /home/utomcat/tomcat/backend/schedule/bin/bootstrap.jar:/home/utomcat/tomcat/backend/schedule/bin/tomcat-juli.jar -Dcatalina.base=/home/utomcat/tomcat/backend/schedule -Dcatalina.home=/home/utomcat/tomcat/backend/schedule -Djava.io.tmpdir=/home/utomcat/tomcat/backend/schedule/temp org.apache.catalina.startup.Bootstrap start
|
查看 utomcat 运行的 java 程序,同时程序目录带 pre
1
|
ps aux|head -1; ps aux | grep java | grep utomcat | grep pre | sort -k4nr | head -10
|
示例
1 2 3 4 5 6 7 8 9 10 11 12 13
|
[root@hjweb01 script]# ps aux|head -1; ps aux | grep java | grep utomcat | grep pre | sort -k4nr | head -10 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND utomcat 21006 20.8 8.4 2923740 326200 pts/9 Sl 15:05 0:35 /usr/jdk1.8.0_181/bin/java -Djava.util.logging.config.file=/home/utomcat/tomcat/pre/webLoadBalance/web2/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Xms350M -Xmx350M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=15 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /home/utomcat/tomcat/pre/webLoadBalance/web2/bin/bootstrap.jar:/home/utomcat/tomcat/pre/webLoadBalance/web2/bin/tomcat-juli.jar -Dcatalina.base=/home/utomcat/tomcat/pre/webLoadBalance/web2 -Dcatalina.home=/home/utomcat/tomcat/pre/webLoadBalance/web2 -Djava.io.tmpdir=/home/utomcat/tomcat/pre/webLoadBalance/web2/temp org.apache.catalina.startup.Bootstrap start utomcat 20706 10.7 8.3 2923740 325332 pts/5 Sl 15:02 0:36 /usr/jdk1.8.0_181/bin/java -Djava.util.logging.config.file=/home/utomcat/tomcat/pre/webLoadBalance/web1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Xms350M -Xmx350M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=15 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /home/utomcat/tomcat/pre/webLoadBalance/web1/bin/bootstrap.jar:/home/utomcat/tomcat/pre/webLoadBalance/web1/bin/tomcat-juli.jar -Dcatalina.base=/home/utomcat/tomcat/pre/webLoadBalance/web1 -Dcatalina.home=/home/utomcat/tomcat/pre/webLoadBalance/web1 -Djava.io.tmpdir=/home/utomcat/tomcat/pre/webLoadBalance/web1/temp org.apache.catalina.startup.Bootstrap start utomcat 21273 70.5 7.2 2823004 282968 pts/10 Sl 15:07 0:30 /usr/jdk1.8.0_181/bin/java -Djava.util.logging.config.file=/home/utomcat/tomcat/pre/backend/schedule/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Xms250M -Xmx250M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=15 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /home/utomcat/tomcat/pre/backend/schedule/bin/bootstrap.jar:/home/utomcat/tomcat/pre/backend/schedule/bin/tomcat-juli.jar -Dcatalina.base=/home/utomcat/tomcat/pre/backend/schedule -Dcatalina.home=/home/utomcat/tomcat/pre/backend/schedule -Djava.io.tmpdir=/home/utomcat/tomcat/pre/backend/schedule/temp org.apache.catalina.startup.Bootstrap start
# -v 是不显示匹配上的内容 [utomcat@hjweb01 ~]$ ps aux|head -1; ps aux | grep java | grep utomcat | grep -v pre | sort -k4nr | head -10 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND utomcat 24909 0.1 15.6 3635036 608380 ? Sl Jul25 4:00 /usr/jdk1.8.0_181/bin/java -Djava.util.logging.config.file=/home/utomcat/tomcat/webLoadBalance/web2/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /home/utomcat/tomcat/webLoadBalance/web2/bin/bootstrap.jar:/home/utomcat/tomcat/webLoadBalance/web2/bin/tomcat-juli.jar -Dcatalina.base=/home/utomcat/tomcat/webLoadBalance/web2 -Dcatalina.home=/home/utomcat/tomcat/webLoadBalance/web2 -Djava.io.tmpdir=/home/utomcat/tomcat/webLoadBalance/web2/temp org.apache.catalina.startup.Bootstrap start utomcat 24722 0.0 13.6 3571100 530576 ? Sl Jul25 2:36 /usr/jdk1.8.0_181/bin/java -Djava.util.logging.config.file=/home/utomcat/tomcat/webLoadBalance/web1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /home/utomcat/tomcat/webLoadBalance/web1/bin/bootstrap.jar:/home/utomcat/tomcat/webLoadBalance/web1/bin/tomcat-juli.jar -Dcatalina.base=/home/utomcat/tomcat/webLoadBalance/web1 -Dcatalina.home=/home/utomcat/tomcat/webLoadBalance/web1 -Djava.io.tmpdir=/home/utomcat/tomcat/webLoadBalance/web1/temp org.apache.catalina.startup.Bootstrap start utomcat 15263 0.1 6.7 3568036 263564 ? Sl Jul19 15:52 /usr/jdk1.8.0_181/bin/java -Djava.util.logging.config.file=/home/utomcat/tomcat/backend/schedule/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /home/utomcat/tomcat/backend/schedule/bin/bootstrap.jar:/home/utomcat/tomcat/backend/schedule/bin/tomcat-juli.jar -Dcatalina.base=/home/utomcat/tomcat/backend/schedule -Dcatalina.home=/home/utomcat/tomcat/backend/schedule -Djava.io.tmpdir=/home/utomcat/tomcat/backend/schedule/temp org.apache.catalina.startup.Bootstrap start utomcat 31221 0.0 0.0 112708 972 pts/0 S+ 14:22 0:00 grep --color=auto java
|
查看更多参数
1
|
ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep java | sort -nrk5
|
rsz 为实际内存占用,示例如下
1 2 3 4 5 6 7 8 9
|
[root@hjweb01 script]# ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep java | sort -nrk5 13545 java /usr/jdk1.8.0_181/bin/java 2.1 562456 3569484 13:31 utomcat 1001 13777 java /usr/jdk1.8.0_181/bin/java 2.0 543828 3565988 13:34 utomcat 1001 32454 java /usr/jdk1.8.0_181/bin/java 0.3 535532 3563932 10:21 utomcat 1001 22929 java /usr/jdk1.8.0_181/bin/java 0.1 524296 3593488 Jul24 utomcat 1001 13981 java /usr/jdk1.8.0_181/bin/java 2.1 519696 3563932 13:36 utomcat 1001 15263 java /usr/jdk1.8.0_181/bin/java 0.1 259860 3568036 Jul19 utomcat 1001 8454 java /usr/local/cloudmonitor/jre 0.4 72252 2522436 Jul18 root 0 16264 grep grep --color=auto java 0.0 972 112708 14:06 root 0
|
只看需要了解的参数,可调整参数列表
1
|
ps -e -o 'pid,comm,rsz,rss,user' | grep java | sort -nrk5
|
示例
1 2 3 4 5 6 7 8
|
[root@hjweb01 script]# ps -e -o 'pid,comm,rsz,rss,user' | grep java | sort -nrk5 8454 java 72252 root 32454 java 535596 utomcat 22929 java 524296 utomcat 15263 java 259860 utomcat 13981 java 519680 utomcat 13777 java 544028 utomcat 13545 java 562440 utomcat
|
内存的整体使用情况
1 2 3 4
|
[root@hjweb01 script]# free -m total used free shared buff/cache available Mem: 3790 2618 446 0 726 931 Swap: 0 0 0
|
top 命令查看内存使用情况
输入 top 之后,再按 m 键
1 2 3 4 5 6 7 8 9 10 11 12 13
|
top - 16:39:15 up 7 days, 22:33, 12 users, load average: 0.02, 0.05, 0.05 Tasks: 119 total, 1 running, 118 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.5 us, 0.3 sy, 0.0 ni, 98.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 75.6/3881692 [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ] KiB Swap: 0.0/0 [ ]
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8454 root 20 0 2522436 72500 2724 S 1.3 1.9 49:36.58 java 14569 unginx 20 0 341748 17380 3332 S 0.7 0.4 0:13.04 php-fpm 574 unginx 20 0 342432 15616 3400 S 0.3 0.4 0:16.23 php-fpm 12413 root 20 0 150832 3112 1724 S 0.3 0.1 0:00.28 sshd 28174 root 20 0 157748 2196 1540 R 0.3 0.1 0:00.01 top ...
|
基于 tomcat 的调优
参考tomcat 8 9 性能 优化 调优 centos 7 linux
不要单纯为了调优而去调优,应该有针对性的去发现不足,解决问题,以提高性能。
所以,调优的前提是做好各种监控分析,包括服务器基础资源使用、各个应用运行状况、代码质量、数据库状况、等等,根据业务的并发,服务器资源,以及存在的问题,有针对性的去优化。
性能的提升,主要从以下几个方面入手
- 架构调优
- 负载均衡,高可用,nginx + tomcat 动静分离,容器化 等, 不具体阐述
- 代码调优
- 代码编写规范。
- pmd 、findbug、sonar 等工具,检测问题,并优化。 不具体阐述。
tomcat 连接数,线程数,缓存,修改server.xml
打开被注释的默认连接池配置
默认配置:
1 2 3 4
|
<!-- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/> -->
|
修改实例:
1 2 3 4 5
|
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="100" prestartminSpareThreads="true" maxQueueSize="100"/>
|
参数讲解:
1 2 3 4 5 6
|
name: 线程名称 namePrefix: 线程前缀 maxThreads : 最大并发连接数,不配置时默认200,一般建议设置500~ 800 ,要根据自己的硬件设施条件和实际业务需求而定。 minSpareThreads:Tomcat启动初始化的线程数,默认值25 prestartminSpareThreads:在tomcat初始化的时候就初始化minSpareThreads的值, 不设置trueminSpareThreads 的值就没啥效果了 。 maxQueueSize: 最大的等待队列数,超过则拒绝请求
|
修改连接配置
1 2 3
|
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
|
改为:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
connectionTimeout="20000" redirectPort="8443" executor="tomcatThreadPool" enableLookups="false" maxIdleTime="60000" acceptCount="100" maxPostSize="10485760" acceptorThreadCount="2" disableUploadTimeout="true" URIEncoding="utf-8" keepAliveTimeout ="6000" maxKeppAliveRequests="500" />
|
参数讲解:
1 2 3 4 5 6 7 8 9 10 11
|
port:连接端口。 protocol:连接器使用的传输方式。 executor: 连接器使用的线程池名称 enableLookups:禁用DNS 查询 maxIdleTime:线程空闲时间,超过该时间后,空闲线程会被销毁,默认值为6000(1分钟),单位毫秒。 acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认设置 100 。 maxPostSize:限制 以FORM URL 参数方式的POST请求的内容大小,单位字节,默认是 2097152(2兆),10485760 为 10M。如果要禁用限制,则可以设置为 -1。 acceptorThreadCount: 用于接收连接的线程的数量,默认值是1。一般这个指需要改动的时候是因为该服务器是一个多核CPU,如果是多核 CPU 一般配置为 2。 disableUploadTimeOut:允许Servlet容器,正在执行使用一个较长的连接超时值,以使Servlet有较长的时间来完成它的执行,默认值为false keepAliveTimeout - 表示在下次请求过来之前,tomcat保持该连接多久。这就是说假如客户端不断有请求过来,且未超过过期时间,则该连接将一直保持。 maxKeepAliveRequests -表示该连接最大支持的请求数。超过该请求数的连接也将被关闭(此时就会返回一个Connection: close头给客户端)。 (maxKeepAliveRequests="1"代表禁用长连接)(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200之间)
|
压缩会增加Tomcat负担,最好采用Nginx + Tomcat 或者 Apache + Tomcat 方式,压缩交由Nginx/Apache 去做。
Tomcat
的压缩是在客户端请求服务器对应资源后,从服务器端将资源文件压缩,再输出到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的 浏览过程
HTML、CSS、Javascript和Text,它可以节省40%
左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP、JSP、ASP、Servlet,SHTML等输出的网页也能进行压缩,压缩效率也很高。
管理AJP端口
AJP是为 Tomcat 与 HTTP 服务器之间通信而定制的协议,能提供较高的通信速度和效率。如果tomcat前端放的是apache的时候,会使用到AJP这个连接器。 默认是开启的。如果不使用apache,注释该连接器。
1 2 3 4 5 6 7 8
|
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> --> ```
## tomcat JVM 调优 这一点需要去了解较多的基础知识,比如:了解堆栈内存,了解jvm 垃圾收集器,了解jvm 性能监控常用工具,能够读懂gc日志等。 修改 catalina.sh (4G 内存机器参考配置)
|
JAVA_OPTS=”-Xms2G -Xmx2G -Xmn512m -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/appl/gc.log -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly”
-Xms2G 初始分配的堆内存
-Xmx2G 最大允许分配的堆内存,这两个配成一样。
-Xmn512m 年轻代大小
-XX:MetaspaceSize=512M 初始元空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值。
-XX:MaxMetaspaceSize=512M
-XX:+UseConcMarkSweepGC 并发标记清除(CMS)收集器
-XX:+CMSClassUnloadingEnabled
-XX:+HeapDumpOnOutOfMemoryError 表示当JVM发生OOM时,自动生成DUMP文件。
-XX:HeapDumpPath=${目录}参数表示生成DUMP文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof。如果不指定文件名,默认为:java__heapDump.hprof。
-verbose:gc 输出GC日志 , -XX:+PrintGC 与 -verbose:gc 是一样的,可以认为-verbose:gc 是 -XX:+PrintGC的别名.
-XX:+PrintGCDetails 打印GC详细信息
-XX:+PrintGCTimeStamps 打印gc时间戳
-XX:+PrintGCDateStamps
-Xloggc:/appl/gc.log 定义gc日志目录
-XX:CMSInitiatingOccupancyFraction=75 是指设定CMS在对内存占用率达到75%的时候开始GC(因为CMS会有浮动垃圾,所以一般都较早启动GC);
-XX:+UseCMSInitiatingOccupancyOnly 只是用设定的回收阈值(上面指定的75%),如果不指定,JVM仅在第一次使用设定值,后续则自动调整
1 2 3 4 5 6 7 8 9 10
|
# apr 模式 (Apache Portable Runtime/Apache可移植运行库),是Apache HTTP服务器的支持库。你可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从操作系统级别解决异步IO问题,从而大大地提高Tomcat对静态文件的处理性能。 要tomcat支持apr,必须要安装apr和native,这样tomcat可以利用apache的apr接口,使用操作系统的部分本地操作,从而提升性能。 [tomcat apr 模式](https://tomcat.apache.org/native-doc/)
todo:具体设置还需要百度和实际操作和测试。
## JVM 调优另外一个版本 {tomcat_home}/bin/catalina.sh
|
OS specific support. $var must be set to either true or false.
export JAVA_OPTS=’
-server
-Xms350M
-Xmx350M
-Xss512k
-XX:+AggressiveOpts
-XX:+UseBiasedLocking
-XX:+DisableExplicitGC
-XX:MaxTenuringThreshold=15
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-Djava.awt.headless=true’;
-Xmx:java heap最大值,使用的最大内存
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
-XX:MaxNewSize:
-Xss 15120 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.
+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
-Xss:每个线程的Stack大小
-verbose:gc 现实垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日志文件
-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一
-XX:+UseParNewGC :缩短minor收集的时间
-XX:+UseConcMarkSweepGC :缩短major收集的时间
- Tomcat性能优化(二) 启动参数设置
一.tomcat绿色版设置方法 进入tomcat/bin目录下,找到catalina.bat文件在文件首行中插入下面这段配置即可. set JAVA_OPTS=-server -Djava.awt.h ...
- Tomcat性能优化及JVM内存工作原理
Java性能优化原则:代码运算性能.内存回收.应用配置(影响Java程序主要原因是垃圾回收,下面会重点介绍这方面) 代码层优化:避免过多循环嵌套.调用和复杂逻辑. Tomcat调优主要内容如下: 1. ...
- Oracle性能优化之运行参数设置
Oracle参数调整建议值 sessions=2150 processes=2000 open_cursors=5120 db_file_multiblock_read_count=64 log_bu ...
- Tomcat 调优及 JVM 参数优化
Tomcat 本身与 JVM 优化 Tomcat:调整Server.xml JVM:bat启动服务方式的话修改catalina.bat 服务式启动的话参考:http://www.cnblogs.com ...
- JVM虚拟机详解+Tomcat性能优化
1.JVM(java virtual mechinal) ()JVM有完善的硬件架构,如处理器.堆栈.寄存器当,还具有相应的指令系统. ()JVM的主要工作时解释自己的指令集(即字节码),并映射到本地 ...
- jvm参数设置和性能调优
1.Java虚拟机运行时的数据区 2.常用的内存区域调节参数 -Xms:初始堆大小,默认为物理内存的1/64(<1GB):默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40% ...
- Tomcat性能优化(二) ExpiresFilter设置浏览器缓存
Tomcat性能调优 通过ExpiresFilter设置资源缓存 [官方文档] http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#E ...
- tomcat 性能优化(内存优化 线程优化)
转自:http://blog.sina.com.cn/s/blog_4b5bc01101014s81.html tomcat 性能优化 linux修改TOMCAT_HOME/bin/catalina. ...
- tomcat性能优化梳理
tomcat性能优化 Tomcat本身优化 Tomcat内存优化 启动时告诉JVM我要一块大内存(调优内存是最直接的方式) 我们可以在 tomcat 的启动脚本 catalina.sh 中设置 jav ...
- tomcat 性能优化
tomcat 性能优化tomcat默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. tomcat内存优化linux修改TOMCAT_HOME/bin/ ...
- VisualSFM的配置与使用 & MeshLab的网格生成与纹理添加
VisualSFM的配置与使用 & MeshLab的网格生成与纹理添加 翻译 搜索 复制
- 总是被低估,从未被超越,揭秘QQ极致丝滑背后的硬核IM技术优化
本文由腾讯云开发者张曌.毕磊分享,原题"QQ 9"傻快傻快"的?!带你看看背后的技术秘密",本文进行了排版和内容优化等. 1.引言 最新发布的 QQ 9 自上线 ...
- 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v10.0版已发布
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持UDP .TCP .WebSocket 三种协议,支持iOS.A ...
- 基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v5.0版已发布
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持UDP .TCP .WebSocket 三种协议,支持iOS.A ...
- torque提交作业
PBS(Protable Batch System)是功能最为齐全,历史最悠久,支持最广泛的本地集群调度器之一. PBS的目前包括openPBS,PBS Pro和Torque三个主要分支.其中Open ...
- SpringBoot启动源码分析
- CV高手是怎么炼成的?
你平时都怎么复制粘贴的?是否每次都是复制一段粘贴一段?是否厌倦了每次只能复制粘贴一次的限制?那这篇文章就是为你量身订做的. CopyQ简介 CopyQ is clipboard manager – a ...
- 2025年值得推荐的 8 款 WPF UI 控件库
前言 今天大姚给大家分享 8 款开源.美观.功能强大.简单易用的WPF UI控件库,希望可以帮助到有需要的同学. WPF介绍 WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Wind ...
- Q:查看服务器内存和cpu占用排名
pid 表示进程 ID,cmd 表示进程命令行,%mem 表示进程占用内存百分比,%cpu 表示进程占用 CPU 百分比,--sort=-%mem 表示按照内存占用率从高到低排序. 1.内存占比排序 ...
- datawhale-leetcode打卡:第026~037题
反转链表(leetcode 206) 这个题目我就比较流氓了,干脆新建链表翻转过来算了.但是完蛋,超出内存限制,那我就只能两两换了.这里比较大的技巧就是可以用一个空节点进行置换. # Definiti ...