Heroku偶尔会返回“hostname未找到”的错误信息。

5

我正在创建一个iOS应用程序,该应用程序使用Heroku上的Rails API后端。 周期性地(每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."

1
只是想确认一下,我目前在Heroku也遇到了这个问题。(而我的dyno没有睡觉) - lmirosevic
这与Heroku无关(仅限于Heroku),我在不同的平台上也看到了相同的情况。 - jimpic
我们在Heroku后端和iOS客户端也看到了这个问题。Dynos没有休眠,请求没有到达Heroku。@Michael Guren,请告诉我您是否找到了根本原因。 - Fraggle
3个回答

0

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

你是否已经明确指定了你的子域名 xxx 并将其与你的域名提供商关联到你的服务器 IP?

如果没有,请尝试添加一个新的 A 记录,将你的子域名 xxx 指向你的服务器 IP。

希望这能帮到你。


0

看起来你正在受到Dyno睡眠行为的影响。请查看此文档,特别是Dyno睡眠部分,并确保你理解它。 此外,还有几种方法可以保持应用程序运行,例如定期ping网站。

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


2
我感謝您的回覆,但這不是動態休眠問題。在我的iOS應用中有一個刷新按鈕,我可以在1分鐘內連續點擊刷新大約15-20次,偶爾其中一次刷新導致主機名稱未找到錯誤。您有什麼想法嗎? - Michael Guren

0

似乎是您的iPhone/iPad连接的网络存在DNS问题。为确保,请尝试以下任一操作:

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

2)如果(1)太困难,可以将iPhone的DNS设置为局域网上的计算机,并在该计算机上安装DNS服务器,并直接为至少该特定地址提供服务(不要递归该域名)。


这不是需要在Heroku端进行调整的事情吗? - Krishna Prasad Varma
据我所知,你无法在Heroku上使用硬编码的IP。如果你运行nslookup myapp.herokuapp.com ,你几乎每次都会得到一个不同的IP地址。 Heroku返回路由器的IP地址,然后将请求转发到真实的服务器。 - Fraggle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接