top is a task manager program, found in many Unix-like operating systems, that displays information about CPU and memory utilization.
线上排查、性能优化等概念也是面试过程中的“常客”,而对于线上遇到的“疑难杂症”,需要通过理性的思维去分析问题、排查问题、定位问题、解决问题,同时,如果解决掉所遇到的问题或瓶颈后,也可以在能力范围之内尝试最优解以及适当考虑拓展性。
半月看完25大专题,居然斩获阿里P7offer概述性能优化一向是后端服务优化的重点,但是线上性能故障问题不是经常出现,或者受限于业务产品,根本就没办法出现性能问题,包括笔者自己遇到的性能问题也不多,所以为了提前储备知识,当出现问题的时候不会手忙脚乱,我们本篇文章来模拟下常见的几个
监控远程的tomcat想要监控远程的tomcat,就需要在远程的tomcat进行对JMX配置,配置完毕重启tomcat#在tomcat的bin目录下,修改catalina.sh,添加如下的参数 CATALINA_OPTS=“$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.0.108 -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.rmi.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false” #这几个参数的意思是: #‐Dcom.sun.management.jmxremote :允许使用JMX远程管理 #‐Dcom.sun.management.jmxremote.port=9999 :JMX远程连接端口 #‐Dcom.sun.management.jmxremote.authenticate=false :不进行身份认证,任何用户都可以连接 #‐Dcom.sun.management.jmxremote.ssl=false :不使用ssl。
使用这个技术,一般来说我们前台会以分页方式来显现数据,Mysql 用的是 OFFSET,SQL Server 用的是 FETCH NEXT,这种 Fetch 的方式其实并不好是线性复杂度,所以,如果我们能够知道 order by 字段的第二页的起始值,我们就可以在 where 语句里直接使用>= 的表达式来 select,这种技术叫 seek,而不是 fetch,seek 的性能比 fetch 要高很多。
可以想象到,这个程序会对 GC 造成压力:修改 pom.xml,配置 spring-boot-maven-plugin 插件打包的 Java 程序的 main 方法类:然后使用 java -jar 启动进程,设置 JVM 参数,让堆最小最大都是 1GB:完成这些准备工作后,我们就可以使用 JDK 提供的工具,来观察分析这个测试程序了。
程序运行过程中执行两种任务,分别是执行业务代码和进行垃圾回收,吞吐量大意就是说程序运行业务代码的时间越多程序的吞吐量就越高,其计算公式 ,吞吐量 = CPU在用户应用程序运行的时间 / ,一般而言GC 的吞吐量不能低于 95%。