- 博客(19)
- 收藏
- 关注

原创 SpringBoot定制错误页面和错误数据
SpringBoot定制错误页面SpringBoot默认是将所有的错误请求转向/error,在类BasicErrorController可以看到@Controller@RequestMapping("${server.error.path:${error.path:/error}}")public class BasicErrorController extends Abstract...
2018-09-05 17:34:02
1631

原创 GC调优实战
GC调优实战在什么情况下需要进行GC调优?关于GC的性能主要有两个指标: 1.吞吐量 throughput (工作时间不算gc的时间/总的时间) 2.响应时间(暂停时间)gc发生时app对外是无法响应的那么什么时候需要gc调优 a: 系统访问慢 体现在整体慢,部分慢仔细了解自己的应用,如果用了缓存,那么年老代应该大一些,缓存的HashMap不...
2018-08-30 17:59:51
345
原创 too many open files引起的宕机问题
部分内容摘抄自 https://blog.youkuaiyun.com/qq_18581221/article/details/80963741一、问题的基本描述、原因、解决方案出现这个错误原因是打开文件数(Linux一切皆文件,所以打开文件数包含文件和Socket连接数)超过Linux设置的最大数;二、实际遇到的案例1. 问题分析以上内容都是摘抄自上面的博文;大概描述了下问题,我这边就不做自行描述了,也提供了一些利用配置的解决方案;下文我这边会举一个实际场景遇到的问题,进行排查分析;too
2021-12-10 23:26:59
953
3
原创 Druid连接池引发的线上服务卡慢宕机问题
一、使用Druid背景 公司微服务产品改造上线后,在开发环境的时候,使用的是springboot默认的连接池HikariCP,为什么springboot2.0后选择的是HikariCP,可以参考博客,Springboot 2.0选择HikariCP作为默认数据库连接池的五大理由---->https://blog.youkuaiyun.com/liuhuiteng/article/details/10762753。 &n
2021-12-01 23:12:27
6281
2
原创 Redis命令时间复杂度(redis的命令也要慎用啊)
我们先看Redis的几个常见命令时间复杂度:keys * 返回所有的key,keys命令最好不要在生产环境用,会全局遍历,会很慢,要堵塞其他命令。dbsize 显示一共有几个key,这个可以在生产用,不会全局遍历exists keyname 查看key是否存在,存在返回1,不存在返回0del kename 删除key 成功返回1,失败返回0。可以删除多个。expire keyname seconds 为key设置过期时间,秒级ttl keyname 查询key的过期时间,如果返回
2021-11-24 22:43:29
5559
原创 Redis性能分析案例二:redis Timeout wait for idle object问题排查
一、业务背景 公司的业务场景主要是利用Redis来做集群节点间session共享;二、报错原因 Timeout wait for idle object意即Redis连接池里面没有空闲连接,没有空闲连接那说明池里面的连接泄漏或者连接始终保留active状态被占用(即Redis是阻塞状态,所有命令阻塞,保持active连接); 由于代码上线很久,同时最近没有改动
2021-11-15 23:47:32
6933
1
原创 Redis性能分析案例一:RDB引起的linux io负载高问题
一、 背景反馈linux磁盘IO高,部署在服务器上的服务,响应很慢,需要排查解决;二、 问题分析及解决1. 确定是什么进程占用的IO进入服务器后,直接top分析 ,下图的wa值很高,说明IO负载很高;进一步查看是哪些进程比较吃IO,发现是redis-sever进程的写IO很高,如下图,那我兴趣就来了,立马准备好了截图记录这个问题的分析过程;写文件很高,不用确认都知道是Redis的RDB进程,快照内存写入磁盘的过程慢,为什么这么吃IO呢?由上图可知,该进程的写入速度大概是30M/s,那么我
2021-11-07 17:57:16
1843
原创 Redis的性能问题总结、排查及调优
前言一、常见工具及手段Redis里面提供的命令1. INFO命令2. monitor命令3. slowlog命令4. bigkeys命令5. benchmark命令6. latency命令其他手段1. 判断是否使用了swap2. Redis内存dump分析二、CPU高问题大并发下CPU高;如何确定并发高:查看redis每秒的查询次数;小并发下CPU高;redis的qps较低的情况下,CPU高,那就是存在慢查询,慢查询无非是算法复杂度和IO的问题;这个时候用slowlog
2021-11-01 22:29:48
4049
转载 03-redis优化
性能分析及优化参考链接:https://baijiahao.baidu.com/s?id=1606949562222634865&wfr=spider&for=pc内存诊断内存使用率是Redis服务最关键的一部分。如果Redis实例的内存使用率超过最大可用内存,即“used_memory”>最大可用内存,那么操作系统会将内存与Swap空间交换,把内存中旧的或不再使用的...
2019-03-29 13:17:38
184
原创 02-redis常见优化配置
博客推荐: https://blog.youkuaiyun.com/crisis_hiding/article/details/81490158 https://blog.youkuaiyun.com/achuo/article/details/80600170 https://www.cnblogs.com/duanxz/p/5447402.html根据业务需要选择合适的数据类型,并为不同的应用场景设...
2019-03-29 11:12:07
219
转载 01-redis常见配置
转自:https://blog.youkuaiyun.com/rongbo_j/article/details/49642079Redis配置文件参数说明:Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程daemonize no当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定pid...
2019-03-29 11:06:22
176
原创 Jstack性能排查
现在的应用服务器还是很多的,但是问题排查和调优方式基本还是一样的,公司使用的是resin作为服务器容器,这篇文章记录今天下午对tomcat进行问题排查的基本步骤做个总结; 应用场景: 项目发生性能问题,比如某个功能慢,服务器cpu高,内存溢出,cpu高等均可以按以下方式进行排查 环境是: windows+tomcat+eclipse准备一个简单项目,然后项目打成war包部...
2019-01-31 18:02:48
312
原创 Nio基础之position,limit概念
Nio的基本概念:https://baike.baidu.com/item/java.nio/5180052?fr=aladdin 百度百科本处仅演示下Buffer的几个概念和Api;以ByteBuffer缓冲区为例;创建缓冲区ByteBuffer bb = ByteBuffer.allocate(10);bb.position();代表的是数据指针的位置;bb.cap...
2019-01-31 14:17:42
1342
1
原创 SpringBoot配置嵌入式容器及三大组件
首先明白的一点的是:SpringBoot是默认采用ssm架构,里面的日志采用的是logback ,嵌入式的tomcat容器。配置端口号,项目名等我们除了可以通过application.properties配置文件配置外,我们可以用代码自定义配置tomcat的相关设置。server的基本配置通过配置文件配置端口号server.port= 9999spring.thym...
2018-09-11 15:04:14
3359
原创 MySql优化与管理
最常使用的 2 种存储引擎:Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默 认使用Myisam。 每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm (存储表定义)、.MYD (MYData,存储数据)、.MYI (MYIndex,存储索引)。数据文件和 索引文件可以放置在不同的目录,平均分布io,获得更快的速度。 ...
2018-09-04 22:25:01
174
原创 jvm参数设置需要注意的地方
我们要尽量减少 Full gc 的次数(tenured generation 一般比较大,收集的时间较长,频繁的Full gc会导致应用的性能收到严重的影响)。 堆内存GC JVM(采用分代回收的策略),用较高的频率对年轻的对象(young generation)进行YGC,而对老对象(te...
2018-09-03 10:59:40
550
原创 垃圾回收算法及垃圾回收器
内存申请、对象衰老过程一、内存申请过程JVM会试图为相关Java对象在Eden中初始化一块内存区域;当Eden空间足够时,内存申请结束。否则到下一步;JVM试图释放在Eden中所有不活跃的对象(minor collection),释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区;Survivor区被用来作为Eden及old的中间交换区域...
2018-08-30 17:58:30
208
原创 内存溢出分类及简单演示
一、演示内存溢出1.Java代码User类public class User { private String name; private String age;Controller @RequestMapping("/yichu") public void yichu(){ ArrayList<User> ...
2018-08-29 17:32:25
904
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人