Java常见线上问题总结 绝⼤多数Java线上问题从表象来看通常可以归纳为4个方面:CPU、内存、磁盘、网络。比如,应用上线 后突然CPU使用率99%、内存泄漏、STW时间过长,这些问题通常可以分为两大类: 系统异常 (CPU占用率过高、磁盘使用率100%、系统可用内存低等) 业务异常 (服务运⾏⼀段时间⾃动退出、服务间调⽤时间过⻓、多线程并发异常、死锁等) 1.如何去定位问题 解决问题的第⼀步是定位问题,排查手段⼀般包括以下⼏项,也可以将此理解为排查顺序: 业务⽇志分析排查 APM分析排查 物理环境排查 应⽤服务排查 云⼚商或运营商问题排查 1.1 业务⽇志分析排查 这个没啥说的,看日志不会吗? 1.2 APM分析排查 APM,全称Application Performance Management,应⽤性能管理 在分布式系统中,需要用到APM进行全链路分析 ⽬前市场上使⽤较多的链路跟踪⼯具有如下⼏个: Apache Skywalking:https://skywalking.apache.org Pinpoint:https://pinpoint.com/product/for-e.... java线上故障排查方案 java
在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。也就是说在LINUX系统中有一个重要的概念:一切都是文件。其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。 Linux目录树 所有可操作的计算机资源都存在于目录树这个结构中,对计算资源的访问,可以看做是对这棵目录树的访问 Linux文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录: 常见目录说明: /bin: 存放二进制可执行文件(ls、cat、mkdir等),常用命令一般都在这里; /etc: 存放系统管理和配置文件; /home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示; /usr : 用于存放系统应用程序; /opt: 额外安装的可选应用程序包所放置的位置。.... 面试官:用过Linux吗? Linux
TCP三次握手 在后端相关岗位的入职面试中,三次握手的出场频率非常的高。其实在三次握手的过程中,不仅仅是一个握手包的发送 和 TCP 状态的流转。还包含了端口选择,连接队列创建与处理等很多关键技术点。通过今天一篇文章,我们深度去了解了三次握手过程中内核中的这些内部操作。 全文洋洋洒洒上万字字,其实可以用一幅图总结起来。 服务器 listen 时,计算了全/半连接队列的长度,还申请了相关内存并初始化。 客户端 connect 时,把本地 socket 状态设置成了 TCP_SYN_SENT,选则一个可用的端口,发出 SYN 握手请求并启动重传定时器。 服务器响应 ack 时,会判断下接收队列是否满了,满的话可能会丢弃该请求。否则发出 synack,申请 request_sock 添加到半连接队列中,同时启动定时器。 客户端响应 synack 时,清除了 connect 时设置的重传定时器,把当前 socket 状态设置为 ESTABLISHED,开启保活计时器后发出第三次握手的 ack 确认。 服务器响应 ack 时,把对应半连接对象删除,创建了新的 sock 后加入到全连接队列中,最后.... TCP三次握手与四次挥手 tcp
#先参考我之前的一篇文章在服务器进行一个死锁的情景重现# 检测死锁的文章 查看java进程 ps -ef|grep java 针对进程id生成dump文件 jmap -dump:format=b,file=serviceDump.dat 14640 使用jvisualvm.exe对dump进行分析(如果jdk的bin目录下没有,需要自行下载) https://visualvm.github.io/index.html 修改visualvm.conf 加入JDK 路径 visualvm_jdkhome="C:/Users/JavaCoder/.jdks/corretto-1.8.0_312" 双击bin目录下的visualvm.exe打开 导入dump文件后查看死锁的线程 还有另外一种使用方式 jhat : jhat 用于分析 heapdump 文件,它会建立一个 HTTP/HTML 服务器,让用户可以在浏览器上查看分析结果 C:\Users\SnailClimb>jhat C:\Users\SnailClimb\Desktop\heap.hprof Reading from C:.... 分析linux的java进程的dump文件 java