Java性能监控与故障处理分析工具(Heap memory和Native memory)

前言

在实际的工作中会不断的遇到各种线上问题,包括但不限于内存溢出、服务响应时间上升、线程block等各种情况,这时候就需要性能监控以及故障处理工具来分析和定位问题,google后发现并没有一篇分类清晰、实用的文章能够概括以上对于工具的需求,因此,决定整理一下相关的内容,以供大家学习参考。

本文意在介绍了有哪些常用的分析工具,以方便大家能够快速的分析定位问题。@空歌白石

文章的整个编写思路可以通过如下思维导图所示:

java-profile-xmind.png

这里有几点需要说明:

  1. JDK原生工具特别是jmc以及arthas是在线实时分析工具,mat是离线分析工具,jProfiler也可以支持离线和实时分析。
  2. 以上工具都是很大篇幅是针对堆内内存进行分析,对于堆外内存的问题分析能力十分有限甚至可以说没有。
  3. 如果如果确定是堆外内存问题,一般堆外内存溢出排查可结合 gperftoolsbtrace 排查。

Netty源码剖析学习笔记

前言

本文记录了学习Netty源码的过程,正片文章内容包含思路分析和源码。

本文主要包含:

  1. Netty简介。
  2. Netty基本组件。
  3. Netty服务端启动。
  4. NioEventLoop。
  5. Netty如何新建连接。
  6. Pipeline。
  7. Netty的内存分配ByteBuf。
  8. Netty的解码逻辑。
  9. Netty的编码逻辑。
  10. Netty性能优化工具类。
  11. Netty中的设计模式。
  12. Netty应用的性能优化。

本文源码为当前最新版本:netty 4.1

【程序员学习运筹学】(一)什么是运筹学

前言

每一个程序员或开发者都会面临着如何提升系统吞吐量、如何减少系统访问耗时尖刺、如何机器CPU利用率、如何降低系统响应时间、如何减少系统内存占用等问题。通常情况下,我们会分析系统JVM参数、埋点查看耗时模块、优化网络访问方式、优化序列化或压缩方案、数据编码等等方案解决以上的问题。但是如果站在更高的层次上,可以看出我们实际面临的问题一个如何更好的管理我们所拥有的的计算资源,以最大程度的利用计算资源的问题,想到这一层,很容易会联想到本专题的主题运筹学,正所谓夫运筹帷幄之中,决胜千里之外。本文作为【程序员学习运筹学】的开篇,首先会介绍下什么是运筹学,让我们一起走进它。

什么是运筹学

运筹学一次最早起源于20世纪30年代。《中国大百科全书》的释义为:运筹学是“是用数学方法研究经济、民政和国防等部门在内外环境的约束条件下合理分配人力、物力、财力等资源,使世纪系统有效运行的技术科学,它可以用来预测发展趋势,制订行动规划和优选可行方案。”

运筹学一词在英国称为operational research,在美国称为operations research,可以直译为“运用研究”或“作业研究”。由于运筹学涉及的主要领域是管理问题,研究的主要手动是建立数据模型,并比较多的运用各种数学工具。从这点触发,有人将运筹学称为“管理数学”。1957年我国从“夫运筹帷幄之中,决胜千里之外”(见《史记高祖本纪》)这句古语中摘取“运筹”二字,将 O.R.正式译为运筹学,包含运用筹划,以策略取胜等意义,比较恰当地反映了这门学科的性质和内涵。

终端工具MobaXterm超详细使用教程

前言

日常的开发中Shell、SSH、FTP等终端是必不可少的软件,一款好用的终端软件可以在繁杂的日常开发中有效的提升排查问题以及日常运维的效率。比较著名的终端工具有很多,类似于:SecureCRTSecureFXXShellXFTPWinSCPFileZillaPuTTY等等。

本文将介绍的MobaXterm同时支持SSH和SFTP,可视化操作文件,不需要再安装ftp工具。作为本人一直在用的终端工具,希望通过本文能够让大家充分了解MobaXterm