<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>aikko (aikko)</title>
    <link>https://ruby-china.org/aikko</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Ruby 的 GC 不释放内存给回系统的？</title>
      <description>&lt;p&gt;最近我的一个 ruby on rails 的项目，部署采用的是（nginx+passenger），由于访问量大概增了 6 倍左右，出现了一个之前没有注意到的问题，就是每个 ruby 进程的内存一直不断地增长，有一次跑了 3 天没管，多个 ruby 进程从刚开始的 100 多 M 到达 500M 左右，不得已每天晚上 5 点左右重启一下服务以便释放内存。换了 ruby 2.0 有所改善，但是还是不明显。&lt;/p&gt;

&lt;p&gt;跑了 11 几个小时左右
&lt;img src="//l.ruby-china.com/photo/7937387c5d6553465457500521abffd0.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;跑了 80 几个小时左右
&lt;img src="//l.ruby-china.com/photo/0bf8aaab3babba0a83eb258878475a9d.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;在网上看到了&lt;a href="http://robbin.iteye.com/blog/307271" rel="nofollow" target="_blank" title=""&gt;Robbin 的这篇文章&lt;/a&gt;后，在生产环境选了一台机器观察下，我发现从来没有内存使用有降低的情况。于是开始猜测是不是没有触发 GC，我的 ruby gc 参数参考 37singals 和 twitter 的
配置如下：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;RUBY_HEAP_MIN_SLOTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1250000
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;RUBY_HEAP_SLOTS_INCREMENT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;100000
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;RUBY_HEAP_SLOTS_GROWTH_FACTOR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;RUBY_GC_MALLOC_LIMIT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;30000000
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;RUBY_HEAP_FREE_MIN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;12500
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;用 &lt;code&gt;GC::Profiler&lt;/code&gt; 去观察 ruby 的 GC 情况，得到结果如下：&lt;/p&gt;

&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/15cb0199333643d1edfb8855486e807d.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;明显很多次自动触发了 GC，后面我自己强制调用 GC.start，Use Size 和 Total Size 都降低了很多，但是该 ruby 进程的内存占用量始终不降。（中间我观察有几次次非常小幅的下降----每次大概 1% 约 40m，但总体在增长）&lt;/p&gt;

&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/8b375e7598d44d3a51615a808749e0e9.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;当执行完 GC 后，如果在改 ruby 进程里面再次大量的分配对象时，整体内存增长不大，于是我猜测 ruby 所谓的 GC 是不是只是进程内部把一使用的内存回收以便下次再次分配时使用，但是没有释放给系统？求大神指点。&lt;/p&gt;</description>
      <author>aikko</author>
      <pubDate>Fri, 30 Aug 2013 11:35:08 +0800</pubDate>
      <link>https://ruby-china.org/topics/13740</link>
      <guid>https://ruby-china.org/topics/13740</guid>
    </item>
    <item>
      <title>如何降低页面 render 时的耗时以及 CPU 资源</title>
      <description>&lt;p&gt;最近在做一个项目，最后瓶颈在 cpu 上面（机器配置：16 核，32G），基本当访问页面在 200req/s 的时候，16 个 cpu 基本都被占满，无法再提高响应能力。
服务器部署的方式（nginx+passenger+redis+mysql）&lt;/p&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;passenger_max_pool_size&lt;/span&gt; &lt;span class="m"&gt;32&lt;/span&gt;;
&lt;span class="n"&gt;passenger_min_instances&lt;/span&gt; &lt;span class="m"&gt;32&lt;/span&gt;;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;渲染 view 的时间居然用到了 900 多毫秒&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Completed 200 OK in 1443ms (Views: 937.2ms | ActiveRecord: 389.0ms)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;小弟初次使用 rails，求大神帮忙分析下。&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Started GET &lt;span class="s2"&gt;"/shows/19826"&lt;/span&gt; at 2013-06-26 16:50:06 +0800
Processing by ShowsController#show as HTML
Read fragment views/user_28274_medals &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shared/_medals.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;46.8ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show/_operate.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;3.9ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82397_comments &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;9.9ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;post_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 82397
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;377.2ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_first_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;453.8ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/user_28274_medals &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shared/_medals.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.9ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show/_operate.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;7.6ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;wooers&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;wooers&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;show_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 19826
  CACHE &lt;span class="o"&gt;(&lt;/span&gt;0.0ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;wooers&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;wooers&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;show_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 19826
  CACHE &lt;span class="o"&gt;(&lt;/span&gt;0.0ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;wooers&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;wooers&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;show_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 19826
   &lt;span class="o"&gt;(&lt;/span&gt;51.5ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 14411 AND &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_type&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Wooer'&lt;/span&gt;
  Rendered shows/_choose_form.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.5ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/index_show_19826_wooer_14411 &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;54.9ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 14604 AND &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_type&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Wooer'&lt;/span&gt;
  Rendered shows/_choose_form.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.1ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/index_show_19826_wooer_14604 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;45.8ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 14762 AND &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_type&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Wooer'&lt;/span&gt;
  Rendered shows/_choose_form.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.4ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/index_show_19826_wooer_14762 &lt;span class="o"&gt;(&lt;/span&gt;0.3ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;47.9ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 14803 AND &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_type&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Wooer'&lt;/span&gt;
  Rendered shows/_choose_form.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.5ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/index_show_19826_wooer_14803 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;52.4ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 14970 AND &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_type&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Wooer'&lt;/span&gt;
  Rendered shows/_choose_form.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.5ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/index_show_19826_wooer_14970 &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_wooer.html.erb &lt;span class="o"&gt;(&lt;/span&gt;364.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_wooers.html.erb &lt;span class="o"&gt;(&lt;/span&gt;435.4ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82398_comments &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;10.0ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;post_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 82398
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;15.3ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_second_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;487.2ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/user_645_medals &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shared/_medals.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.8ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;5.9ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show/_operate.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.7ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82401_comments &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;9.8ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;post_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 82401
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;15.1ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;34.1ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/user_28274_medals &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shared/_medals.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;5.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show/_operate.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.2ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82402_comments &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;9.9ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;post_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 82402
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;14.1ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;25.6ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/user_28274_medals &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shared/_medals.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;4.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show/_operate.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.0ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.5ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82403_comments &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;9.9ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;post_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 82403
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;14.0ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;25.2ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/user_28274_medals &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shared/_medals.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;5.1ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show/_operate.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.2ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82404_comments &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;9.8ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;post_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 82404
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;14.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;25.8ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/user_28274_medals &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shared/_medals.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;4.9ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show/_operate.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;97.0ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82405_comments &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;12.7ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;post_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 82405
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;19.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;125.3ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/user_28274_medals &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shared/_medals.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;5.8ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show/_operate.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.9ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82406_comments &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;10.1ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;post_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 82406
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;14.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;27.4ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/user_28274_medals &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shared/_medals.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.8ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;5.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show/_operate.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.5ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82407_comments &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;9.8ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;post_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 82407
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;14.1ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;26.1ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/user_28274_medals &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shared/_medals.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;5.0ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show/_operate.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.5ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82408_comments &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;10.6ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;post_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 82408
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;14.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;25.8ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/user_28274_medals &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shared/_medals.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;5.1ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show/_operate.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;3.1ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82409_comments &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;11.0ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;comments&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;post_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 82409
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;15.2ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;27.3ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_page.html.erb &lt;span class="o"&gt;(&lt;/span&gt;5.0ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show.html.erb within layouts/application &lt;span class="o"&gt;(&lt;/span&gt;1315.0ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered layouts/_navigation.html.erb &lt;span class="o"&gt;(&lt;/span&gt;5.9ms&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;**&lt;/span&gt;Completed 200 OK &lt;span class="k"&gt;in &lt;/span&gt;1443ms &lt;span class="o"&gt;(&lt;/span&gt;Views: 937.2ms | ActiveRecord: 389.0ms&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="k"&gt;**&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;

&lt;hr&gt;

&lt;p&gt;**得到各位大神的帮助，现在交优化作业，同一个页面的请求（热门帖子特例），优化效果非常明显，响应时间从 1443ms 降到 374ms，对应的日志后面有贴出。从 new relic 的统计来看，之前整站的平均响应时间为 140ms 左右，优化后降低到 80ms 左右。
刚开始使用 rails，犯了很多不该犯的错误，就当一个反面教材吧，希望能帮助像我这样的菜鸟们能更好更正确的使用 rails。&lt;/p&gt;

&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/6df7d9e31cd534f6873bc3c3df9d5c28.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;一些关键请求前后响应时间数据见下图：**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;优化前：&lt;/strong&gt;
&lt;img src="//l.ruby-china.com/photo/72cf5bf3b65ae9d1249b8dcea3ac5956.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;优化后：&lt;/strong&gt;
&lt;img src="//l.ruby-china.com/photo/8d3267258118e119ce65e08008a214eb.png" title="" alt=""&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;主要从下面几个方面进行优化，有不足的地方希望大家指出
1、该加上 counter_cache 的地方全部都加上 counter_cache
2、对常用的非主键查询加索引，例如查用户的发帖，查帖子的评论等
3、使用 cache_digests，充分 cache 住 view 中的内容
4、尽量不在 view 中设计数据库查询操作，修改页面结构减少 render
5、对于一些实时性要求不高的页面使用 action_cache（由于我的应用必须登录才能使用，action_cache 不跳过验证的）&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;在此感谢&lt;a href="/nihaokid" class="user-mention" title="@nihaokid"&gt;&lt;i&gt;@&lt;/i&gt;nihaokid&lt;/a&gt;, &lt;a href="/huacnlee" class="user-mention" title="@huacnlee"&gt;&lt;i&gt;@&lt;/i&gt;huacnlee&lt;/a&gt;, &lt;a href="/hooopo" class="user-mention" title="@hooopo"&gt;&lt;i&gt;@&lt;/i&gt;hooopo&lt;/a&gt;, &lt;a href="/kenshin54" class="user-mention" title="@kenshin54"&gt;&lt;i&gt;@&lt;/i&gt;kenshin54&lt;/a&gt;, &lt;a href="/leonworld" class="user-mention" title="@leonworld"&gt;&lt;i&gt;@&lt;/i&gt;leonworld&lt;/a&gt;等各位的指点&lt;/strong&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;hr&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Started GET &lt;span class="s2"&gt;"/shows/19826"&lt;/span&gt; at 2013-07-03 17:57:05 +0800
Processing by ShowsController#show as HTML
  Parameters: &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"id"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"19826"&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
Read fragment views/users/28274-20130614075045/d23d462cb66fbbd1ff9b470e0ca7a163 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.1ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show/_operate.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.9ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.5ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/posts/82397-20130622231908/posts/82398-20130620091124/posts/82402-20130622231900/posts/82403-20130622232014/posts/82404-20130622232021/posts/82405-20130622232023/posts/82406-20130622232025/posts/82407-20130622232027/posts/82408-20130622232030/posts/82409-20130622232032/posts/82410-20130622232034/posts/82411-20130622232036/posts/82412-20130622232038/posts/82413-20130622232040/posts/82414-20130622232043/posts/82415-20130622232045/posts/82416-20130622232048/posts/82417-20130622232050/posts/82418-20130622232052/posts/82419-20130622232054/posts/82420-20130622232056/posts/82421-20130622232058/posts/82422-20130622232100/posts/82423-20130622232102/posts/82424-20130622232104/posts/82425-20130622232106/ee5e1083a00aad667f6151cd4224c7d8 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82397_comments/98cc0c2a9fa04cb178257dab2f371b63 &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_first_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;13.4ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/users/28274-20130614075045/d23d462cb66fbbd1ff9b470e0ca7a163 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.8ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/posts/82398-20130620091124/4797c0bc70520a2ac0bf90fc7a8e6395 &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;0.8ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 14762 AND &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_type&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Wooer'&lt;/span&gt;
Read fragment views/index_show_19826_wooer_14762_info/f8384c485db4fe49a341041679e8e8d9 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_choose_form.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.4ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/index_show_19826_wooer_14762/f8384c485db4fe49a341041679e8e8d9 &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 14803 AND &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_type&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Wooer'&lt;/span&gt;
Read fragment views/index_show_19826_wooer_14803_info/f8384c485db4fe49a341041679e8e8d9 &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_choose_form.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.2ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/index_show_19826_wooer_14803/f8384c485db4fe49a341041679e8e8d9 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;0.3ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 14970 AND &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_type&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Wooer'&lt;/span&gt;
Read fragment views/index_show_19826_wooer_14970_info/f8384c485db4fe49a341041679e8e8d9 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_choose_form.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.5ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/index_show_19826_wooer_14970/f8384c485db4fe49a341041679e8e8d9 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;0.3ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 17379 AND &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_type&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Wooer'&lt;/span&gt;
Read fragment views/index_show_19826_wooer_17379_info/f8384c485db4fe49a341041679e8e8d9 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_choose_form.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.2ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/index_show_19826_wooer_17379/f8384c485db4fe49a341041679e8e8d9 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT COUNT&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_id&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 17622 AND &lt;span class="sb"&gt;`&lt;/span&gt;posts&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;item_type&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Wooer'&lt;/span&gt;
Read fragment views/index_show_19826_wooer_17622_info/f8384c485db4fe49a341041679e8e8d9 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_choose_form.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.1ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/index_show_19826_wooer_17622/f8384c485db4fe49a341041679e8e8d9 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_wooer.html.erb &lt;span class="o"&gt;(&lt;/span&gt;24.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_wooers.html.erb &lt;span class="o"&gt;(&lt;/span&gt;109.0ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82398_comments/98cc0c2a9fa04cb178257dab2f371b63 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.8ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_second_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;130.3ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/users/645-20130621101340/d23d462cb66fbbd1ff9b470e0ca7a163 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.9ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/posts/82401-20130620091200/df576356e2de4bcdb9c7b0559bb5ba4c &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.3ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82401_comments/98cc0c2a9fa04cb178257dab2f371b63 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;7.9ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/users/28274-20130614075045/d23d462cb66fbbd1ff9b470e0ca7a163 &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.1ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/posts/82402-20130622231900/df576356e2de4bcdb9c7b0559bb5ba4c &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.1ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82402_comments/98cc0c2a9fa04cb178257dab2f371b63 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;8.1ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/users/28274-20130614075045/d23d462cb66fbbd1ff9b470e0ca7a163 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.9ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/posts/82403-20130622232014/df576356e2de4bcdb9c7b0559bb5ba4c &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.3ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82403_comments/98cc0c2a9fa04cb178257dab2f371b63 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;7.6ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/users/28274-20130614075045/d23d462cb66fbbd1ff9b470e0ca7a163 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.8ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/posts/82404-20130622232021/df576356e2de4bcdb9c7b0559bb5ba4c &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.4ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82404_comments/98cc0c2a9fa04cb178257dab2f371b63 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.8ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;7.6ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/users/28274-20130614075045/d23d462cb66fbbd1ff9b470e0ca7a163 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.8ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/posts/82405-20130622232023/df576356e2de4bcdb9c7b0559bb5ba4c &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.1ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82405_comments/98cc0c2a9fa04cb178257dab2f371b63 &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.9ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;7.8ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/users/28274-20130614075045/d23d462cb66fbbd1ff9b470e0ca7a163 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.8ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/posts/82406-20130622232025/df576356e2de4bcdb9c7b0559bb5ba4c &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.2ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82406_comments/98cc0c2a9fa04cb178257dab2f371b63 &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;7.4ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/users/28274-20130614075045/d23d462cb66fbbd1ff9b470e0ca7a163 &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.9ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/posts/82407-20130622232027/df576356e2de4bcdb9c7b0559bb5ba4c &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.2ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82407_comments/98cc0c2a9fa04cb178257dab2f371b63 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;7.6ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/users/28274-20130614075045/d23d462cb66fbbd1ff9b470e0ca7a163 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.8ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/posts/82408-20130622232030/df576356e2de4bcdb9c7b0559bb5ba4c &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.4ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82408_comments/98cc0c2a9fa04cb178257dab2f371b63 &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;7.7ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/users/28274-20130614075045/d23d462cb66fbbd1ff9b470e0ca7a163 &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_user.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.0ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/posts/82409-20130622232032/df576356e2de4bcdb9c7b0559bb5ba4c &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered posts/_zhan.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.5ms&lt;span class="o"&gt;)&lt;/span&gt;
Read fragment views/post_82409_comments/98cc0c2a9fa04cb178257dab2f371b63 &lt;span class="o"&gt;(&lt;/span&gt;0.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_comments.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_common_floor.html.erb &lt;span class="o"&gt;(&lt;/span&gt;8.2ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/_page.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.8ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered shows/show.html.erb within layouts/application &lt;span class="o"&gt;(&lt;/span&gt;241.6ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered layouts/_navigation.html.erb &lt;span class="o"&gt;(&lt;/span&gt;5.5ms&lt;span class="o"&gt;)&lt;/span&gt;
Completed 200 OK &lt;span class="k"&gt;in &lt;/span&gt;374ms &lt;span class="o"&gt;(&lt;/span&gt;Views: 247.9ms | ActiveRecord: 2.4ms&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="sb"&gt;```&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>aikko</author>
      <pubDate>Wed, 26 Jun 2013 17:01:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/12008</link>
      <guid>https://ruby-china.org/topics/12008</guid>
    </item>
    <item>
      <title>一个 utf-16 的 byte array 怎么转换成 string？</title>
      <description>&lt;p&gt;从一个 base64 编码的 string，通过.unpack("m*") 获得的是一个 utf-16 的 byte array，如何转成相对应的 string&lt;/p&gt;</description>
      <author>aikko</author>
      <pubDate>Tue, 25 Jun 2013 16:15:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/11980</link>
      <guid>https://ruby-china.org/topics/11980</guid>
    </item>
  </channel>
</rss>
