2011-11-09 43 views
3

私のアプリケーション(deviseを使用)からログアウトしようとすると、railsアプリケーションがハングしてrubyがCPUを100%食べる。私のデータベースを削除して再作成したときにのみ消えました。私はPostgreSQLを使ってMySQLに切り替えようとしていませんでした。 mongrelを使用してください(webrickでも起こります)。Rubyプロセスが100%CPUを使用する

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 

イムそこに何が起こるか本当にわからない:ルビー1.9.2は、3.0.9

straceの

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 

コンソール出力をレール?

これは、ログアウト時にだけでなく、凍結が起こるさUPDが*、それはだが、ランダムに起こる:(またMacで他の開発者がこの問題をhaventは、Ubuntuの11.10ランニングイムは、まだそれを持って、10.04で試してみました。

+2

100%cpuは何らかの無限ループのように聞こえ、それを引き起こす可能性のある原因は無数にあります。「after_save」フックにモデルを保存することは1つです。無限にリダイレクトする方法もあります。それらのうちの1つになることもできますが、それは完全に他の何かになる可能性もあります(その点については無限ループではありません)。 – Frost

+0

私は2回チェックし、フックに無限ループはありません –

+1

どのように私たちはユーザーモデルのモデルコードですか?あなたが私たちに与えたことは、エラーがどこから来ているのかを正確に突き止めることさえできません。 –

答えて

0

cache_classesをオンにしてくださいin development.rb

関連する問題