随笔分类 -  服务端性能测试

摘要:Tomcat链接数分析影响性能的线程状态1、BLOCKED,如果线程中有BLOCKED,就代表有阻塞情况,需要进行排查2、TIMED_WAITING,如果线程中有TIMED_WAITING,就代表有等待的情况,要分情况来排查 a> 系统线程在等待(如果以java.*,并且线程快照信息比较短,可以忽略 阅读全文
posted @ 2023-07-11 09:28 常疯大虾 阅读(514) 评论(0) 推荐(0)
摘要:Jprofiler定位接口相应时间长问题一.环境准备执行压测脚本,分析该接口tps很低,响应时间很长高频接口100ms以内,普通接口200ms以内二.JProfiler分析响应时间长的方法1.jprofiler录制数据压测脚本,执行1-3分钟即可2.分析接口相应时间长的方法通过Method Stat 阅读全文
posted @ 2023-07-11 09:28 常疯大虾 阅读(258) 评论(0) 推荐(0)
摘要:CPU问题定位与分析一.环境准备1.准备压测脚本2.上传到压测服务器二.现象分析1.业务指标分析2.系统资源分析三.问题定位1.打开jprofiler查看CPU views—Call Tree/Host Spots,查看占用cpu问题最高的函数2.下载代码,用反编译工具查看,使用了谷歌的序列化gjs 阅读全文
posted @ 2023-07-11 09:28 常疯大虾 阅读(58) 评论(0) 推荐(0)
摘要:内存泄漏案例分析一.环境配置1.创建jmter脚本Ip:10.196.130.103Port:8082url:/pinter/case/memoryquery: userName=admin&password=12342.jmeter添加监控三方插件下载地址:http://jmeter-plugin 阅读全文
posted @ 2023-07-11 09:25 常疯大虾 阅读(170) 评论(0) 推荐(0)
摘要:内存溢出案例实战一.JVM内存参数配置1.给项目的tomcat的catalina.sh添加配置参数cd /usr/src/tomcat-pinter/binvi catalina.sh在第二行添加以下配置:JAVA_OPTS="-Xms512m -Xmx512m -Xmn256m -Xss1024k 阅读全文
posted @ 2023-07-11 09:25 常疯大虾 阅读(41) 评论(0) 推荐(0)
摘要:线程阻塞案例分析 一.Jstack打印快照 1.jmeter运行压测脚本 2.用jstack打印快照,下载到本地 jstack 112759 > log1.txt jstack 112759 > log2.txt jstack 112759 > log3.txt 3.在本地搜索是否有blocked关 阅读全文
posted @ 2023-07-11 09:24 常疯大虾 阅读(47) 评论(0) 推荐(0)
摘要:死锁问题定位与分析 一.环境搭建 1.准备脚本,执行压测 2.用jstack 打印日志 jstack 112759 >dead.log 3.下载日志到本地 sz dead.log 二.问题定位 1.打开dead.log 搜索deadlock 2.查看死锁的线程 3.查看死锁位置 三.问题分析 1.下 阅读全文
posted @ 2023-07-11 09:23 常疯大虾 阅读(63) 评论(0) 推荐(0)
摘要:Jvm垃圾回收机制一、垃圾回收对象根搜索算法:判断对象存活还是非存活的算法根对象:栈内存中直接引用的对象二、垃圾回收算法1.标记-清除算法特点:标记完成后,统一回收缺点:会产生大量不连续的内存碎片2.标记-压缩算法特点:标记后将存活对象移动到一起,清除以外的内存老年代使用此算法3.复制算法 特点:将 阅读全文
posted @ 2023-06-27 17:10 常疯大虾 阅读(31) 评论(0) 推荐(0)
摘要:JVM内存溢出原理一.堆内存溢出 1.原因堆内存中存在大量对象,这些对象都有被引用,当所有对象占用空间达到堆内存的最大值2.报错报错类型:OutOfMemory:Java heap space 3.解决程序出差,代码问题,优化代码二.永久代溢出 1.原因类的一些信息,如类名、访问修饰符、字段描述、方 阅读全文
posted @ 2023-06-27 17:09 常疯大虾 阅读(77) 评论(0) 推荐(0)
摘要:JVM内存结构分析1.JVM内存定义Jvm是Java虚拟机,是提供Java代码运行的虚拟环境,每一个java程序运行时,都有自己的一个jvm2.JVM组成JVM有3大核心区域:栈内存:线程私有,主要用于存放基本数据类型和对象的引用(变量)。通过-Xss文件配置参数堆内存:线程共享,主要用于存放数组和 阅读全文
posted @ 2023-06-27 17:08 常疯大虾 阅读(55) 评论(0) 推荐(0)
摘要:数据库连接池问题定位与分析 一.环境准备 1.编写脚本 2.执行压测 3.打印快照 二.问题定位 1.在快照中,搜索是否存在BLOCKED 或者 TIMED_WAITING字段 2.查看TIMED_WAITING日志中是否存在,跟自身业务相关的日志信息 3.检查是否存在getconnection的关 阅读全文
posted @ 2023-06-27 17:05 常疯大虾 阅读(139) 评论(0) 推荐(0)
摘要:联合索引问题定位与分析一.配置联合索引二.联合索引生效规则最左侧生效原则1.不生效情况Age在联合索引的第左侧,where字句中,没有用到age所以联合索引不生效2.部分生效情况Email在联合索引的最左侧,slq语句中有email字段,email生效3.联合索引都生效Sql语句中where字段与联 阅读全文
posted @ 2023-06-27 17:01 常疯大虾 阅读(34) 评论(0) 推荐(0)
摘要:数据库索引问题定位与分析 一.数据库服务器添加慢查询配置 1.my.cnf文件添加监控慢查询配置 cd /etc/my.cnf vi my.cnf 添加如下配置: slow_query_log=1 long_query_time=0.01 2.重启数据库服务器 systemctl restart m 阅读全文
posted @ 2023-06-27 17:00 常疯大虾 阅读(34) 评论(0) 推荐(0)
摘要:数据库架构优化一.分库分表1.整除取余比如有user有10个库,每个库有100张表userid=100087存放的数据库和表格的路径100087%10=7 第7个库10087%100=87 第87张表2.根据id最后1位和两位插入数据库和表Id的最后1位为数据库的位置Id的最后两位为表格的位置二.读 阅读全文
posted @ 2023-06-27 16:57 常疯大虾 阅读(34) 评论(0) 推荐(0)
摘要:代码优化1.使用对象池减少对重复对象的创建,比如tcp链接、数据库链接、多线程2.调整连接数,连接池、数据库链接数、tomcat、nginx连接数3.利用缓存技术增加缓存、本地缓存(tomcat内存之中,不走网络)、redis缓存4.串行改并行,即单线程改多线程5.同步改异步,使用场景:本次调用接口 阅读全文
posted @ 2023-06-27 16:56 常疯大虾 阅读(68) 评论(0) 推荐(0)
摘要:Sql语句优化1.在where及order by后的字段,添加索引。避免全表扫描。一般不要超4个2.避免索引失效:避免where字句中对字段进行null值判断,避免where字句中对字段进行函数或者表达式的操作避免where字句中对字段进行左右模糊查询3.查询语句避免*,减少内存使用4.用union 阅读全文
posted @ 2023-06-27 16:56 常疯大虾 阅读(29) 评论(0) 推荐(0)
摘要:Mysql慢查询现象、原因、排查思路一.Mysql慢查询表现1.Tps很低2.相应时间很长3.应用服务器cpu使用率很低4.Mysql数据库服务器使用率很高二.Mysql慢查询原因1.数据未加索引2.数据库索引未生效3.Sql语句不够优化三.Mysql慢查询问题排查思路1.检查是否添加索引2.找到接 阅读全文
posted @ 2023-06-27 16:55 常疯大虾 阅读(734) 评论(0) 推荐(0)
摘要:性能瓶颈定位思路整体思路:从前到后,从表象到内部1.首先排查压力机自身的问题,如CPU、内存、网络、脚本2.监控中间件的访问日志,观察相应时间耗时,出现在哪一个环节。Tomcat、nginx、apache、mysql3.排查网络问题,监控压力机到后端服务器的网络是否出现瓶颈4.监控服务端的所有机器( 阅读全文
posted @ 2023-06-27 16:54 常疯大虾 阅读(121) 评论(0) 推荐(0)
摘要:K8s安装方法 一.环境准备 1.master和node主机准备 最好是纯净的系统,特别是不能有安装docker 2.上传kainstall-centos.sh和1.20.6_centos7.tgz上传至master机器的任意目录下 3.对kainstall-centos.sh添加可执行权限: ch 阅读全文
posted @ 2023-06-27 16:37 常疯大虾 阅读(345) 评论(0) 推荐(0)
摘要:搭建skywalking监控平台一.平台建构二.环境搭建注意核对系统时间是否正确Datentpdate pool.ntp.org1.在任意目录新建一个docker-compose的目录cd /homemkdir docker-compose2.在docker-compose的目录下,新建一个dock 阅读全文
posted @ 2023-06-27 16:33 常疯大虾 阅读(166) 评论(0) 推荐(0)