我们刚刚开始将 New Relic 移动版用于我们的 iOS 应用程序,并且发现网络错误间歇性激增。错误列表中包含一些不言自明的错误(未连接到互联网、超时、连接丢失)。现在我将其归咎于网络运营商的移动互联网性能(或缺乏性能)。列表中更难解释的是无法找到主机。如果互联网服务不可靠,设备会遇到此错误吗?在这些峰值期间,我们的桌面网站(在同一服务器上)没有出现任何相同的错误。总的来说,我想知道考虑到移动设备的连接不太可靠,来自移动设备的网络错误数据的可靠性如何。
答案1
不可靠的网络连接可能会导致应用程序报告cannot find host
。
典型的网络通信始于应用程序执行 DNS 查找。如果设备认为网络连接已建立,但实际上没有数据包通过,则应用程序将不会获得对第一次 DNS 查找的任何响应。
应用程序的正确反应是尝试几次,然后超时并显示错误消息。此时,可能存在几种错误情况,这些情况最终可能会产生相同的错误消息。这些情况包括:
- 所有数据包丢失,未收到回复
- 返回错误答复,表明无法访问 DNS 服务器
- DNS 已到达但由于某种原因拒绝处理请求
- DNS 服务器处理请求,但域不存在
- DNS 服务器处理该请求,但是域没有指定类型的记录。
如果必须挑选一条涵盖以上所有内容的错误消息,很难想出比 更具描述性的答案cannot find host
。
重要的是要记住,如果设备之前执行过 DNS 查找,则结果可能会被缓存,在这种情况下您可能会看到不同的错误。
如果您有权访问与产生错误消息的设备相同的设备,则可以在您自己控制的网络上测试上述每种情况,以查看产生了哪种错误消息。