当前位置: 首页 > news >正文

【大白话说Java面试题 第67题】【JVM篇】第27题:生产环境服务器变慢,诊断思路和性能评估谈谈?

觉得对您有帮助麻烦点点关注啦您的关注是我创作的最大动力~ 第27题生产环境服务器变慢诊断思路和性能评估谈谈回答核心考点大厂面试要求具备系统性的故障诊断能力从硬件→OS→JVM→应用→中间件逐层下钻并能用具体命令和工具定位根因。不能只说“查日志看CPU”。1. 标准诊断流程三板斧步骤目标核心命令/工具输出解读1. 系统概览CPU/内存/IO/网络谁最紧张top/htop/vmstat 1/iostat -x 1/sar -n DEV 1定位瓶颈维度2. 进程定位哪个Java进程有问题top -p PID/ps aux | grep javaPID及CPU/内存占比3. JVM内部分析GC/线程/堆/元空间jstat -gcutil PID 1000/jstack PID/jmap -histo PIDGC频率、线程阻塞、对象分布2. 系统层面第一反应命令1top/htop看%CPU过高 → CPU密集计算 / 频繁GC / 死循环看%MEM过高 → 堆内存不足 / 内存泄漏看load average CPU核数 说明有线程排队命令2vmstat 1procs r运行队列 CPU核数 → CPU不够swap si/so0 → 物理内存不足正在换页cpu wa10% → 磁盘I/O瓶颈命令3iostat -x 1%util接近100% → 磁盘繁忙await20ms → 磁盘响应慢可能是随机读多或磁盘性能差命令4free -havailable接近0 → 物理内存不足命令5sar -n DEV 1rxkB/s / txkB/s带宽打满%ifutil接近100% → 网络I/O瓶颈3. JVM层面定位Java进程后3.1 GC问题最常见# 每1秒打印GC统计看CPU time和GC次数jstat-gcutilPID1000# 输出解读# S0/S1/E/O/M 使用率如果O老年代持续90%且不降 → 内存泄漏/堆太小# YGC / YGCT → Young GC次数/总耗时频繁 5次/秒 → Eden太小# FGC / FGCT → Full GC次数/总耗时1次/分钟 → 严重典型案例FGC频繁但老年代占用不高 → 元空间触发Full GC-XX:MetaspaceSize太小FGC频繁 老年代占满 → 堆内存泄漏或峰值3.2 线程问题死锁/阻塞# 打印线程栈重点关注 BLOCKED / WAITING 状态jstackPIDthread.dump# 快速统计线程状态grep-Ejava.lang.Thread.Statethread.dump|sort|uniq-c# 死锁检测jstack输出末尾会有 Found one Java-level deadlock常见模式大量WAITING (parking)→ 线程池空转或阻塞在锁上大量RUNNABLE且CPU低 → 可能是I/O阻塞网络/磁盘3.3 内存分布保守使用会STW# 查看存活对象分布生产谨慎会暂停应用jmap-histo:livePID|head-50# 如果某自定义类实例数异常多 → 内存泄漏点3.4 堆外内存NIO/DirectBuffer# 查看直接内存使用JDK 8u40jdk/bin/jcmdPIDVM.native_memory summary|grep-EDirect|Internal4. 应用层面根据业务特征4.1 热点代码定位工具适用场景命令Arthas阿里开源在线方法级分析不重启trace 类名 方法名/monitor/watchasync-profilerCPU/内存火焰图./profiler.sh -d 30 -f flamegraph.html PIDVisualVM开发/测试环境连接JMX看Sampler4.2 数据库瓶颈开启慢查询日志slow_query_log1long_query_time2使用EXPLAIN分析SQL关注typeALL全表扫描和ExtraUsing filesort查看数据库连接池状态如HikariCP的active/idle连接数4.3 外部依赖/中间件检查Redis/MySQL/MQ的响应时间业务日志中打印调用耗时用ping/telnet检查网络延迟用tcpdump抓包分析深层问题5. 完整诊断案例模拟场景用户反馈接口P99从50ms飙升到5秒。步骤top→ 发现某个Java进程CPU 300%4核机器top -H -p PID→ 找到CPU最高的线程ID如 0x7f3aprintf %x\n 0x7f3a→ 转十六进制7f3ajstack PID | grep -A 20 7f3a→ 看到线程堆栈在java.util.regex.Pattern.compile定位到代码循环内用Pattern.compile创建正则应改为静态常量修复提升P99到100ms。6. 性能评估指标面试必背维度核心指标正常范围告警阈值CPU系统用户等待75% 核均90% 持续5分钟内存可用内存20%10%GCYGC次数/秒3次/秒10次/秒GCFGC次数/小时0次1次/小时GCGC总耗时占比5%10%线程阻塞/等待线程数10% 总线程30%磁盘%util await%util70%, await10ms%util90%网络丢包率/重传率0.01%0.1%7. 面试官追问示例Q1CPU高但GC次数不多如何定位A用top -H -p PID找线程ID →printf %x转十六进制 →jstack PID | grep 十六进制定位代码行。常见原因死循环、正则编译、序列化/反序列化、日志打印如toString中循环。Q2GC正常但接口慢怎么查A可能原因数据库慢查看连接池活跃连接数、慢日志外部依赖超时检查RestTemplate/Feign超时配置锁竞争jstack找 BLOCKED 线程CPU被其他进程占用top看%st虚拟机偷取Q3生产环境不让用jmap怎么办A用jstat -gcutil看趋势用-XX:HeapDumpOnOutOfMemoryError被动dump或用 Arthas 的heapdump命令不暂停。Q4服务器load高但CPU低什么原因A典型I/O瓶颈磁盘、网络。进程在等待I/O大量线程处于UNINTERRUPTIBLE状态D状态vmstat会看到procs b0。Q5如何评估系统最大并发能力A压测JMeter/Locust观察拐点CPU达到80%RT响应时间突然飙升错误率 1%GC时间占比 10%面试官想要的满分总结“生产变慢我会按照系统资源 → 进程 → JVM → 应用代码逐层下钻。系统层用top/vmstat/iostat找出CPU/内存/IO瓶颈JVM层用jstat -gcutil看GC频率jstack看线程状态必要时用jmap或 Arthas 看对象分布应用层用 Arthastrace或火焰图定位热点代码。核心是不靠猜测用数据说话。线上变更需先压测获取基线指标TPS、RT、GC占比变慢时可对比基线快速定位差异。”觉得对您有帮助麻烦点点关注啦您的关注是我创作的最大动力~
http://www.zskr.cn/news/1340340.html

相关文章:

  • C语言文件操作入门,零基础轻松学会
  • 使用 Faster R-CNN 训练目标检测模型
  • 2026年涿州好看门头牌匾源头服务商推荐,怡高广告本地实力团队亲测
  • 抖音视频怎么保存到相册?抖音视频怎么下载保存到手机?2026无水印保存全方法实测对比 - 资讯纵览
  • 安卓手机屏幕共享困难?这个免费开源方案让你轻松实现跨设备画面传输 [特殊字符][特殊字符]
  • HS2汉化补丁终极指南:轻松实现Honey Select 2中文界面
  • 番茄小说下载器终极指南:三步打造你的私人数字图书馆
  • 观察使用Taotoken聚合API后每月账单的清晰度与可追溯性
  • 技术深度解析:CUDA 内核向 OpenCL 无缝迁移实战(OpenCL-Aware 重写指南)
  • 【普中 51-Ai8051 开发攻略】-- 第 31 章 IAP EEPROM 实验
  • AMD Ryzen调试神器:SMUDebugTool完整使用指南,轻松掌控处理器性能
  • 【本地部署】告别高昂 API 费用:使用 Ollama 本地部署视觉模型(LlaVA/Qwen-VL)实战
  • 南昌购宠避坑指南:5 家靠谱实体门店实测推荐 - 资讯纵览
  • Redis 实现限流功能的几种方法
  • 江苏储能电池箱定制企业排行 品质保障实力盘点 - 奔跑123
  • Prometheus标签操作实战:从label_replace到group_left,搞定K8s监控数据关联与聚合
  • 从恶意软件分析到CTF解题:Capstone反汇编框架的5个实战应用场景与Python绑定使用指南
  • AI入门该选什么语言?Python仍是最低成本答案
  • FT62F28X芯片烧录全记录:从FMD IDE固件升级到接线避坑指南
  • GPT-3.5和GPT-4写Prompt,差别到底在哪?
  • 健身房私教管理系统 (三):巧妙利用分步表单,解耦 1+N 模型的双表连续写入
  • 苏州晟雅泰电子:关于铠侠芯片物料THGJFGT0T25BAB8的解析及应用领域
  • 今日算法(构造二叉搜索树)
  • 如何快速清理电脑中的重复图片:AntiDupl智能去重工具完全指南
  • 视觉驱动跨平台UI自动化框架:Midscene.js的技术架构与实现原理
  • 手把手教你用vulkaninfo和ldd命令,精准定位Ubuntu下UE游戏Vulkan启动失败的根本原因
  • 2026电梯物联网大数据机构排行榜高频疑问全解答 - 资讯纵览
  • 临近毕业降AI率保姆级教程:嘎嘎降3分钟,知网AI率5%以下 - 我要发一区
  • 启XX辰-头部安全公司面试提问
  • STM32CubeMX 6.14版本保姆级安装教程:从下载到环境变量配置,一次搞定中文乱码