记一次公司JVM堆溢出抽茧剥丝定位的过程 编程技术

记一次公司JVM堆溢出抽茧剥丝定位的过程

背景 公司线上有个tomcat服务,里面合并部署了大概8个微服务,之所以没有像其他微服务那样单独部署,其目的是为了节约服务器资源,况且这8个服务是属于边缘服务,并发不高,就算宕机也不会影响核心业务。 因为并发不高,所以线上一共部署了2个tomcat进行负载均衡。 这个tomcat刚上生产线,运行挺平稳。大概过了大概1天后,运维同事反映2个tomcat节点均挂了。无法接受新的请求了。CP...
阅读全文
记一次对 dubbo-go-hessian2 的性能优化 编程技术

记一次对 dubbo-go-hessian2 的性能优化

dubbo-go-hessian2 是一个用 Go 实现的 hessian 协议 v2.0 版本的序列化库。从项目名称里可以看到主要用在 dubbo-go 这个项目里。hessian 协议作为 dubbo 的默认协议,因此对性能有比较高的要求。 立项 譬如有网文 基于Go的马蜂窝旅游网分布式IM系统技术实践 把 dubbo-go 与其他 RPC 框架对比如下: ...
阅读全文
SpringBoot2.2.x 版本CPU增高BUG分析 Java

SpringBoot2.2.x 版本CPU增高BUG分析

一、发现问题 项目在上线之后,运行24小时之后CPU突然增高,导致不得不重启机器。 二、分析及定位问题 项目在上线前是经过压力测试,刚开始定位是QPS过大,通过增加机器。但结果并不是特别理想,始终会有几台机器增高。 项目环境 [x] 测试机 1c2g 通过jmeter对该机器接口进行压力测试,qps为90,cpu增高到40%持续没多久下降到10%,一直持...
阅读全文
详解如何热更新线上的Java服务器代码 编程技术

详解如何热更新线上的Java服务器代码

一、前言 1、热更新代码的场景 (1)当线上服务器出现问题时,有些时候现有的手段不足以发现问题所在,可能需要追加打印日志或者增加一些调试代码,如果我们去改代码重新部署,会破坏问题现场,可以通过热部署的手段来增加调试代码 (2)线上出现紧急bug,通过Review代码找到问题,修改好后打包部署的流程可能比较久,可以通过热部署代码及时解决问题 二、Arthas的使用 使用...
阅读全文
排查tomcat服务器CPU使用率过高 编程技术

排查tomcat服务器CPU使用率过高

tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是因为部署的web程序的问题。 一、现象描述 在一次线上环境,前台访问页面的速度越来越慢,从浏览器F12中看到发出的请求都是pengding的状态。 二、排查过程 我这里tomcat部署在linux环境中。下面的排查过程均在linux下进行。 1、排查后台服务 查看tomcat的后台日志,发现日志正...
阅读全文
让人头疼的WAS内存溢出,看银行运维人员如何优雅的解决 编程技术

让人头疼的WAS内存溢出,看银行运维人员如何优雅的解决

1 引言 WAS(IBM WebSphere Application Server)是IBM发布的一款成熟的企业级Web中间件产品,凭借其可靠性与稳定性,一直是国内大型商业银行Web服务的主流选择。可再稳定也会出问题,在日常的生产运维中,WAS应用问题的排查确实让笔者这种银行运维人员头疼。一方面厂商提供技术支持的时效性与准确性有待改善,另一方面像IBM其他产品一样,网上开放的可参考和借鉴的资料...
阅读全文
JVM垃圾回收与一次线上内存泄露问题分析和解决过程 编程技术

JVM垃圾回收与一次线上内存泄露问题分析和解决过程

前言 内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 Java是由C++发展来的,抛弃了C++中一些繁琐容易出错的东西,程序员忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,而Java的GC(Garbage Collection)是自动检测不用的对象,达到自动回收, 既然...
阅读全文
JVM监控命令详解 编程技术

JVM监控命令详解

JVM监控命令基本就是 jps、jstack、jmap、jhat、jstat 几个命令的使用就可以了 JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到...
阅读全文
Java Trouble Shooting Java

Java Trouble Shooting

# 关于性能瓶颈 ## 性能优化的理念 粗略地划分,代码可分为 cpu consuming 和 io consuming 两种类型,即耗 CPU 的和耗 IO 的代码。如果当前CPU已经能够接近100%的利用率, 并且代码业务逻辑无法再简化, 那么说明该系统的已经达到了性能最大化, 如果再想提高性能, 只能增加处理器(增加...
阅读全文
JVM垃圾回收与一次线上内存泄露问题分析和解决过程 编程技术

JVM垃圾回收与一次线上内存泄露问题分析和解决过程

前言 内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 Java是由C++发展来的,抛弃了C++中一些繁琐容易出错的东西,程序员忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,而Java的GC(Garbage Collection)是自动检测不用的对象,达到自动回收...
阅读全文
Loading...