- 博客(15)
- 收藏
- 关注
原创 记一次生产频繁发生FullGC问题
因为最近这个接口调用量是翻倍了,所以我就去检查了下慢SQL,发现确实是有较多的慢SQL,所以我就缩减了查询的时间范围,但是效果并不好。经过上面问题的排查,造成hooks大对象的原因找到了,就是每次调用接口的时候,都会往hooks里面put一个对象。过了一会发现,这个服务fullGC是有问题的,太频繁了,这个应该是导致接口超时的根本问题,因为时间也是对的上的。对比一下,就不难发现,fullGC数量是从3月15号晚上9点开始增加的,也是这个接口对外开放的时间。2、根据dump文件,分析出堆内对象的分布情况。
2023-03-16 13:56:57
301
原创 数据同步:主从库如何实现数据一致?
repl_backlog_buffer:环形缓存区,记录两个offset(master_repl_offset:主库写的位置,slave_repl_offset从库同步数据的位置),用于同步主从网络中断期间的数据。听名字大概就可以猜到它和全量复制的不同:全量复制是同步所有数据,而增量复制只会把主从库网络断连期间主库收到的命令,同步给从库。主库有了最新的数据后,会同步给从库,这样,主从库的数据就是一致的。Redis提供了主从库模式,以保证数据副本的一致,主从库之间采用的是读写分离的方式。
2023-02-03 17:26:30
260
原创 数据同步:主从库如何实现数据一致?
repl_backlog_buffer:环形缓存区,记录两个offset(master_repl_offset:主库写的位置,slave_repl_offset从库同步数据的位置),用于同步主从网络中断期间的数据。听名字大概就可以猜到它和全量复制的不同:全量复制是同步所有数据,而增量复制只会把主从库网络断连期间主库收到的命令,同步给从库。主库有了最新的数据后,会同步给从库,这样,主从库的数据就是一致的。Redis提供了主从库模式,以保证数据副本的一致,主从库之间采用的是读写分离的方式。
2023-02-03 17:05:04
425
原创 宕机了,Redis如何避免数据丢失?
1:、fork⼦进程,fork这个瞬间⼀定是会阻塞主线程的(注意,fork时并不会⼀次性拷⻉所有内存数据给⼦进程),fork采⽤操作系统提供的写实复制(Copy On Write)机制,就是为了避免⼀次性拷⻉⼤量内存数据给⼦进程造成的⻓时间阻塞问题,但fork⼦进程需要拷⻉进程必要的数据结构,其中有⼀项就是拷⻉内存⻚表(虚拟内存和物理内存的映射索引表),这个拷⻉过程会消耗⼤量CPU资源,拷⻉完成之前整个进程是会阻塞的,阻塞时间取决于整个实例的内存⼤⼩,实例越⼤,内存⻚表越⼤,fork阻塞时间越久。
2023-02-03 17:04:29
455
原创 ⾼性能IO模型:为什么单线程Redis能那么快
Redis是单线程,主要是指Redis的⽹络IO和键值对读写是由⼀个线程来完成的,这也是Redis对外提供键值存储服务的主要流程。但Redis的其他功能,⽐如持久化、异步删除、集群数据同步等,其实是由额外的线程执⾏的。1.为什么使用单线程?1.1 多线程开销系统中通常会存在被多线程同时访问的共享资源,⽐如⼀个共享的数据结构。当有多个线程要修改这个共享资源时,为了保证共享资源的正确性,就需要有额外的机制进⾏保证,⽽这个额外的机制,就会带来额外的开销。Redis有List的数据类型,并提供出队(LPOP)和⼊队
2023-02-03 17:02:46
114
原创 ThreadLocal原理、内存泄漏以及TransmittableThreadLocal说明
ThreadLocal原理、内存泄漏以及TransmittableThreadLocal说明
2022-11-23 10:02:48
558
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人