10S延迟的诡异问题-标准化改变世界,不要迷恋手写代码

新机房启用之后,前置调用 处理,出现10S延迟。

1、抓包检查,确实存在10s延迟
2、两个主机同步时间之后,通过NC 调用没有发现明显的问题
3、netstat -s a ip -s link 未发现明显问题
4、对比内核参数未发现明显问题。

5、疑似问题: netstat 查看支付处理,Listen 的为 tcp6

解决:
专家查看server端代码
logger.info(String.format("获取新连接:%s-->%s",remoteSocketAddress.getHostName(),remoteSocketAddress.getPort()));

对比新老环境,老环境未启用DNS ,新环境启用了DNS
Java DNS 成功的超时时间为30s, 失败的超时时间为 10s
关闭DNS之后延时消失。

分析:
1、代码中的反查HostName,显然是一条copy来的代码,自己未理解原因即投入使用。在未启用DNS的机器上表现不明显。在启用DNS的机器上出现诡异故障。

总结:
1、在机器参数检查无明显异常的情况下应该主动思考是否是编码逻辑问题。
2、问题的原因只有一个
3、 在公司内部统一远程调用方式势在必行。如果使用Dubbo或者DSF 等Rpc方案实现的话,永远不会掉这坑里。

标准化改变世界,不要迷恋手写代码。
送上一本书:


10S延迟的诡异问题-标准化改变世界,不要迷恋手写代码_第1张图片
1111510297159_.pic.jpg

你可能感兴趣的:(10S延迟的诡异问题-标准化改变世界,不要迷恋手写代码)