我在我的開發環境中使用passenger start
,但thin
,webbrick
和puma
具有相同的結果。這個問題在運行Ubuntu 14.04的開發機器上似乎也是一致的。在生產中,我根本沒有這個問題。 Ruby版本是2.1.3
和2.1.2
(都嘗試過)。使用Rails 4.1.6
(也嘗試了4.1.5
)。什麼應該是簡單的渲染需要幾分鐘的時間
正在呈現相當簡單和小的登錄頁面。只是一個表單來設計會話控制器登錄。我跑strace passenger start
看看永遠是什麼。有什麼想法可能造成這種情況?
慢請求
Started GET "https://stackoverflow.com/users/sign_in" for 10.0.2.2 at 2014-09-19 11:26:24 -0400
Processing by Devise::SessionsController#new as HTML
"", 8192) = 0
sched_yield() = 0
close(9) = 0
socket(PF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP) = 9
fcntl(9, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fstat(9, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
connect(9, {sa_family=AF_INET, sin_port=htons(3000), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
fstat(9, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
read(9, Rendered devise/sessions/new.html.erb within layouts/application (52237.4ms)
Rendered layouts/_navigation_links.html.erb (1.5ms)
Rendered layouts/_navigation.html.erb (2.6ms)
Rendered layouts/_messages.html.erb (0.2ms)
Completed 200 OK in 52250ms (Views: 52246.2ms | ActiveRecord: 0.0ms)
F5在瀏覽器,瀏覽器的快速響應
Started GET "https://stackoverflow.com/users/sign_in" for 10.0.2.2 at 2014-09-19 11:27:35 -0400
Processing by Devise::SessionsController#new as HTML
Rendered devise/sessions/new.html.erb within layouts/application (3.7ms)
Rendered layouts/_navigation_links.html.erb (0.7ms)
Rendered layouts/_navigation.html.erb (1.4ms)
Rendered layouts/_messages.html.erb (0.2ms)
Completed 200 OK in 852ms (Views: 849.3ms | ActiveRecord: 0.0ms)
F5並再次將其響應速度很慢
Started GET "https://stackoverflow.com/users/sign_in" for 10.0.2.2 at 2014-09-19 11:27:40 -0400
Processing by Devise::SessionsController#new as HTML
"", 8192) = 0
close(9) = 0
socket(PF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP) = 9
fcntl(9, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fstat(9, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
connect(9, {sa_family=AF_INET, sin_port=htons(3000), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
fstat(9, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
fstat(9, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
read(9, Rendered devise/sessions/new.html.erb within layouts/application (52214.5ms)
Rendered layouts/_navigation_links.html.erb (2.0ms)
Rendered layouts/_navigation.html.erb (3.6ms)
Rendered layouts/_messages.html.erb (0.1ms)
Completed 200 OK in 53057ms (Views: 53053.3ms | ActiveRecord: 0.0ms)
F5上的瀏覽器,並很快再次響應
Started GET "https://stackoverflow.com/users/sign_in" for 10.0.2.2 at 2014-09-19 11:29:30 -0400
Processing by Devise::SessionsController#new as HTML
Rendered devise/sessions/new.html.erb within layouts/application (3.1ms)
Rendered layouts/_navigation_links.html.erb (0.4ms)
Rendered layouts/_navigation.html.erb (1.1ms)
Rendered layouts/_messages.html.erb (0.1ms)
Completed 200 OK in 769ms (Views: 767.2ms | ActiveRecord: 0.0ms)
編輯
於是我就strace -f passenger start
看到叉過程,它看起來像我所有的寶石都不見了。但是,該應用程序的工作。真奇怪。
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/rdoc-4.1.2/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/rails_layout-1.0.22/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/quiet_assets-1.0.3/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/pundit-0.3.0/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/public_activity-1.4.2/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/prawn-templates-0.0.3/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/prawn-1.2.1/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/pdf-reader-1.3.3/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/ttfunk-1.2.2/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/ruby-rc4-0.1.5/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/pdf-core-0.2.5/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/extensions/x86_64-linux/2.1.0/passenger-4.0.50/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/passenger-4.0.50/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/extensions/x86_64-linux/2.1.0/mysql2-0.3.16/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/mysql2-0.3.16/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/mini_magick-3.8.1/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 2300] open("/home/kobaltz/.rvm/gems/ruby-2.1.3/gems/subexec-0.2.3/lib/arel/nodes/grouping.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
此行'閱讀(9,渲染色器件/會話/ new.html.erb /應用(52237.4ms) '告訴您發生緩慢的地方:它是'devise/sessions/new.html.erb'模板,我在那裏放了一堆日誌,然後看日誌,看看延遲發生的地方 – 2014-09-19 16:36:43
奇怪的是它發生了在任何頁面上,即使我註釋掉任何CSS或JS包含,它看起來像是因爲某些原因,它很難找到gem依賴關係。 – kobaltz 2014-09-19 16:37:53
如果您停止並重新啓動服務器,該怎麼辦?你是否在啓動服務器之後切換rvms或類似的東西? – 2014-09-22 10:07:09