SpringCloud升级之路2020.0.x版-11.Log4j2 监控相关

2021-08-15
阅读 9 分钟
1k
Log4j2 异步日志核心通过 RingBuffer 实现,如果某一时刻产生大量日志并且写的速度不及时导致 RingBuffer 满了,业务代码中调用日志记录的地方就会阻塞。所以我们需要对 RingBuffer 进行监控。Log4j2 对于每一个 AsyncLogger 配置,都会创建一个独立的 RingBuffer,例如下面的 Log4j2 配置:
封面图

这个 Redis 连接池的新监控方式针不戳~我再加一点佐料

2021-08-12
阅读 10 分钟
1.8k
Lettuce 是一个 Redis 连接池,和 Jedis 不一样的是,Lettuce 是主要基于 Netty 以及 ProjectReactor 实现的异步连接池。由于基于 ProjectReactor,所以可以直接用于 spring-webflux 的异步项目,当然,也提供了同步接口。
封面图

获取异常信息里再出异常就找不到日志了,我TM人傻了

2021-08-11
阅读 11 分钟
2k
最近组里用第三方给的 SDK 搞了点开发,最近线上突然开始报错,并且发现一个特别奇怪的问题,组员和我说,代码运行到一半不走了,跳过了一段(这代码是刚参加东奥会参加跳远么???)。
封面图

SpringCloud升级之路2020.0.x版-8.理解 NamedContextFactory

2021-08-10
阅读 11 分钟
1.3k
本系列为之前系列的整理重启版,随着项目的发展以及项目中的使用,之前系列里面很多东西发生了变化,并且还有一些东西之前系列并没有提到,所以重启这个系列重新整理下,欢迎各位留言交流,谢谢!~
封面图

SpringCloud升级之路2020.0.x版-7.从Bean到SpringCloud

2021-08-09
阅读 4 分钟
843
本系列为之前系列的整理重启版,随着项目的发展以及项目中的使用,之前系列里面很多东西发生了变化,并且还有一些东西之前系列并没有提到,所以重启这个系列重新整理下,欢迎各位留言交流,谢谢!~

SpringCloud升级之路2020.0.x版-6.微服务特性相关的依赖说明

2021-08-08
阅读 5 分钟
990
本系列代码地址:[链接]spring-cloud-common 不再是一个纯依赖的项目,这个模块包括:spring-framework-common 的依赖同步与异步微服务公共的依赖同步与异步微服务公共的框架代码改造,这个我们后面分析框架以及我们设计的修改的时候,会详细分析,这里先跳过同步与异步微服务公共的依赖包括:代码请参考:[链接]1.启用 ...

这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了

2021-08-07
阅读 4 分钟
1k
今天收到运营同学的一个 SQL,有点复杂,尤其是这个 SQL explain 都很长时间执行不出来,于是我们后台团队帮忙解决这个 SQL 问题,却正好发现了一个隐藏很深的线上问题。
封面图

升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了

2021-08-06
阅读 5 分钟
1.2k
最近我们项目升级到了 Spring Boot 2.4.6 + Spring Cloud 2020.0.x,通过我的另一系列即可看出:Spring Cloud 升级之路。但是升级后,我们发现 YoungGC 明显增高,分配对象速率明显增高,但是晋升的对象并没有增多,证明都是新创建的对象并且没过多久就可以被回收。我们来看其中一个进程的监控,这时候的 http 请求速率...
封面图

SpringCloud升级之路2020.0.x版-5.所有项目的parent与spring-framework-common说明

2021-08-05
阅读 7 分钟
1.3k
本系列代码地址:[链接]源代码文件:[链接]1. 使用 log4j2 异步日志所需要的依赖:需要排除默认的日志实现 logback,增加 log4j2 的依赖,并且添加 log4j2 异步日志需要的 disruptor 依赖。 {代码...} 2. javax.xml 的相关依赖。我们的项目使用 JDK 11。JDK 9 之后的模块化特性导致 javax.xml 不自动加载,所以需要如下...
封面图

SpringCloud升级之路2020.0.x版-4.maven依赖回顾以及项目框架结构

2021-08-04
阅读 5 分钟
2k
本系列代码地址:[链接]我们先来回顾下 maven 依赖中一个重要原则:最短路径原则。这在之后我们的使用中会经常用到。举一个例子,假设我们以 spring-boot-parent 作为 parent: {代码...} 我们想用想用 elasticsearch 作为搜索引擎,在项目中添加了依赖 {代码...} 写好代码,一跑,报类不存在异常: {代码...} 看下依赖m...
封面图

SpringCloud升级之路2020.0.x版-3.Eureka Server 与 API 网关要考虑的问题

2021-08-03
阅读 2 分钟
1.2k
本系列为之前系列的整理重启版,随着项目的发展以及项目中的使用,之前系列里面很多东西发生了变化,并且还有一些东西之前系列并没有提到,所以重启这个系列重新整理下,欢迎各位留言交流,谢谢!~
封面图

SpringCloud升级之路2020.0.x版-2.微服务框架需要考虑的问题

2021-08-02
阅读 4 分钟
806
本系列为之前系列的整理重启版,随着项目的发展以及项目中的使用,之前系列里面很多东西发生了变化,并且还有一些东西之前系列并没有提到,所以重启这个系列重新整理下,欢迎各位留言交流,谢谢!~
封面图

SpringCloud升级之路2020.0.x版-1.背景

2021-08-01
阅读 3 分钟
885
本系列为之前系列的整理重启版,随着项目的发展以及项目中的使用,之前系列里面很多东西发生了变化,并且还有一些东西之前系列并没有提到,所以重启这个系列重新整理下,欢迎各位留言交流,谢谢!~

如何监控 Log4j2 异步日志遇到写入瓶颈

2021-07-23
阅读 8 分钟
1.5k
在之前的一篇文章中(一次鞭辟入里的 Log4j2 异步日志输出阻塞问题的定位),我们详细分析了一个经典的 Log4j2 异步日志阻塞问题的定位,主要原因还是日志文件写入慢了。并且比较深入的分析了 Log4j2 异步日志的原理,最后给出了一些解决方案。
封面图

实例复习机器学习数学 - 2. 几种典型离散随机变量分布

2021-07-14
阅读 6 分钟
1.1k
上一节我们讨论的都是随机事件,某一个随机事件可能包含若干个随机试验样本空间中的随机结果,如果对于每一个可能的实验结果都关联一个特定的值,这样就形成了一个随机变量。

MySQL原理 - InnoDB引擎 - 行记录存储 - Off-page 列

2021-07-07
阅读 6 分钟
1.4k
本文基于 MySQL 8在前面的两篇文章,我们分析了 MySQL InnoDB 引擎的两种行记录存储格式:Compact 格式Redundant 格式在这里简单总结下:Compact 格式结构:变长字段长度表:包括数据不为NULL的每个可变长度字段的长度,并按照列的顺序逆序排列NULL 值列表:针对可以为 NULL 的字段,用一个 BitMap 来标识哪些字段为 NUL...

一次鞭辟入里的 Log4j2 异步日志输出阻塞问题的定位

2021-07-06
阅读 15 分钟
2.1k
线上某个应用的某个实例突然出现某些次请求服务响应极慢的情况,有几次请求超过 60s 才返回,并且通过日志发现,服务线程并没有做什么很重的操作。这种情况断断续续持续了半小时左右。
封面图

一次 RocketMQ 顺序消费延迟的问题定位

2021-07-01
阅读 8 分钟
3.1k
一次 RocketMQ 顺序消费延迟的问题定位问题背景与现象昨晚收到了应用报警,发现线上某个业务消费消息延迟了 54s 多(从消息发送到MQ 到被消费的间隔): {代码...} 查看 RocketMQ 的监控,发现确实发生了比较多的消息积压:从 RocketMQ-Console 上面查看 Topic 的消费者:这个 Topic,业务要求是需要有序的。所以在发送...

机器学习数学复习 - 1.概率论基础

2021-06-28
阅读 5 分钟
1.5k
1.投骰子,出现点数为 6 的概率 $$\frac{1}{6}$$. 投骰子,已知出现点数为偶数,出现点数为 6 的概率则是 $$\frac{1}{3}$$,这个概率即 条件概率。

Spring Cloud 升级之路-2020.0.x -7.使用 Spring Cloud LoadBalancer (2)

2021-05-29
阅读 13 分钟
2k
我们使用 Spring Cloud 官方推荐的 Spring Cloud LoadBalancer 作为我们的客户端负载均衡器。上一节我们了解了 Spring Cloud LoadBalancer 的结构,接下来我们来说一下我们在使用 Spring Cloud LoadBalancer 要实现的功能:
封面图

Spring Cloud 升级之路 - 2020.0.x - 6. 使用 Spring Cloud LoadBalancer-1

2021-05-28
阅读 10 分钟
3.9k
Spring Cloud LoadBalancer是一个客户端负载均衡器,类似于Ribbon,但是由于Ribbon已经进入维护模式,并且Ribbon 2并不与Ribbon 1相互兼容,所以Spring Cloud全家桶在Spring Cloud Commons项目中,添加了Spring cloud Loadbalancer作为新的负载均衡器,并且做了向前兼容,就算你的项目中继续用 Spring Cloud Netflix 套...

Spring Cloud 升级之路 - 2020.0.x - 5. 理解 NamedContextFactory

2021-05-26
阅读 11 分钟
1.1k
spring-cloud-commons 中参考了 spring-cloud-netflix 的设计,引入了 NamedContextFactory 机制,一般用于对于不同微服务的客户端模块使用不同的 子 ApplicationContext 进行配置。

JEP 尝鲜系列 3 - 使用虚线程进行同步网络 IO 的不阻塞原理

2021-05-25
阅读 16 分钟
1.3k
Project Loom 主要目标是在 Java 平台上提供一种易于使用、高吞吐量的轻量级并发性和新的编程模型的 JVM 特性和API。这带来了许多有趣和令人兴奋的前景,其中之一是简化网络交互的代码的同时兼顾性能。现在的服务器能够处理打开的套接字连接的数量,远远超过它们能够支持的线程数量,这既带来了机遇,也带来了挑战。

Spring Cloud 升级之路 - 2020.0.x - 4. 使用 Eureka 作为注册中心

2021-05-10
阅读 12 分钟
1.1k
Eureka 目前的状态:Eureka 目前 1.x 版本还在更新,但是应该不会更新新的功能了,只是对现有功能进行维护,升级并兼容所需的依赖。 Eureka 2.x 已经胎死腹中了。但是,这也不代表 Eureka 就是不能用了。如果你需要一个简便易于部署的注册中心,Eureka 还是一个很好的选择。云服务环境中,基本上所有实例地址和微服务名...

Java JFR 民间指南 - 事件详解 - jdk.ObjectAllocationOutsideTLAB

2021-04-27
阅读 9 分钟
1.2k
JFR: RecordingStream leaks memory:启用 jdk.ObjectAllocationInNewTLAB 发现在 RecordingStream 中有内存泄漏,影响 Java 14、15、16,在 jdk-16+36 (Java 16.0.1) 修复。

Java JFR 民间指南 - 事件详解 - jdk.ObjectAllocationInNewTLAB

2021-04-26
阅读 9 分钟
1.1k
JFR: RecordingStream leaks memory:启用 jdk.ObjectAllocationInNewTLAB 发现在 RecordingStream 中有内存泄漏,影响 Java 14、15、16,在 jdk-16+36 (Java 16.0.1) 修复。

Java JFR 民间指南 - 事件详解 - jdk.ObjectAllocationSample

2021-04-22
阅读 12 分钟
1.6k
对象分配采样:jdk.ObjectAllocationSample引入版本:Java 16相关 ISSUE:Introduce JFR Event Throttling and new jdk.ObjectAllocationSample event (enabled by default)各版本配置:Java 16:默认配置(default.jfc):配置值描述enabledtrue默认启用throttle150/s每秒最多采集 150 个stackTracetrue采集事件的时候,...

实战 Java 16 值类型 Record - 2. Record 的基本用法

2021-04-16
阅读 4 分钟
2k
在上一篇文章实战 Java 16 值类型 Record - 1. Record 的默认方法使用以及基于预编译生成相关字节码的底层实现中,我们详细分析了 Record 自带的属性以及方法和底层字节码与实现。这一篇我们来详细说明 Record 类的用法。声明一个 RecordRecord 可以单独作为一个文件的顶级类,即:User.java 文件: {代码...} 也可以作为...

Spring Cloud 升级之路 - 2020.0.x - 3. Undertow 的 accesslog 配置

2021-04-08
阅读 8 分钟
2.4k
上一节我们讲述了如何使用 Undertow 作为我们的 Web 服务容器,本小节我们来分析使用 Undertow 的另一个问题,也就是如何配置 accesslog,以及 accesslog 的各种占位符。

Spring Cloud 升级之路 - 2020.0.x - 2. 使用 Undertow 作为我们的 Web 服务容器

2021-04-08
阅读 9 分钟
5.2k
在我们的项目中,我们没有采用默认的 Tomcat 容器,而是使用了 UnderTow 作为我们的容器。其实性能上的差异并没有那么明显,但是使用 UnderTow 我们可以利用直接内存作为网络传输的 buffer,减少业务的 GC,优化业务的表现。