扣钉日记

23
获赞数
0
关注数
11
粉丝数
IP 属地湖北
2022-03-13 加入
浏览 8k

万般技术学不透,唯有bug伴终生!

93 声望|新手
jvm
31
linux
28
java
15
gc
14
jvm调优
14
黄金勋章
暂未获得该勋章
如何获得
白银勋章
暂未获得该勋章
如何获得
青铜勋章
暂未获得该勋章
如何获得
个人动态
  • 发布了文章2023-09-23
    使用mtrace追踪JVM堆外内存泄露
    在上篇文章中,介绍了使用tcmalloc或jemalloc定位native内存泄露的方法,但使用这个方法相当于更换了原生内存分配器,以至于使用时会有一些顾虑。
  • 发布了文章2023-08-26
    一次Java内存占用高的排查案例,解释了我对内存问题的所有疑问
    7月25号,我们一服务的内存占用较高,约13G,容器总内存16G,占用约85%,触发了内存报警(阈值85%),而我们是按容器内存60%(9.6G)的比例配置的JVM堆内存。看了下其它服务,同样的堆内存配置,它们内存占用约70%~79%,此服务比其它服务内存占用稍大。 那为什么此服务内...
  • 发布了文章2023-07-23
    Java服务刚启动时,一小波接口超时排查全过程
    我们组有一个流量较大的Java服务,每次发代码时,服务都会有一小波接口超时,之前简单分析过,发现这些超时的case仅发生在服务刚启动时,少量请求会耗时好几秒,但之后又马上恢复正常。
  • 发布了文章2023-06-17
    分享6个SQL小技巧
    经常有小哥发出疑问,SQL还能这么写?我经常笑着回应,SQL确实可以这么写。其实SQL学起来简单,用起来也简单,但它还是能写出很多变化,这些变化读懂它不难,但要自己Get到这些变化,可能需要想一会或在网上找一会。
  • 发布了文章2023-04-21
    java获取到heapdump文件后,如何快速分析?
    在之前的OOM问题复盘之后,本周,又一Java服务出现了内存问题,这次问题不严重,只会触发堆内存占用高报警,没有触发OOM,但好在之前的复盘中总结了dump脚本,会在堆占用高时自动执行jstack与jmap,使得我们成功保留了问题现场。
  • 发布了文章2023-04-16
    jmap执行失败了,怎么获取heapdump?
    但当我反复模拟OOM场景测试时,发现jmap有时可以dump成功,有时会报错,如下: 经过网上一顿搜索,发现两种原因可能导致这个问题,一是执行jmap用户与jvm进程用户不一致,二是/tmp/.java_pidXXX文件被删除,但经过检查,这都不是我们jmap失败的原因。
  • 发布了文章2023-04-01
    一次线上OOM问题的个人复盘
    上个月,我们一个java服务上线后,偶尔会发生内存OOM(Out Of Memory)问题,但由于OOM导致服务不响应请求,健康检查多次不通过,最后部署平台kill了java进程,这导致定位这次OOM问题也变得困难起来。
  • 发布了文章2023-03-25
    传参base64时的+号变空格问题
    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明。问题发生上上周,看到一位老哥找我们组同事联调接口,不知道是什么问题,两人坐一起搞了快1个小时,看起来好像有点复杂。 突然,老哥发出一声卧槽,"我传参里的+号,到你这怎么变成了...
  • 发布了文章2023-03-18
    由x-www-form-urlencoded引发的接口对接失败
    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明。问题发生这周正在写代码,突然,旁边小哥问我个问题...小哥:我这有个接口,自己调用没有问题,但别人调用就不行,这种问题该如何排查?我:抓下包看看呢...小哥:是这样使用tcpdump吗...
  • 发布了文章2023-03-04
    在Linux上查看活跃线程数与连接数
    现如今,有两种常见的软件资源几乎成了Java后端程序的标配,即线程池与连接池,但这些池化资源非常的重要,一旦不够用了,就会导致程序阻塞、性能低下,所以有时我们需要看看它们的使用情况,以判断这里是否是瓶颈。
  • 发布了文章2023-02-25
    我有一篇Java Stream使用手册,学了就是你的了!
    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明。简介日常编程工作中,Java集合会经常被使用到,且经常需要对集合做一些类似过滤、排序、对象转换之类的操作。 为了简化这类操作,Java8添加了一套新的Stream API,使用方式就像写SQL一...
  • 发布了文章2023-02-04
    记一次使用gdb诊断gc问题全过程
    上次解决了GC长耗时问题后,系统果然平稳了许多,这是之前的文章《GC耗时高,原因竟是服务流量小?》 然而,过了一段时间,我检查GC日志时,又发现了一个GC问题,如下: 从这个图中可以发现,我们GC有一些尖峰,有时会突然有大量的内存分配。
  • 发布了文章2023-01-16
    请求量突增一下,系统有效QPS为何下降很多?
    最近我观察到一个现象,当服务的请求量突发的增长一下时,服务的有效QPS会下降很多,有时甚至会降到0,这种现象网上也偶有提到,但少有解释得清楚的,所以这里来分享一下问题成因及解决方案。
  • 发布了文章2023-01-07
    GC耗时高,原因竟是服务流量小?
    我们系统分多个环境部署,出现GC长耗时的是俄罗斯环境,其它环境没有这个问题,这里比较奇怪的是,俄罗斯环境是流量最低的一个环境,而且大多数GC长耗时发生在深夜。
  • 发布了文章2022-11-12
    Java8中那些方便又实用的Map函数
    比如,很多时候我们需要对数据进行分组,变成Map<Integer, List<?>>的形式,在java8之前,一般如下实现:
  • 发布了文章2022-11-06
    Optional用法与争议点
    要说Java中什么异常最容易出现,我想NullPointerException一定当仁不让,为了解决这种null值判断问题,Java8中提供了一个新的工具类Optional,用于提示程序员注意null值,并在特定场景中简化代码逻辑。
  • 发布了文章2022-10-29
    如何kill一条TCP连接?
    如果你的程序写得有毛病,打开了很多TCP连接,但一直没有关闭,即常见的连接泄露场景,你可能想要在排查问题的过程中,先临时kill一波泄露的连接。 又比如你要验证程序在遇到网络错误时的自愈能力,想手动kill掉一些正常TCP连接,看程序是否能自动重连并恢复运行。
  • 发布了文章2022-10-22
    Java实现7种常见密码算法
    前面在密码学入门一文中讲解了各种常见的密码学概念、算法与运用场景,但没有介绍过代码,因此,为作补充,这一篇将会介绍使用Java语言如何实现使用这些算法,并介绍一下使用过程中可能遇到的坑。
  • 发布了文章2022-09-17
    tar、gzip、zip、jar是什么,怎么查看?
    如果你是后端程序员,我想你一定见过*.tar.gz、*.zip、*.jar后缀的文件吧,这些都是压缩文件,那这些文件都是怎么生成的,又有哪些关键区别呢?本文将带你一起了解这些文件和配套的操作命令,以及其经常使用的场景。
  • 发布了文章2022-09-11
    异或的4种堪称神奇的运用场景
    众所周知,编程语言一般都内置了3种位运算符&(AND)、|(OR)、~(NOT),用来实现位运算,但其实还有一种非常常用的位运算,即异或^(XOR),数学中常用⊕表示。