Rails Rails server 本地无法被访问和停止

larryzhao · 2013年09月11日 · 最后由 kenshin54 回复于 2013年09月11日 · 6924 次阅读

环境是 Mac OSX Mountain Lion, 10.8.4 Build 12E55, ruby 1.9.3-p327-falcon, Rails 3.2.14

之前都很好,昨天突然出现了,启动 rails s 之后,浏览器没法访问,Ctrl-C 无法终止..

rails s 启动之后,看上去一切正常 → rails s WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.9.1 => Booting Thin => Rails 3.2.14 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server

Thin web server (v1.5.1 codename Straight Razor) Maximum connections set to 1024 Listening on 0.0.0.0:3000, CTRL+C to stop

但我用浏览器访问 127.0.0.1:3000 的话,浏览器就一直在 Loading 的转转转,console 里也什么都没有,就好像 rails server 接收不到这个 request 一样

然后我 telnet 了一下端口,看上去也是正常的。

→ telnet 127.0.0.1 3000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'

如果我用 Ctrl-C 结束 rails s 也结束不了:

→ rails s WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.9.1 => Booting Thin => Rails 3.2.14 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server

Thin web server (v1.5.1 codename Straight Razor) Maximum connections set to 1024 Listening on 0.0.0.0:3000, CTRL+C to stop ^C>> Stopping ... ^C>> Stopping ... ^C>> Stopping ... ^C>> Stopping ... ^C>> Stopping ... ^C>> Stopping ...

有人碰到过么?怎么来找到问题在哪儿啊?

好诡异。。

杀进程。然后 rails s 或者做一个 stop 脚本。内容如下 kill -9 `cat tmp/pids/server.pid`

穷人 fedora 下的脚本。mac 同志请自行修改

#2 楼 @jarorwar 怎么样停止他我会,并且杀掉之后还是一样的问题,主要是不能访问我就没法干活了,我觉得不能 stop 和他不能接受访问应该是同一个问题,请大家更关注为什么出现这个诡异情况把。

#3 楼 @larryzhao 新建一个空项目也会这样?

#3 楼 @larryzhao 每次我执行 ctrl +z(ctrl+c 也是) 的时候总是不能结束进程,也是无法访问,所以。我就用这个来 stop,如果不符合你的实际情况,你就自行解决把。你的实际情况是什么样我也不清楚

#5 楼 @jarorwar 我 kill 掉再起也还是无法访问的,哎

#6 楼 @larryzhao kill 掉看看进程还在么?确认真的 kill 掉了。无法访问看看你的本地环境,端口,hosts,乱七八糟。这个情况比较复杂。

#7 楼 @jarorwar kill 掉进程就不在了,端口测试过 ok 的,帖子里面有。

#4 楼 @kenshin54 空项目正常...尼玛...

换个 server,比如 webrick 呢?

#9 楼 @larryzhao 那就项目的问题了,排查下有没有更新啥 gem,或者改过啥代码,导致卡死,以前我也出现过,后面都 debug 到 rails 整个启动流程,才定位出原因。

#10 楼 @lgn21st 这个我试过,webrick 也一样。

#11 楼 @kenshin54 恩,但很奇怪的是,我最早出现的时候就怕是这个问题,就 git rollback 试验了之前的版本也是一样的问题,然后我的 co-worker 全都 ok, 才来发帖的,真是尴尬

#13 楼 @larryzhao 那么神奇,整个重新从 git 仓库拉一份代码下来试过没?

感谢大家。

#14 楼 @kenshin54 终于找到问题所在了,co-worker 写出来了个死循环...

下面是如何找到的: @lgn21st 建议之后我又换成 Webrick 想试一下,然后问题依旧,我就 Ctrl-C 尝试停止 Webrick, 还好 Webrick 能成功停止并且把之前的 output 都吐出来了,才发现这个死循环。

#15 楼 @larryzhao 那为啥 co-worker 都是 ok 的?

#16 楼 @kenshin54 正常情况走不到那个分支..., 这个分支完全是为了保特殊情况 app 还可以正常跑,没测试完全啊

需要 登录 后方可回复, 如果你还没有账号请 注册新账号