最近中大招了,前一周开始偶尔在线上发现一些请求时长竟长达7秒,甚至在部分时段系统存在周期性的请求失败或者超时,各种招式都使用了还是不知道确切的原因,百思不得其解,头大的很!昨日晚上发现这个问题简直太严重了,必须要马上处理掉,一会都耽误不得,遂持续奋斗到晚上一点多,早晨7点多又跑起来搞,用各种手段来找到问题的产生规律,一直到下午1点多,才终于发现症结所在了!

应用服务上曾经出现过Load突然升高,并且伴随OOM,遂加上了一个crontab定时任务,通过jmap来检查老年代的使用情况,有到达快fullgc的点就告警出来,好立马人工来检查,上述问题倒是解决了,但是crontab任务没有取消,才有了今天的恶果!

线上服务器怎么能够出现这种低级问题呢?后悔得要命!

以下为从网上转载的一篇文章,也有提到这个,留在这里好随时提个醒!××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

转载自:http://hellojava.info/?p=328&utm_source=tuicool

JDK中带有了一堆的工具是可以用来查看运行状况,排查问题的,但对于这些工具还是要比较清楚执行后会发生什么,否则有可能会因为执行了一个命令就导致严重故障,重点讲下影响比较大的jmap。

最主要的危险操作是下面这三种:
1. jmap -dump
这个命令执行,JVM会将整个heap的信息dump写入到一个文件,heap如果比较大的话,就会导致这个过程比较耗时,并且执行的过程中为了保证dump的信息是可靠的,所以会暂停应用。

2. jmap -permstat
这个命令执行,JVM会去统计perm区的状况,这整个过程也会比较的耗时,并且同样也会暂停应用。

3. jmap -histo:live
这个命令执行,JVM会先触发gc,然后再统计信息。

上面的这三个操作都将对应用的执行产生影响,所以建议如果不是很有必要的话,不要去执行。

另外,在排查问题的时候,对于保留现场信息的操作,可以用gcore [pid]直接保留,这个的执行速度会比jmap -dump快不少,之后可以再用jmap/jstack等从core dump文件里提取相应的信息,不过这个操作建议大家先测试下,貌似在有些jdk版本上不work。

之前碰到过一次语言集的问题,我们的Java应用多数在做字符串转码的时候是没有指定编码的,编码信息主要靠启动脚本里面设置LANG来控制,但没想到在某种场景下,竟然有地方设置了LC_ALL,在之前的一篇语言集的文章中,有讲过LC_ALL的优先级是最高的,所以导致启动脚本里设置的LANG失效了,从而导致了乱码,这个Case来看,对于Java应用,还是在启动参数上指定下-Dfile.encoding比较安全一点,避免这种默认的转码依赖系统的配置,很容易踩进坑里。

jmap 几个慎用操作相关推荐

  1. 一文搞定JVM常见工具和优化策略

    目录 1. 概述篇 1.1. 背景说明 1.3. 调优概述 1.4. 性能优化的步骤 2. JVM 监控及诊断工具-命令行篇 2.1. 概述 2.2. jps:查看正在运行的 Java 进程 2.3. ...

  2. JVM下篇:性能监控与调优篇

    1. 概述篇 1.1. 大厂面试题 支付宝: 支付宝三面:JVM 性能调优都做了什么? 小米: 有做过 JVM 内存优化吗? 从 SQL.JVM.架构.数据库四个方面讲讲优化思路 蚂蚁金服: JVM ...

  3. 尚硅谷JVM下篇:性能监控与调优篇_02_JVM监控及诊断工具-命令行篇

    文章目录 1-概述 概述 简单命令行工具 2-jps:查看正在运行的Java进程 基本情况 基本语法: options参数 hostid参数 3-jstat:查看JVM统计信息 基本信息 基本语法 o ...

  4. 14、JVM监控及诊断工具-命令行篇

    文章目录 第1章.概述 1.简单命令行工具 第2章.jps:查看正在运行的Java进程 1.基本情况 2.基本语法 [1]options参数 [2]hostid参数 第3章.jstat:查看JVM统计 ...

  5. JVM-监控及诊断工具

    本文目录 命令行 jps 查看正在运行的Java进程 jstat:查看JVM统计信息 jinfo:实时查看和修改JVM配置参数 jmap:导出内存映像文件&内存使用情况 jhat:JDK自带堆 ...

  6. JVM内存监控及调优分析

    一.内存监控背景 在做JVM内存分析前,需要堆JVM内存及垃圾回收算法和垃圾回收器有一定了解,具体可以参考我之前的一篇文章:常见的垃圾回收器及垃圾回收算法 1.1.为什么要做内存监控 我们在做开发的时 ...

  7. 【测试沉思录】15. 性能测试中的系统资源分析之二:内存

    作者:马海琴 编辑:毕小烦 二. 内存 内存又称主存,是 CPU 能直接寻址的存储空间(由半导体器件制成). 内存的特点是存取速率快,断电一般不保存数据(非持久化设备).内存的作用是用于暂时存放 CP ...

  8. 关于大型网站技术演进的思考

    关于大型网站技术演进的思考(一)--存储的瓶颈(1) 前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出 ...

  9. python os.environ.setdefault_django os.environ慎用setdefault操作环境变量

    在绝大多数情况下,如果需要在程序运行过程中设置环境变量,使用os.environ.setdefault函数是没有任何问题的,但是有两种场景下setdefault会造成意外的问题,需要慎用: 如果程序执 ...

最新文章

  1. 编译安装 redis 2.2.14
  2. 企业对网站空间的抉择有可能影响着网站日常运营水平
  3. Algs4-1.4.12找出两个有序数组的公共元素-方法1
  4. Java集合:HashMap
  5. java类的修改三个方面_Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改--转载...
  6. 安卓之USB主机(Host)与配件(Accessory)模式
  7. java中为final变量赋值的几种方式
  8. symfony php 亿万,php – symfony中的内存不足错误
  9. 原来程序员成长的关键竟然是它?!
  10. msdb 数据库_如何检索有关存储在MSDB数据库中的SSIS包的信息
  11. 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService...匹配的导出...
  12. python: for循环时列表长度改变,会发生什么?
  13. c++常引用做参数可以有默认参数吗_最新Pandas.read_excel()全参数详解(案例实操,如何利用python导入excel)...
  14. HDU10月月赛总结
  15. 【纸牌识别】基于matlab形态学扑克牌识别【含Matlab源码 1352期】
  16. GPS章节要义(补充计算题)
  17. 医疗卫生行业中的领域模型
  18. 英语作文中常见的连接词
  19. 光纤中多模和单模的区别
  20. 什么是等保?等保流程又具体包含哪些内容呢?

热门文章

  1. 低端电流检测电路实测
  2. python绘图设置正交坐标等距_python – 使用cartopy在其他项目中绘制投影数据
  3. 0基础怎么学习SEO?
  4. 爱奇艺内容中台数据中心的设计与实现
  5. 解决Gitlab的The remote end hung up unexpectedly错误
  6. 实验八 Python文件处理
  7. Stimulsoft reports 2022.4.2
  8. python rasterio库和gdal库匹配与冲突问题安装办法
  9. 【转】葡萄酒的干型、半干型、半甜型、甜型是什么意思?
  10. 干货!基于元消歧的偏多标记学习