一些常用的jvm监控和分析工具
- JProfiler、TProfiler
- greys、BTrace、HouseMD
- jconsole
- jmap、MAT
- jstat
- jstack、top
- netstat
- iostat
下面的讲述中会围绕这些工具;
下面的讲述中会围绕这些工具;
本案例是针对生产系统内存泄漏的分析和解决过程。
这次生产案例的分析过程很曲折,通过这个case与大家分享下以后遇到此类问题的分析经验,也同时记录下对过程的回顾,温故而知新;
其实大家看完本文后,会发现这类问题也不是那么难解决:思路 + 合适的工具
订单状态更新任务卡主,不执行了,导致bmcp订单状态无法更新,造成用户订单状态更新延迟;
肯定是线程卡主了,准备分析进程,找出是做什么操作造成的;
|
|
得到进程id:22780
使用jstat检查gc情况,主要看fullgc频率次数是否异常,正常
作为服务端开发人员,Java的单元测试我们都了解,但是本文我们要来探讨关于JavaScript的单元测试。
你要问我为什么突然会写前端的博文,因为公司近期安排的调研任务 – angularjs ut,其实和angularjs spa相关开发,之前也做过一段时间,对此还是有些兴趣的,毕竟无论前端后端,技术思想基本是想通的。只是前端技术这两年发展的太迅猛,有点跟不上了。
在Karma的网站上只有karma+requirejs的介绍,而我们公司是requirejs+angularjs架构的,无耐网上关于karma+requirejs+angularjs的集成介绍文档少之又少,我在把这几个组件集成测试的时候,也调试了很久才跑起来的。。。都是泪啊,所以写下这一篇,方便跟我一样的后来者。
本来使用的是最新稳定版3.2.2,这个版本对redis的安全性方面,也做了很多改进,但是在搭建好之后,连接sentinel的时候,出现和protected-mode相关的问题,google了下没有解决,所以讲版本降低到2.8.24版本进行测试。2.8.x版本中sentinel2已经是稳定版了,所以不影响演示,等有时间了把3.2.2的那个问题给解决了,再更新。。。
好了,让我们开始吧!
Java虚拟机规范,JVM将内存划分为:New、Tenured、Perm。其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,一般来讲:heap=Y+O,Sun推荐Y=heap*(3/8);P是额外的值,P不属于堆内存,由虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。
|
|
|
|
|
|
E+S0+S1=Y
)分为:项目中遇到有通过手机App拍摄并上传视频的功能,而视频一般都比较大,当然也可以限制格式和前端大小限制解决,但是出于好奇,还是调研了下断点续传:
多为手机端