“雁过留声,人过留痕” 服务异常停止如何排查

发布于:2016-12-18 19:20 作者:losetowin 浏览:1092 分类:技术



题图:来自花瓣

场景

   某个java服务运行于线上,突然某天异常停止了,该如何排查?

分析

服务异常终止的原因有很多,比如内存溢出,但进程一旦消失之后,想查找问题便很难,难在没有现场了。这时候,我们原本采用的一些手段比如jmap、jstack等在这里便用不上了。想确认是哪段代码导致内存溢出便很难了。

本文仅描述由于内存溢出导致进程突然...

阅读全文>>

标签: jvm参数

0

一致性哈希-数据迁移

发布于:2016-12-12 19:02 作者:losetowin 浏览:1729 分类:技术
当缓存集群增加节点之后,如果直接将流量迁移到新节点,此时新节点上没有数据,这时候落到新节点上的数据读请求便会出现数据读取不到的情况,假若缓存的数据逻辑复杂,则可能会出现短暂性的服务响应慢的情况(因为需要重新计算数据,写入缓存),所以这种情况下,适合对数据做迁移之后再将读取流量迁移到新节点。
那该如何做到平滑的迁移呢?
以下方案,未经过实际操作,仅是自己思路,仅供参考。
...

阅读全文>>

标签: 一致性哈希

0

一致性Hash代码实现

发布于:2016-12-6 14:26 作者:losetowin 浏览:1101 分类:技术

场景


上篇文章介绍到的《一致性hash算法(概念)》后台回复“一致性hash”即可得到链接,附上代码实现及另外一种问题的解决办法。

代码实现

代码就在这里了~~代码有点长,不贴代码了,附上github的地址:

可以直接到:https://github.com/losetowin/learnning (在此下的learning/com.dutycode...

阅读全文>>

标签: 一致性哈希

0

一致性Hash的介绍

发布于:2016-11-27 22:37 作者:losetowin 浏览:1408 分类:Java

场景


单个节点的缓存容量达到上限,无法继续单点增加内存,如何解决?

单个节点支撑的QPS达到上限,如何解决? 

初步方案

增加N个缓存节点,为了保证缓存数据的均匀,一般情况会采用对key值hash,然后取模的方式,然后根据结果,确认数据落到哪台节点上:如下:

hash(key)%N 

很好,这个的确解决了上面的问题,实现了初...

阅读全文>>

标签: 一致性哈希

0

锁的公平和非公平

发布于:2016-11-20 20:39 作者:losetowin 浏览:2195 分类:Java
简单介绍

在锁的获取上,存在一个公平性和不公平性的问题,所谓的公平是指,在一段时间内,先对锁发起获取请求的一定被先满足。或者可以理解成期望获取锁的线程是一个先进先出的队列,等待时间最久的线程最优先获取到锁。而非公平是指,获取锁的顺序并不是有序的,可以随时插队。就好比都在排队检票,突然来了一个人说他的火车马上就要开车了,想插在你前面检票进站,这时候你就有可能仁慈了,把位置让他插入了。 这时...

阅读全文>>

【设计模式】模板方法模式

发布于:2016-11-2 22:56 作者:losetowin 浏览:1135 分类:Java
定义

定义一个操作中算法的框架,将一些步骤延迟到子类。使得子类可以不改变一个算法的结构,即可重定义该算法的某些步骤。
或者可以描述成:
定义一个算法的骨架,将一些实现步骤延迟到子类。不变的行为放到超类中,去除掉子类中的重复代码。

UML图

QQ20161102-0.png

使用场景

多个子类有公共的方法,并且逻辑基本相同时。
重...

阅读全文>>

nginx超时重试机制及潜在的坑

发布于:2016-9-22 23:49 作者:losetowin 浏览:8541 分类:技术
问题描述:
有一个发送短信的http服务,客户端调用之后,只有一次请求,但是发了三次短信。

分析看:
     1、客户端仅发起了一次请求,
     2、服务端收到了三次请求
     3、三次请求分别落在了三台后端机器上。每台后端机器仅收到一次请求

基本的架构如...

阅读全文>>

标签: nginx 重发

0

慢查询导致整个服务不可用的预防及解决办法

发布于:2016-9-20 20:12 作者:losetowin 浏览:1271 分类:技术
现象:
DB层服务短时间内涌入大量的慢查询,并且查询的数据量比较大(2000w+,查询字段未添加索引)导致服务不可用,出现mysql查询超时现象
3ABA9400-D312-4310-805C-12797889ECF0.png

分析:
数据库操作时误将查询条件的字段的索引去掉了,导致原有的查询效率降低,产生慢查询。

解决:
对相应字段添加索引,慢查询消失,超时现象消失。

反思:
1、突然出现的慢查询导致服务不可用这种事情该如何避免?
 ...

阅读全文>>

做好监控,不做盲人

发布于:2016-7-9 20:48 作者:losetowin 浏览:1589 

1. 为什么要做监控

“不要让自己成为最后一个知道系统出现问题”

不管在大公司还是小公司里面,在线上运行的项目不止一个,一个人可能同时需要维护多个新老系统,并且可能还有新的项目需求,所以不可能这个人去隔三差五的到服务器上看下服务是否正常。一方面,反馈不及时。另外一方面,没有这么多的精力去做这件事情,而且项目多的时候,精力就更不够了。

这时候,监控就相当于自己的眼睛,能够帮自己及时发现系统中的问题,及时解...

阅读全文>>

标签: 监控

0

关于Java中Daemon线程

发布于:2016-6-22 23:18 作者:losetowin 浏览:1405 分类:Java
  1. 什么是daemon线程?
    也可以称为守护线程,是一种支持性线程,主要用于程序中的后台调度及支持性工作
  2. 主要用在什么地方? 
    比如垃圾回收就算一种守护线程
  3. 需要注意什么?
    1). 因为是守护线程,或者说是支持性线程,就意味着这个线程并不属于程序中不可或缺的一部分。所以当所有的非守护线程(即用户线程)结束之后,程序就会结束,JVM退出,同时也就会杀死所有的非守护线程(可以参见J...

阅读全文>>

标签: java daemon

0

1 2 3 4 5 6 7 8 ... »