<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>690492623qq (690492623qq)</title>
    <link>https://ruby-china.org/690492623qq</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>sinatra 并发 性能</title>
      <description>&lt;p&gt;今天 在 linux 服务器上 想看看 sinatra 下某个请求的并发数量 能达到多少。
demo：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require "sinatra"

get '/demo' do
   p "test"
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后用 thin start -p 4567 启动。。
用 ab 压测 ab -c 50 -n 2000  &lt;a href="http://127.0.0.1:4567/demo" rel="nofollow" target="_blank"&gt;http://127.0.0.1:4567/demo&lt;/a&gt;
Requests per second:    738.90 &lt;a href="mean" title=""&gt;#/sec&lt;/a&gt;
Time per request:       67.668 &lt;a href="mean" title=""&gt;ms&lt;/a&gt;
Time per request:       1.353 &lt;a href="mean,%20across%20all%20concurrent%20requests" title=""&gt;ms&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;这个请求很简单。
后来发现 sinatra 似乎还有提高并发更好的插件：sinatra-synchrony，官方说 对于网络并发有很大帮助。
官方地址：&lt;a href="http://kyledrake.net/sinatra-synchrony/" rel="nofollow" target="_blank"&gt;http://kyledrake.net/sinatra-synchrony/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;于是按照官方做法试了一下：
增加了 require "sinatra/synchrony"
再次用 ab 压测 ab -c 50 -n 2000  &lt;a href="http://127.0.0.1:4567/demo" rel="nofollow" target="_blank"&gt;http://127.0.0.1:4567/demo&lt;/a&gt;
Requests per second:    784.88 &lt;a href="mean" title=""&gt;#/sec&lt;/a&gt;
Time per request:       63.704 &lt;a href="mean" title=""&gt;ms&lt;/a&gt;
Time per request:       1.274 &lt;a href="mean,%20across%20all%20concurrent%20requests" title=""&gt;ms&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;发现没啥变化。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;官方提供 demo 和压测数据：&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require 'sinatra'
require 'sinatra/synchrony'
get '/' do
  'Sinatra::Synchrony is loaded automatically in classic mode, nothing needed'
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;$ ab -c 50 -n 2000 &lt;a href="http://127.0.0.1:9292/" rel="nofollow" target="_blank"&gt;http://127.0.0.1:9292/&lt;/a&gt;
...
Requests per second:    3102.30 &lt;a href="mean" title=""&gt;#/sec&lt;/a&gt;
Time per request:       16.117 &lt;a href="mean" title=""&gt;ms&lt;/a&gt;
Time per request:       0.322 &lt;a href="mean,%20across%20all%20concurrent%20requests" title=""&gt;ms&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;相差太大。当然我也知道，服务器性能也会影响压测数据。
但是从数据上看 sinatra 插件性能体现不是很明显。。&lt;/p&gt;

&lt;p&gt;不知道，大家在对于提供 sinatra 的并发，有哪些好的举措。。。。。&lt;/p&gt;</description>
      <author>690492623qq</author>
      <pubDate>Thu, 20 Dec 2012 14:29:44 +0800</pubDate>
      <link>https://ruby-china.org/topics/7717</link>
      <guid>https://ruby-china.org/topics/7717</guid>
    </item>
    <item>
      <title>关于 sinatra 中 路由使用 if else 问题</title>
      <description>&lt;p&gt;大家遇到 业务 繁杂时，if else 语句 判断语句 也就多了起来，那么是如何在 route 中处理的；不喜欢 if else 嵌套来 嵌套去，代码阅读费劲。
举个例子：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;get ‘/demo’ do
    id = param[:id]
    type = param[:type]
    if id.nil? || type.nil?
       content_type :json
            ........
    else
       #id，type 请求其他系统，再次嵌套。。。
       result = xxxxx
       if result.nil ?
         content_type :json
            ........
       else
         content_type :json
            ........
       end
   end
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;用 json 输出，上面代码就有点繁杂了，代码维护就难。。&lt;/p&gt;

&lt;p&gt;有没有类似 java 中输出&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;get ‘/demo’ do
if 条件1
  return  json数据
end

if 条件2   
  return  json数据
end

 其他数据输出
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者有其他的 好的方法。。。&lt;/p&gt;</description>
      <author>690492623qq</author>
      <pubDate>Wed, 19 Dec 2012 17:05:37 +0800</pubDate>
      <link>https://ruby-china.org/topics/7694</link>
      <guid>https://ruby-china.org/topics/7694</guid>
    </item>
    <item>
      <title>大家能否推荐适用于 Sinatra 比较好的数据表格</title>
      <description>&lt;p&gt;大家能否 推荐适用于 sinatra 比较好的数据表格。。&lt;/p&gt;

&lt;p&gt;谢谢。。。&lt;/p&gt;</description>
      <author>690492623qq</author>
      <pubDate>Thu, 06 Dec 2012 14:30:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/7364</link>
      <guid>https://ruby-china.org/topics/7364</guid>
    </item>
    <item>
      <title>ruby 去 转义符 函数</title>
      <description>&lt;p&gt;这是 http 请求得到的 数据。
"{
    \"response\": {
        \"docs\": [
            {
                \"language\": \"Name\",
                \"categoryid\": 11,&lt;br&gt;
                \"categorytype\": \"ARTIST\",
                \"name\": \"Featured\"
            }
        ],
        \"totalRecord\": 1,
        \"numFound\": 1
    }
}\r\n"&lt;/p&gt;

&lt;p&gt;ruby 有没有函数方法 直接将上面数据的 \和\r\n 去掉..&lt;/p&gt;

&lt;p&gt;这样得到的 json 格式 才正确。。&lt;/p&gt;

&lt;p&gt;谢谢。。。&lt;/p&gt;</description>
      <author>690492623qq</author>
      <pubDate>Wed, 05 Dec 2012 17:50:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/7341</link>
      <guid>https://ruby-china.org/topics/7341</guid>
    </item>
    <item>
      <title>http client</title>
      <description>&lt;p&gt;大家好，我最近使用 httpclient（&lt;a href="https://github.com/nahi/httpclient/blob/master/lib/httpclient.rb" rel="nofollow" target="_blank"&gt;https://github.com/nahi/httpclient/blob/master/lib/httpclient.rb&lt;/a&gt;）版本，不知道大家有没有用过，不过我最近用的时候发现几个问题：&lt;/p&gt;

&lt;p&gt;1：关于 httpclient 的超时问题，似乎无效。。
  client = HTTPClient.new&lt;/p&gt;

&lt;p&gt;client.receive_timeout = 5（单位 sec，源码中是设置了默认时间）&lt;/p&gt;

&lt;p&gt;这样设置也不行。。我的控制台输出执行前后时间差，几十秒，百秒都有。。。&lt;/p&gt;

&lt;p&gt;2：httpclient 看了官方文档，并没有提示 支持 对于 json 格式数据 进行 post 的方法。。。&lt;/p&gt;

&lt;p&gt;大家在 json 数据格式的 http client 你们是如何处理。。。。&lt;/p&gt;

&lt;p&gt;还有大家 觉得 ruby 中比较好的 http client 的 gem。。。。&lt;/p&gt;

&lt;p&gt;谢谢。。。。&lt;/p&gt;</description>
      <author>690492623qq</author>
      <pubDate>Mon, 03 Dec 2012 14:42:59 +0800</pubDate>
      <link>https://ruby-china.org/topics/7268</link>
      <guid>https://ruby-china.org/topics/7268</guid>
    </item>
    <item>
      <title>sinatra  运行容器</title>
      <description>&lt;p&gt;最近学习 ruby，用的 sinatra 框架 写了个 demo，发现很小巧，灵活，深深被 吸引住。。&lt;/p&gt;

&lt;p&gt;我开发的时候用 ruby 自带的 WEBrick 容器。&lt;/p&gt;

&lt;p&gt;后来发现 其他的 类似 WEBrick 容器，比如 thin，Mongrel，想问一下，大家平时开发&lt;/p&gt;

&lt;p&gt;和部署，根据什么条件筛选容器的。。谢谢&lt;/p&gt;

&lt;p&gt;Ps：本人是新手。。&lt;/p&gt;</description>
      <author>690492623qq</author>
      <pubDate>Tue, 27 Nov 2012 20:30:46 +0800</pubDate>
      <link>https://ruby-china.org/topics/7134</link>
      <guid>https://ruby-china.org/topics/7134</guid>
    </item>
  </channel>
</rss>
