记录使用钉钉扫码登录和验证码登录过于慢的问题(排查问题思路)
问题:测试环境使用钉钉扫码登录和验证码登录速度很快,但是生产环境使用钉钉扫码登录和验证码登录速度却很慢,第一次15秒才收到验证码,第二次则是5秒。
使用两个环境使用 ping api.dingtalk.com 发现测试环境解析域名很快,立马就用响应。生产环境则过好几秒才响应,响应完后和测试环境的time值差不多,甚至可以说是一样的
测试环境:
[root@u8-myapp ~]# ping api.dingtalk.com PING v6-cname.dingtalk.com.gds.alibabadns.com (106.11.23.24) 56(84) bytes of data. //测试环境这行解析信息很快显示 64 bytes from 106.11.23.24 (106.11.23.24): icmp_seq=1 ttl=91 time=7.55 ms 64 bytes from 106.11.23.24 (106.11.23.24): icmp_seq=2 ttl=91 time=7.37 ms 64 bytes from 106.11.23.24 (106.11.23.24): icmp_seq=3 ttl=91 time=7.30 ms 64 bytes from 106.11.23.24 (106.11.23.24): icmp_seq=4 ttl=91 time=7.32 ms 64 bytes from 106.11.23.24 (106.11.23.24): icmp_seq=5 ttl=91 time=7.44 ms
生产环境:
[root@erpapp tderp]# ping api.dingtalk.com PING v6-cname.dingtalk.com.gds.alibabadns.com (106.11.23.24) 56(84) bytes of data. //生产环境这行解析信息出现得比较慢 64 bytes from 106.11.23.24 (106.11.23.24): icmp_seq=1 ttl=91 time=7.12 ms 64 bytes from 106.11.23.24 (106.11.23.24): icmp_seq=2 ttl=91 time=7.38 ms 64 bytes from 106.11.23.24 (106.11.23.24): icmp_seq=3 ttl=91 time=7.28 ms 64 bytes from 106.11.23.24 (106.11.23.24): icmp_seq=4 ttl=91 time=7.32 ms 64 bytes from 106.11.23.24 (106.11.23.24): icmp_seq=5 ttl=91 time=7.34 ms 64 bytes from 106.11.23.24 (106.11.23.24): icmp_seq=6 ttl=91 time=7.27 ms 64 bytes from 106.11.23.24 (106.11.23.24): icmp_seq=7 ttl=91 time=7.06 ms
至此,我们知道是域名解析慢的原因造成生产环境访问钉钉接口慢的问题
解决过程:
对比测试环境和生产环境的dns值,发现都是一样
//测试环境 [root@u8-myapp ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 202.96.134.133 nameserver 223.5.5.5 //生产环境 [root@erpapp tderp]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 202.96.143.133 nameserver 223.5.5.5
那么为什么生产环境的解析会慢呢,我试着加一条dns解析,变为以下:
[root@erpapp tderp]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 114.114.114.114 nameserver 202.96.143.133 nameserver 223.5.5.5
然后重新运行程序,结果访问速度和测试环境的一样快了。