ruby-on-rails - Ruby 进程占用 100% CPU

标签 ruby-on-rails ruby cpu mongrel

<分区>

当我尝试从我的应用程序注销(使用设计)时,rails 应用程序挂起并且 ruby​​ 占用 100% 的 CPU,在我重新启动服务器后它仍然卡住(无法加载页面)。只有当我删除并重新创建我的数据库时它才消失。我正在使用 PostgreSQL,试图切换到 MySQL,但没有帮助。使用杂种(也发生在 webrick 上)。 ruby 1.9.2, rails 3.0.9

跟踪

futex(0xe1be68, FUTEX_WAKE_PRIVATE, 1)  = 1
futex(0xe1c3fc, FUTEX_WAIT_PRIVATE, 1, NULL) = ? ERESTARTSYS (To be restarted)
--- SIGINT (Interrupt) @ 0 (0) ---
rt_sigreturn(0x2)                       = -1 EINTR (Interrupted system call)
futex(0xe1c3fc, FUTEX_WAIT_PRIVATE, 1, NULL) = 0
futex(0xe1c458, FUTEX_WAKE_PRIVATE, 1)  = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
futex(0xe1be68, FUTEX_WAIT_PRIVATE, 2, NULL) = 0

控制台输出:

Started GET "/signout" for 127.0.0.1 at 2011-11-09 10:11:13 +0200
  SQL (1.0ms)   SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
 FROM pg_attribute a LEFT JOIN pg_attrdef d
 ON a.attrelid = d.adrelid AND a.attnum = d.adnum
 WHERE a.attrelid = '"jokes"'::regclass
 AND a.attnum > 0 AND NOT a.attisdropped
 ORDER BY a.attnum
  Processing by SessionsController#destroy as HTML
Redirected to http://localhost:3000/
Completed 302 Found in 1ms

我不太确定那里发生了什么?

UPD* 这不仅仅是在注销时发生卡住,它是随机发生的:( Mac 上的其他开发人员也没有这个问题,我运行的是 Ubuntu 11.10,在 10.04 上试过,仍然有它。

最佳答案

尝试在 development.rb 中打开 cache_classes

关于ruby-on-rails - Ruby 进程占用 100% CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8062047/

相关文章:

ruby-on-rails - 对于使用 mongodb 构建 Web 应用程序的开发人员,您如何处理长主键?

java - 如何连接到 Android 应用程序 (Java) 中的 Rails SSE 流页面?

ruby-on-rails - 上限部署 :setup hangs?

ruby-on-rails - 数组操作(按特定组对一列求和,保持其他组相同)

ruby - 参数是通过引用还是值传递给方法?

gcc - GCC 可以编译的最小、最简单的 CPU 是什么?

ruby - 当我尝试将 rack-flash 添加到我的 sinatra 应用程序时,它停止工作

ruby - 变量绑定(bind)

caching - 可编程CPU缓存?

c++ - 从 C/C++ 代码执行 RDMSR 和 WRMSR 指令