问题
如果资产发生了变化,我的rails应用程序突然开始服务初始请求和顺序请求大约60秒。
我尝试了什么
关于“rails,render,slow”有很多关于SO的答案,但是没有一个帮助,因为问题似乎在不同的领域。
然后我尝试将gem版本回滚到旧点,此问题不存在。没运气。我没有更新系统中的任何内容(rvm,homebrew),因此无法回滚。
然后我安装了ruby-prof
profiler,看到rails一直在执行V8::C::String#Utf8Value
,但我无法从中获取任何内容。
诊断信息
我使用OSX Mavericks。
服务器日志:
在2014-04-08 05:30:49 +0200开始获取127.0.0.1的“/” 由HomeController处理#index为HTML用户负载(0.3ms)SELECT“users”。* FROM“users”WHERE“users”。“id”= 1 ORDER BY“users”。“id”ASC LIMIT 1 在布局/应用程序中呈现home / index.html.erb(64211.8ms) 完成200 OK,64248ms(浏览次数: 64218.0ms | ActiveRecord:2.1ms)
profiler log(水平滚动):
%total %self total self wait child calls Name
--------------------------------------------------------------------------------
61.042 0.000 0.000 61.042 2/2 V8::Conversion::Fundamental#to_ruby
87.50% 0.00% 61.042 0.000 0.000 61.042 2 V8::Conversion::NativeString#to_ruby
61.042 61.042 0.000 0.000 2/2 V8::C::String#Utf8Value
--------------------------------------------------------------------------------
61.042 61.042 0.000 0.000 2/2 V8::Conversion::NativeString#to_ruby
87.50% 87.50% 61.042 61.042 0.000 0.000 2 V8::C::String#Utf8Value
--------------------------------------------------------------------------------
8.528 0.000 0.000 8.528 4/4 Proc#call
12.22% 0.00% 8.528 0.000 0.000 8.528 4 V8::Error::Try#try
8.528 0.000 0.000 8.528 4/4 <Module::V8::C>#TryCatch
--------------------------------------------------------------------------------