getaddrinfo探秘

在现在流行的服务化调用场景中,为了避免服务的单点问题,会将服务部署成一个集群,然后利用服务注册中心来解决服务发现问题。

为了解决服务注册中心的单点问题,有时候会选择古老的dns轮询。

通过将一个域名关联多条A记录,利用域名服务器每次的不同返回,达到软负载的效果。

关于jdk的dns解析,网上有很多文章介绍,有对的地方也有错的。

一次StringIntern和ParNew GC

前段时间,同事遇到Java的GC问题,现象表现为:gc时间越来越长(也包括young gc);触发一次full gc之后,会变得好点,但是这次full gc长的不能忍受。他们使用的jdk 8,应用内存8G,尝试调整了很多参数,用了ParNew算法,也试过G1算法,都没有太大好转。困扰很久之后找我帮忙看一下,所以也就有了这篇文章^_^

GC对于我们来说相对黑盒,尤其是young gc的问题,幸运的是这次解决非常快且没依赖Google。对我而言,主要是解决问题过程中的思路,值得记录下来。至于gc的根本原因,事后我找到了笨神的博客

Hotspot的safe point

上一篇中已经提到了safe point,必须强调这是一个很重要的概念,不仅对Jvm,也对所有运行在jvm上的Java应用。从Jvm的角度来看,到达safe point之后,Jvm会开始做一些有意义的事(比如gc);从应用的角度来看,达到safe point意味着工作线程会产生停顿,即常说的“stop the world”。当下所有Jvm的具体实现都有这样的概念(比如Hotspot、Zing),了解一点相关的知识对我们的编程以及调优都很有帮助。

Java中和SafePoint相关的故事

事情缘起一段性能测试代码,主要是探讨在循环中索引键类型的选择,int vs long 哪个更好?本文和应用层面无关,只是探讨2种类型的迭代在某些场景对性能的影响。希望经过分析之后,能对我们平时的编程带来一些帮助;或者提供一些对safe point的认识。下面开始进入真正的主题……

mac上fd报错有点奇怪

最近在使用rabbitmq java client时,有小伙伴在mac上写了一段代码,发现当创建一个连接到rabbitmq-server时就会报错bad file descriptor,虽然在linux服务器上没有出现这个问题,但为了安全,还是花了点时间进行调查。

hostname相关

之前有讨论hostname在jdk中是怎么使用的,这回想说的是,在linux机器上,关于hostname相关的一些tips,都是很简单的常识,但了解它们有时候会给我们查问题带来帮助。