摘要: 前言 大多数情况下,我们会在打印日志时定义日志的LOGGER级别,用来控制输出的信息范围。 一方面,过多的输出会影响查看日志的效率,另一方面,过少的日志让问题定位变得困难。 但当线上出现问题时,线上容器通常定义在info级别,发生一些疑难问题时,光靠info级别的日志很难定位问题。 一个典型的场景: 阅读全文
posted @ 2020-11-21 21:37 AI乔治 阅读(769) 评论(0) 推荐(0) 编辑
摘要: bcc是eBPF的一种前端,当然这个前端特别地简单好用。可以直接在python里面嵌入通过C语言写的BPF程序,并帮忙产生BPF bytecode和load进入kernel挂载kprobe、tracepoints等上面执行。之后,还可以从python取出来C函数里面导出的maps数据以及per-ev 阅读全文
posted @ 2020-11-21 21:34 AI乔治 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 今天再来分析一个死锁场景。下面开始真正的内容。 建表语句: CREATE TABLE `tenant_config` ( `id` bigint(21) NOT NULL AUTO_INCREMENT, `tenant_id` int(11) NOT NULL, `open_card_point` 阅读全文
posted @ 2020-11-21 21:33 AI乔治 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 现象 QA同学反映登录不上服务器 排查问题1–日志级别 查看log,发现玩家登录的时候抛出了一个java.lang.OutOfMemoryError 大概代码是向Redis序列化一个PlayerMirror镜像数据,但是在JSON.toJSONString的时候出现了错误.比较清晰,即序列化的时候e 阅读全文
posted @ 2020-11-21 21:32 AI乔治 阅读(865) 评论(0) 推荐(0) 编辑
摘要: 现象 最近接手了一个同事的项目,某一天接口的响应耗时突然增加了很多,由几十ms 增加到了几十秒。 首先查看机器上的日志,有调用第三方接口超时,查询数据库超时。立马查看第三方接口监控和数据库监控,一切正常。可能由于 GC 停顿造成统计的超时,这个时候我们通过 jstat -gcutil pid 查看 阅读全文
posted @ 2020-11-21 21:31 AI乔治 阅读(694) 评论(0) 推荐(0) 编辑
摘要: tream Stream是在Java SE 8 API添加的用于增强集合的操作接口,可以让你以一种声明的方式处理集合数据。将要处理的集合看作一种流的创建者,将集合内部的元素转换为流并且在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选,排序,聚合等。元素流在管道中经过中间操作(interme 阅读全文
posted @ 2020-11-21 21:29 AI乔治 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 项目中使用@Scheduled注解(Spring注解)来定时(每隔五分钟)刷新JVM缓存。 但测试环境和线上环境出现不一样的效果(如下图),测试环境每隔5分钟刷新一次,而线上环境刷新的时间间隔远远超过5分钟。测试环境的时间间隔均正常,而线上环境的时间间隔均不正常。 测试环境: 线上环境: 项目中有若 阅读全文
posted @ 2020-11-21 21:23 AI乔治 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 在高并发、异步化等场景,线程池的运用可以说无处不在。线程池从本质上来讲,即通过空间换取时间,因为线程的创建和销毁都是要消耗资源和时间的,对于大量使用线程的场景,使用池化管理可以延迟线程的销毁,大大提高单个线程的复用能力,进一步提升整体性能。 今天遇到了一个比较典型的线上问题,刚好和线程池有关,另外涉 阅读全文
posted @ 2020-11-21 21:22 AI乔治 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 背景 前段时间我们的服务遇到了性能瓶颈,由于前期需求太急没有注意这方面的优化,到了要还技术债的时候就非常痛苦了。 在很低的 QPS 压力下服务器 load 就能达到 10-20,CPU 使用率 60% 以上,而且在每次流量峰值时接口都会大量报错,虽然使用了服务熔断框架 Hystrix,但熔断后服务却 阅读全文
posted @ 2020-11-21 21:21 AI乔治 阅读(551) 评论(0) 推荐(0) 编辑
摘要: 背景 在我们开发过程中为了支持 Docker 容器化,一般使用 Maven 编译打包然后生成镜像,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很方便。docker-maven-plugin 插件就是为了帮助我们在 Maven 工程中,通过简单的配置,自动生成镜像并推送到仓库中。 spo 阅读全文
posted @ 2020-11-21 21:20 AI乔治 阅读(780) 评论(0) 推荐(0) 编辑
摘要: 一、过滤器和拦截器的区别 1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。 2、拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的,spri 阅读全文
posted @ 2020-11-21 21:19 AI乔治 阅读(6405) 评论(0) 推荐(3) 编辑

作者微信号:wm1106701116 (备注:博客园) 加入微信架构群,获取架构师学习资料。