记一次JVM调优

1 篇文章 0 订阅
转载请标明出处:
原文首发于: http://www.zhangruibin.com
本文出自 RebornChang的博客

厚颜打广告,博主个人博客地址传送门 ,欢迎来访

老惯例,先说下场景:

  • 博主的博客打出来的包是jar包,然后使用的同一主机上部署的数据库,主机上安装了JRE,具备运行jar包的环境。
    那么问题来了:
  1. 直接使用java -jar xxxx.jar 启动jar包之后,退出来shell,jar包就停止了运行。
    那么这个问题怎么解决?不可能电脑一直在运行啊,还一直开着那个shell的窗口,这时候就出现了nohup这个命令,jar包的启动方式变为了nohup java -jar xxxx.jar ,使用这样的方式进行启动的话,会在jar包的目录下产生一个nohup.out文件,这个文件保存的是运行打印的东西,可以使用cat等命令进行内容的查看,文件的增量较大。
  2. 运行了jar包工程之后,使用域名对博客访问很慢,什么原因?有什么优化方案吗?在主机上安装了APPNODE对主机运行环境进行检测,可以看到在系统具有三个进程的时候,主机就已经处于高负载状态了,但是此时的内存使用率还不足10%,存储占有量也不足10%,主机带宽是百兆带宽,最重要的一点,此时在Windows下ping主机,报文发送和接收速度处于较快水平,那这么说来就不是主机访问的问题了,也就是说,访问zhangruibin.com解析的IP访问这步不会影响访问效率,那就只能是jar包所运行的独立环境,也就是JVM环境有问题,壳子太小,那就扩展壳子吧,也就是在启动jar包的时候设定jvm参数:-Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m(注:设定的参数值大小,根据自身实际情况进行分配,博主的主机是2G内存,上面就跑了个博客jar包和一点其他的不占内存的东西,所以直接分配512m也没心理压力)这时候的启动jar包的命令就成了:nohup java -jar -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m -jar xxxx.jar 这时候再启动访问项目就处于正常水平了。
  3. 访问的时候发现静态资源(图片)加载的时间较长,因为图片都是未经压缩的五码大图,那么这方面的优化就要因人而异的,可以选择把图片这些静态资源放在云服务器上,比如七牛云(PS:七牛云需要手持身份证照片进行认证,所以我就没用啦),或者自己搭一个FTP服务器,然后使用nginx就行实现直接链接形式访问啦,只要你网速够快,就可以秒开。

综上所述:以上所谓JVM调优纯属皮毛,真正的调优方式如下:

  1. 先使用jconsole之类的工具对正在运行的项目进行监控,查看项目的线程运行数和堆栈内存使用量,具体的jconsole使用方法,可以参考这个链接,博主这里就不多做赘述了:jconsole使用方法

  2. 根据系统GC来根据公式对设定的参数进行工式换算,这在网上也是有资源的,博主这里推荐一个:https://www.cnblogs.com/yang-hao/p/5939487.html
    这个博主写的还是比较全面的,所以我就不在这里献丑啦。

JVM调优,看起来很是神秘,也比较高大上,但是,入门之后你会感觉就那样,就是根据系统情况分配jvm内存。
然而…知道怎么设置jvm参数大小容易,设置出能让系统运行的参数也容易,难的是,这几个值的大小,设置为多少才是最合适的,即能尽可能少的占用系统内存,又能最大程度上近乎完美的运行项目,这就需要做一些知识的累积了,比如多项目的各部分的理解了解,并发量的承受力,系统内存占用分配,系统GC日志等等.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值