【问题标题】:Heroku sporadically returns "hostname" not foundHeroku 偶尔返回未找到的“主机名”
【发布时间】:2013-07-15 12:49:02
【问题描述】:

我正在创建一个在 Heroku 上使用 Rails API 后端的 iOS 应用。定期(每 20 个 API 调用一次),找不到 heroku。返回以下 NSError:

Error Domain=NSURLErrorDomain Code=-1003 "A server with the specified hostname could not be found." UserInfo=0x755ce00 {NSErrorFailingURLStringKey=https://xxx.herokuapp.com/api/v1/matchups, NSErrorFailingURLKey=https://xxx.herokuapp.com/api/v1/matchups, NSLocalizedDescription=A server with the specified hostname could not be found., NSUnderlyingError=0x71ca730 "A server with the specified hostname could not be found."

【问题讨论】:

  • 只是想确认我在 Heroku ATM 上也遇到了这种情况。 (而且我的测功机没有睡觉)
  • 这不是(完全)与 Heroku 相关的,我在不同的平台上看到了同样的事情。
  • 我们也在 Heroku 后端和 iOS 客户端中看到了这一点。 Dynos 没有睡觉,请求没有击中 Heroku。 @Michael Guren 如果您找到了根本原因,请告诉我。

标签: ios ruby-on-rails heroku nserror


【解决方案1】:

您的 iPhone/iPad 所连接的网络似乎存在 DNS 问题。可以肯定的是,请尝试以下任一方法:

1) 将您的主机名更改为 IP 地址而不是字符串主机名,并在 HTTP 请求中添加 Host: 标头。

2) 如果 (1) 很难,请将 iPhone 的 DNS 设置为 LAN 上的 PC,并在该 PC 上安装 DNS 服务器,并直接从 PC 提供至少该特定地址(不要为此递归)域)。

【讨论】:

  • 这不是必须在heroku方面进行调整的吗?
  • 据我所知,您不能将硬编码的 IP 与 heroku 一起使用。如果您执行 nslookup myapp.herokuapp.com,您几乎每次都会获得不同的 IP。 Heroku 返回路由器的 IP 地址,然后路由器获取请求并将其转发到真实服务器。
【解决方案2】:

您似乎受到了 Dyno 睡眠行为的打击。请检查this documentation,特别是Dyno sleep部分,并确保您理解它。 此外,还有多种方法可以让应用保持运行状态,例如定期 ping 站点。

另一个选项是 DNS,在您的计算机上创建一个 Ad-Hoc 网络并将您的 iphone 连接到该网络。使用 wireshark 进行网络捕获并分析 DNS 和 HTTP 响应。

【讨论】:

  • 感谢您的回复,但这不是测功机睡眠问题。我的 iOS 应用程序上有一个刷新按钮,我可以在 1 分钟内重复刷新大约 15-20 次,偶尔,其中一次刷新会导致找不到主机名错误。有什么想法吗?
【解决方案3】:

您的网址 = https://xxx.herokuapp.com/api/v1/matchups

您是否与您的域提供商明确指定您的子域 xxx 以指向您的服务器 IP?

如果没有,请尝试将您的子域 xxx 指向您的服务器 IP 的新 A 记录。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2015-08-27
    • 2014-01-04
    • 2011-06-11
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多