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/ ...
- AngleSharp 自带的HttpRequest参数设置
AngleSharp自带一个获取网址源码的api,可以方便的从web取得html var config = Configuration.Default.WithDefaultLoader(); var ...
- Spring基础 02 | JdbcTemplate
JdbcTemplate Spring对Jdbc的Api简单封装 开发步骤 1.导入Spring-jdbc.spring-tx坐标 2.创建数据库表和实例 3.创建jdbcTemplate对象 4.执 ...
- ceph数据重构原理
本文分享自天翼云开发者社区<ceph数据重构原理>,作者:x****n 在分布式存储系统Ceph中,硬盘故障是一种常见问题.为了保证数据安全,当发生硬盘故障后,分布式存储系统会依据算法对故 ...
- 一种提升SQL改写效率的方法
本文分享自天翼云开发者社区<一种提升SQL改写效率的方法>,作者:唐****律 一.背景 SQL改写是数据库产品中使用比较频繁的一个技术,在大多数产品中的调用频率也非常高,通常对性能的需求 ...
- SqlServer性能检测之Sql语句排查
很多时候,我们在用SQL语句查询数据时,难免会漏掉对SQL语句性能的考虑,所以有时就会造成SqlServer服务占用过高的问题,为了大致排查是哪些SQL语句造成的问题,我们可以通过如下SQL查询出最近 ...
- 局域网 yum仓库
有时候在局域网环境中,每台机器上挂载本地镜像充当yum仓库太麻烦. 可以选择局域网一台服务器生成yum仓库,局域网其他服务器通过http协议访问这台服务器的yum仓库. 一.准备 两台虚拟机,其中 A ...
- shell学习之保存数据库
自动备份 Mysql 数据库脚本 #!/bin/bash #author by wxp #used to backup mysql practise USER=root PASSWD=1234 HOS ...
- Luogu P4287 SHOI2011 双倍回文 题解 [ 紫 ] [ manacher ]
双倍回文:回文子串结论的经典应用. 结论 先放本题最关键的结论:一个字符串本质不同的回文子串最多只有 \(n\) 个. 考虑如何证明: 假设我们一个一个地在当前字符串(黑色部分)的结尾加入字符(红色部 ...
- Failed to start: app/proxyman/inbound: failed to listen TCP on 10808
问题现象 启动 v2xxx-With-Core 失败,报错信息如下: 2023/08/03 11:38:56 [Info] infra/conf/serial: Reading config: F:\ ...
- 开源一款I2C电机驱动扩展板-FreakStudio多米诺系列
总线直流电机扩展板 原文链接: FreakStudio的博客 摘要 设计了一个I2C电机驱动板,通过I2C接口控制多个电机的转速和方向,支持刹车和减速功能.可连接16个扩展板,具有PWM输出.过流过热 ...