log4j同步机制导致的cpu飙升排查与解决

问题

组内某业务的几个相关接口均超时,上阿里云查日志一看是Dubbo调用超时,查看网络情况未发现异常,直接上Provider的机器查看占用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7020 root 20 0 2538892 164144 11856 S 90.3 8.7 61:23.54 java
11022 root 20 0 2560528 241340 11920 S 0.3 12.8 311:23.23 java
26805 root 20 0 32612 4036 2472 S 0.3 0.2 24:50.95 AliYunDunUpdate
26838 root 10 -10 134120 14524 5924 S 0.3 0.8 343:05.22 AliYunDun
1 root 20 0 43280 3300 2108 S 0.0 0.2 2:16.82 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:01.78 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 1:30.68 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 65:15.85 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 2:14.65 watchdog/0
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd

阅读全文

Spring Boot启动过程源码阅读

入口

  1. 代码部分

    1
    2
    3
    4
    5
    6
    @SpringBootApplication
    public class WebApplication {
    public static void main(String[] args) {
    SpringApplication.run(WebApplication.class, args);
    }
    }

阅读全文

类加载机制学习总结

有哪些类加载器,分别是做什么的?

  • BootStrapClassLoader<由c++实现属于jvm的一部分,java实现是native方法>:启动类加载器,,用来加载JAVA_HOME/lib/rt.jar。

阅读全文

记一次编写shell脚本的坑与疑问

对于shell脚本语言,熟悉的也就那几个常用的Linux命令比如字符串处理、自动化部署脚本,并没有做过相关的项目开发,但是让我做些简单的需求,有思路后结合搜索引擎也能处理,就是会耗费更长一点的时间。今天伟哥让我帮他弄一个日志处理的脚本,记录下其中遇到的的一些坑和疑问。产生这些疑问的主要原因还是会潜移默化的把java编程习惯代入到shell编程里面,晕😵!

阅读全文

适合个人项目的持续集成服务-Buddy

前几天把博客通过travis-ci自动化部署之后,配置Build pushed branches,每次改完push到git就不用管的感觉和之前每次手动部署相比的确是很酸爽!最近在v2ex上看到有人推荐Buddy也有持续集成功能,刚好我给大学同学做的一个简单的SpringBoot应用还有一段时间的改动期,考虑到每次手动部署确实是一个浪费时间的重复性工作,就尝试用buddy来完成部署的工作,开箱体验后感觉就一个词–简单!和老牌持续集成服务jenkins和最近很火的travis-ci相比,buddy用起来很快很轻便,只要使用过jenkins几乎不需要做很大的改动甚至更简单的就能平移到buddy持续集成服务上。

阅读全文

2018总结和2019的flag

每次要回忆一年做过了什么,我都会不由自主地想起《士兵突击》里面的一句台词:你能想起这其中的每一天吗?

这说的就是每个人对于生活的走心程度吧,我想说:并不能全想起!

给我自己定一个打分规则,满分100分

废话不多说了,2018年发生了这些!

    阅读全文

    Travis-CI自动化部署github上的hexo博客源码

    之前一直使用hexo静态博客,每次写完东西都需要手动deploy,而且经常环境还出问题,比较恶心。但是!!!今天偶然发现了Travis-CI这个服务,以前只觉得它是用来给代码build验证跑单元测试晕(((φ(◎ロ◎;)φ))),并没有实际使用过。我们使用github账号授权Travis-CI后,可以配置Travis-CI监听我们的repository动态,当有push或pull request过来的时候,Travis-CI会自动帮我们按照.travis.yml的配置进行build和deploy。下面我们来看看是怎么配置的。

    阅读全文

    redis阻塞队列使用记录

    由于项目重构需要,之前原本保存在应用内存下的一个BlockingQuene,需要修方案放到redis里面,所以一对一的写了一个RedisBlockingQuene,但是过程中发现redis的list中,阻塞做了小优化,让我们看看吧。

    日常使用的redis命令

    连接redis,并登录

    阅读全文