Monkey is Sexy!


  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

一些常用的jvm问题定位、分析工具

发表于 2017-07-03   |   分类于 jvm   |  

一些常用的jvm监控和分析工具

  • JProfiler、TProfiler
  • greys、BTrace、HouseMD
  • jconsole
  • jmap、MAT
  • jstat
  • jstack、top
  • netstat
  • iostat

下面的讲述中会围绕这些工具;

阅读全文 »

一次内存泄漏问题的解决过程

发表于 2016-12-16   |   分类于 jvm , 内存泄漏   |  

一次内存泄漏问题的解决过程

本案例是针对生产系统内存泄漏的分析和解决过程。

这次生产案例的分析过程很曲折,通过这个case与大家分享下以后遇到此类问题的分析经验,也同时记录下对过程的回顾,温故而知新;

其实大家看完本文后,会发现这类问题也不是那么难解决:思路 + 合适的工具

本文涉及到的分析工具

  • jdk tools:jstat、jmap、jhat
  • MAT
  • jProfiler
阅读全文 »

httpclient ssl handshake socketTimeout bug 分析解决过程

发表于 2016-11-11   |   分类于 httpclient   |  

问题现象:

订单状态更新任务卡主,不执行了,导致bmcp订单状态无法更新,造成用户订单状态更新延迟;

肯定是线程卡主了,准备分析进程,找出是做什么操作造成的;

对进程io和gc进行分析

获取进程id

1
2
[root@payright01 ~]# ps -ef|grep payright-channel
root 22780 24809 0 11月07 ? 00:12:15 /usr/bin/java -Dfile.encoding=UTF-8 -XX:+UseParNewGC

得到进程id:22780

查看gc情况

使用jstat检查gc情况,主要看fullgc频率次数是否异常,正常

阅读全文 »

JavaScript Unit Test in RequireJs and AngularJs with Karma + Jasmine

发表于 2016-08-17   |   分类于 javascript   |  

前言

作为服务端开发人员,Java的单元测试我们都了解,但是本文我们要来探讨关于JavaScript的单元测试。

你要问我为什么突然会写前端的博文,因为公司近期安排的调研任务 – angularjs ut,其实和angularjs spa相关开发,之前也做过一段时间,对此还是有些兴趣的,毕竟无论前端后端,技术思想基本是想通的。只是前端技术这两年发展的太迅猛,有点跟不上了。

在Karma的网站上只有karma+requirejs的介绍,而我们公司是requirejs+angularjs架构的,无耐网上关于karma+requirejs+angularjs的集成介绍文档少之又少,我在把这几个组件集成测试的时候,也调试了很久才跑起来的。。。都是泪啊,所以写下这一篇,方便跟我一样的后来者。

阅读全文 »

Redis Sentinel(二)进阶

发表于 2016-08-14   |   分类于 Redis   |  

本篇来说下failover,过程比较有意思,不过为了易于理解,在说明之前,需要sentinel中这两个概念给说明一下:

  • quorum
  • 状态
阅读全文 »

Redis Sentinel(一)入门

发表于 2016-08-06   |   分类于 Redis   |  

redis sentinel (2.8.x)搭建

本来使用的是最新稳定版3.2.2,这个版本对redis的安全性方面,也做了很多改进,但是在搭建好之后,连接sentinel的时候,出现和protected-mode相关的问题,google了下没有解决,所以讲版本降低到2.8.24版本进行测试。2.8.x版本中sentinel2已经是稳定版了,所以不影响演示,等有时间了把3.2.2的那个问题给解决了,再更新。。。

入门搭建演示

好了,让我们开始吧!

阅读全文 »

某系统架构

发表于 2016-07-15   |   分类于 architecture   |  

架构图

架构图

阅读全文 »

JVM 调优

发表于 2016-07-13   |   分类于 Java   |  

内存划分

Java虚拟机规范,JVM将内存划分为:New、Tenured、Perm。其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,一般来讲:heap=Y+O,Sun推荐Y=heap*(3/8);P是额外的值,P不属于堆内存,由虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。

  • New(年轻代)
1
年轻代用来存放JVM刚分配的Java对象
  • Tenured(年老代)
1
年轻代中经过垃圾回收没有回收掉的对象将被Copy到年老代
  • 永久代(Perm)
1
2
3
永久代存放Class、Method元信息,
其大小跟项目的规模、类、方法的量有关,一般设置为128M就足够,
设置原则是预留30%的空间。
  • New(年轻代 E+S0+S1=Y)分为:
    • Eden:Eden用来存放JVM刚分配的对象
    • Survivor1
    • Survivro2:两个Survivor空间一样大,当Eden中的对象经过垃圾回收没有被回收掉时,会在两个Survivor之间来回Copy,当满足某个条件,比如Copy次数,就会被Copy到Tenured。显然,Survivor只是增加了对象在年轻代中的逗留时间,增加了被垃圾回收的可能性。
阅读全文 »

断电重启教程

发表于 2016-07-11   |   分类于 work   |  

断电重启教程

  • nginx

执行命令

1
2
3
4
5
开发/测试
nginx
验证
ps -ef|grep nginx
阅读全文 »

断点续传

发表于 2016-07-09   |   分类于 other   |  

起因

项目中遇到有通过手机App拍摄并上传视频的功能,而视频一般都比较大,当然也可以限制格式和前端大小限制解决,但是出于好奇,还是调研了下断点续传:

使用场景:

多为手机端

  1. 网络情况比较差,前端和服务器经常会断开连接;
  2. 上传文件较大;
  3. 上传文件大小未知;
阅读全文 »
12
hongliang wang

hongliang wang

11 日志
10 分类
13 标签
Github

友情链接

Elephant Me
© 2016 - 2018 Monkey is Sexy!
由 Hexo 强力驱动
主题 - NexT.Mist