转载

它,其实是一款免费的有情怀的 JVM 产品,推荐给大家

缘起JVMPocket

早在阿里的时候,我曾利用业余时间做了一款叫做的小程序,这个小程序主要给大家提供了一种JVM参数查询的能力,如果你对某个JVM参数有疑惑,不知道什么意思,怎么使用,有没有什么坑,大家都有什么建议,那可以通过JVMPocket基本能拿到你想要的结果。当初做这个小程序纯粹是希望把自己的一些对参数的使用经验记录下来,大家可以复用我的一些经验,每次有人问我某个具体的参数的时候,只需要转发一个链接过去即可,而不是每次都需要我再次去解释。

它,其实是一款免费的有情怀的 JVM 产品,推荐给大家

为了让传播知识的过程变得更有意思,我甚至组建了一些JVM交流的微信和QQ群(有兴趣的可以加我微信 han_quanzi 拉你入群),在小程序里还提供了每日签到的功能,让群里的小伙伴坚持签到,当签到达到每天设定的人数的时候,我将会在群里做一次分享,主要就是针对JVM参数经验的分享,有了小程序,这个过程变得更有意思了。我希望让群里的小伙伴知道做任何事其实都不是不劳而获的,需要去想,去付出,才最终如你所愿获得你想要的东西,通过自己努力获得的东西自己才会更加深刻,那段时间确实效果还是达到了的,群的活跃度有40%以上,再此感谢那段时间一路陪我玩的群里小伙伴们。

然而JVMPocket毕竟是针对某个局部参数的,如果我们系统上配置的一整套JVM参数存在问题,这些问题如何能快速定位,说白了就是没有一个全局的视角,于是我在想是否可以做个类似的产品给大家一些帮助。

JVM参数是刚需吗

前段时间拜访了一些国内比较大的互联网公司,问了他们的一些情况,他们很多线上系统其实都是JVM参数裸跑的,也就是根本不设置JVM参数,顶多设置下内存大小,也就是Xmx,究竟JVM参数有没有问题根本不知道,GC日志也不打开,是否存在频繁GC,STW时间到底长不长这些问题都不得而知,这些东西严重点甚至会影响整个应用的吞吐量及RT等,当系统性能不行的时候,想着重启或者扩容是万能的,而没有对JVM参数进行关注。

因此JVM参数对很多企业来说不认为是刚需,甚至都不知道参数的存在,更不用谈刚需了。

然而我希望能纠正大家对这块的认识,首先让大家认识到JVM参数的存在,接着知道JVM参数的重要性,最后懂得自己系统的JVM参数到底对自己系统的性能影响有多大,该怎么调整。

对于很多系统而言,如果系统一年下来不会有很大变化,确实JVM参数也不用经常变化,因此参数做过一次优化之后,可以撑很久,从这种意义上来说,JVM参数调优确实也不是刚需。不过我个人对JVM有着一种独特的情怀,因为它带给了我很多不一样的东西,我希望能为这个社区更美好献上一份心意,因此我们公司天然带着一些JVM的味道,我也希望我们未来的一些产品也带着这个味道一直走下去。JVM参数调优哪怕一个系统一年只要调一次,我们的产品能帮到那一次我觉得也是值得的。

JVM参数调优

于是我们开始构思一个有情怀的JVM参数调优的产品,把我能想到的场景全部想了一遍,JVM参数要玩出花来其实挺难,但是我只是希望它能给到大家想要的就好,对JVM参数感兴趣的同学对这些参数有更多的了解,不太关注JVM参数的同学,可以直接拿到优化的结果,把关注点挪到自己更关注的事情上面去,出于这些考虑,于是我设计了这块的产品的功能:

  • 参数查询:类似JVMPocket,当我们提供一个JVM参数列表的时候,我们可以针对每个参数给出足够的内容让你更好地了解这个参数,包括参数的含义,默认值,用法,建议以及大家的踩坑经验等,欢迎大家去贡献自己的经验。

  • 参数检查:首先希望能简化我们的参数列表,让每个参数都变得独立而有意义,其次针对参数用法层面的检查,比如明明是一个boolean值,你却不是boolean的用法等

  • 参数变迁:我们经常会碰到系统迁移到新的配置的环境,或者JDK版本会进行一些升级,那在新的环境我们原来的JVM参数应该怎么去变化,我们会给出一些常见的建议

  • 参数优化:脱离环境的参数优化都是耍流氓,于是针对特定的环境,特定的参数列表,我们综合考虑给出一个优化后的参数列表,以及给出一些建议,这个优化程度会比参数检查更深点,比如某些参数必须依赖另外一些参数等,或者说不能有些参数无法共存等,当然还有其他的一些经验性的建议。

  • 参数生成:新的系统很多人不知道怎么配置JVM参数,我们会根据大家提供的环境提供一个建议的参数列表,当然这个参数列表不一定是最优的,后期可以根据运行的情况进行不断调整优化

上面基本是能想到的JVM参数静态优化方面的全部能力了,你还有什么建议吗?当然我们无法保证我们的经验一定适合所有的场景,同时还有很多经验没有考虑到的,欢迎给我们留言提建议。

我们还正在研发根据运行时GC情况动态调整JVM参数,给出真正适应你系统的新参数列表,这个相对来说比较有挑战一些,需要对GC有足够的了解,另外GC日志五花八门,不同版本的格式还不一定一样,因此这个功能出来会让我们这个产品完全升华,大家期待这个功能吗?如果你对JVM的这些产品很感兴趣,欢迎加入我们一起来完善和创造那些产品,如果贵公司被一些JVM性能问题困扰也可以联系我。

搭载上述这些能力的产品,前几篇文章我也提到了,就是XXFox(一只懂JVM参数的狐狸),大家可以通过http://xxfox.perfma.com(也可以通过点击下面的阅读原文直接访问)来体验我们的产品。

它,其实是一款免费的有情怀的 JVM 产品,推荐给大家

XXFox的建议靠谱吗

我在实现这块产品的时候主要从两方面考虑的,一是来自于JVM源码,另外一个是自己平时的经验,我个人觉得这块不能保证所有场景都考虑了,如果你还有我们没有考虑到的地方,或者更好的一些建议可以加我微信 han_quanzi 发送给我,我们一起完善它,如果你觉得好用,麻烦帮忙分享给你身边的朋友,感谢。

它,其实是一款免费的有情怀的 JVM 产品,推荐给大家

原文  http://mp.weixin.qq.com/s/1E5g6PolS4MIWtRQyqcFfQ
正文到此结束
Loading...