曹工改bug:cpu狂飙,old gc频繁,线程神秘死亡连环案件调查报告 前言 前两天,访问开发环境上一个java服务,发现一直转圈圈,因为我开着fiddler,可以看到的现象是,接口一直没返回:本来想着直接jenkins重新构建一下开发环境(即重启服务),突然觉得,还是看看到底啥情况吧. 排查过程 登录到开发环境上(8核16g,centos 7),来了一圈常规操作,结果执行top发现,cpu占用竟然高达400%,然后按照标准流程,那肯定就是查看该进程内占用cpu高的线程是哪个: top -H…
问题背景 最近装个centos 7.6的环境,其中,基础环境包括,redis.nginx.mongodb.fastdfs.mysql等,其中,自启动使用的是systemctl,其他几个组件,都没啥问题,唯独,这个mongodb,是死活启动不了. 但是,我这里说的,不是启动不了,如果直接在shell里敲: systemctl start mongod.service 是没啥问题的,是可以启动的. mongod.service大致如下,各文件夹的权限也已经仔细检查过,应该是没毛病: [Unit] D…
前言 前几天,在linux上部署一个war包应用时,tomcat直接起不来,查看tomcat的日志,catalina.out里没啥特别的,但是查看localhost日志,发现栈溢出了. [root@localhost logs]# vim localhost.2019-12-26.log 26-Dec-2019 16:27:31.811 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log No…
问题描述 这两天本来忙着新功能开发,结果之前的一个项目最近要上了,然后又在测试,然后就喜提bug一枚(not mine),看bug描述,很简单,而且本地环境也重现了,只要刷入2000个英文字符就可以复现. 核心就是: 当任务描述输入最大字符2000时,报未知异常 问题定位 这种字符数限制的,一般就是数据库的字段长度短了,于是我直接找到ssh,找到对应的日志看了一下,果然是这个问题. com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data…
前言 今天新年第一天,给大家拜个年,祝大家新的一年里,技术突突突,头发长长长! 咱们搞技术的,比较直接,那就开始吧.我给大家看看我demo工程的效果(代码下边会给大家的): 技术栈是mybatis/mybatis plus,spring boot ,日志是logback. 其实这个痛点吧,我是一直有的,测试或者开发时,日志里每次打印的都是带?的sql,然后还得自己手动一个参数一个参数地贴过去,这真是一个体力活.虽然是体力活,还是做了这么多年了,这次,终于决定不忍了. 在弄这个之前呢,我知道ide…
曹工说Spring Boot源码(26)-- 学习字节码也太难了,实在不能忍受了,写了个小小的字节码执行引擎 写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean Definition到底是什么,咱们对着接口,逐个方法讲解 曹工说Spring Boot源码(3)-- 手动注册Bean Definition不比游戏好玩吗,我们来试一下 曹工说Spring…
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean Definition到底是什么,咱们对着接口,逐个方法讲解 曹工说Spring Boot源码(3)-- 手动注册Bean Definition不比游戏好玩吗,我们来试一下 曹工说Spring Boot源码(4)-- 我是怎么自定义ApplicationContext,从json文件读取bean de…
曹工说JDK源码(1)--ConcurrentHashMap,扩容前大家同在一个哈希桶,为啥扩容后,你去新数组的高位,我只能去低位? 曹工说JDK源码(2)--ConcurrentHashMap的多线程扩容,说白了,就是分段取任务 曹工说JDK源码(3)--ConcurrentHashMap,Hash算法优化.位运算揭秘 什么是缓存雪崩 基本概念梳理 这个基本也是redis 面试的经典题目了,然而,网上不少博客对这个词的定义都含糊不清,各执一词. 主要有两类说法: 大量缓存key,由于设置了相同…
一.前言 第一次被人喊曹工,我相当诧异,那是有点久的事情了,楼主13年校招进华为,14年在东莞出差,给东莞移动的通信设备进行版本更新.他们那边的一个小伙子来接我的时候,这么叫我的,刚听到的时候,心里一紧,楼主本来进去没多久,业务也不怎么熟练,感觉都是新闻联播里才听到什么“陈工”,“李工”之类的叫法,感觉也是经验丰富.技术强硬的工人才被人这么称呼.反正呢,咋一下,心里虚的很,好歹呢,后边遇到问题了就及时和总部沟通,最后问题还是解决了,没有太丢脸.毕业至今,6年过去,楼主也已经早不在华为了,但是想起…
一.前言 我写博客主要靠自己实战,理论知识不是很强,要全面介绍Tomcat Digester,还是需要一定的理论功底.翻阅了一些介绍 Digester 的书籍.博客,发现不是很系统,最后发现还是官方文档最全面.这里我就把其全文翻译一遍吧,部分不好懂的地方会做些补充. 前面写了两篇 ,一篇是 sax 模型的,一篇是模仿着 Tomcat 的Digester 写的.大家可以先看看这两篇,而且很有必要照着文中的源码跑一下,源码都放在基友网站了. 曹工说Tomcat1:从XML解析说起   曹工说Tomc…