分类 有趣的 bug 下的文章

诊断由于 blocking socket 未设置 socket timeout 而引起的线程卡住( thread stuck)

Java 既有早期的 blocking IO (面向流的Input/output stream, 面向字符的 Reader/Writer), 又有之后加入的 NIO/ NIO 2 (Channel & Buffer). 很多应用都是使用的 早期的 blocking 的 IO. 不论是 blocking IO 还是 NIO 都要注意 socket timeout 问题, 如果不设置, 都会引起应用卡在 IO 的问题.

- 阅读剩余部分 -

诊断运行时 java.lang.NoClassDefFoundError

一般看到 java.lang.NoClassDefFoundError 时, 下一步的操作很明确: 去看看这个类为什么不存在? 不在编译路径上? 这个类文件被损坏? 真的缺少这个类? 或者缺少包含这个类的包? 基本按照这个思路都能找到解决方法. 今天遇到这个情况是, 明明这个类完好无损的就在那里, 却始终抛出这个错误.

- 阅读剩余部分 -

SRE重案调查组 第六集 | 剖析Java的非常规线程死锁问题

这是本人发表在 eBay 微信公众号 eBay技术荟 上的 一系列文章, 原文地址如下. 编辑非常给力, 请查看原文, 这里只是供搜索引擎访问.
https://mp.weixin.qq.com/s/r__X4sYj6PLjPDWDulJAAw

如果原文由于某种原因不存在了, 请查看这个pdf 版本: SRE重案调查组 第六集 | 剖析Java的非常规线程死锁问题

导读

本文将分享eBay SRE部门遇到的某个非常规Java应用程序死锁问题。SRE侦探们将从最表象的问题入手,逐步分析,并重现代码,提出该类问题的解决方案,最后总结Java常规及非常规死锁问题的分析及定位,希望能对同业人员有所启发。

- 阅读剩余部分 -

SRE重案调查组 第五集 | 为什么我的服务器又双叒不响应了?!

这是本人发表在 eBay 微信公众号 eBay技术荟 上的 一系列文章, 原文地址如下. 编辑非常给力, 请查看原文, 这里只是供搜索引擎访问.
https://mp.weixin.qq.com/s/-CTHVLxgzTn79vOqEe_CQQ

如果原文由于某种原因不存在了, 请查看这个pdf 版本:SRE重案调查组 第五集 | 为什么我的服务器又双叒不响应了?!.pdf

导读

在SRE的日常工作中,经常会碰到很多典型问题。其中一种便是:为什么我的服务器不响应了? 

原因可能是服务器软件或硬件损坏,应用程序未启动,网络防火墙,服务器配置等基本的环境问题,也有可能是与应用程序关联比较紧密的代码问题。后者不易发现,又或是长期累积的结果,查起来不像环境问题那么直接。这里列举几个发生在生产环境的真实案例,希望对大家诊断类似的问题有所启发。

- 阅读剩余部分 -