Unicorn和Passenger性能測試對比

測試工具:ab

 

測試用例:

1.短連接

2.長連接

 

APP:

class App < Sinatra::Application

        get '/' do
            "HELLO "+Time.now.to_s
        end 

        get '/sleep' do
            sleep 5
            "HELLO "+Time.now.to_s
        end
end

run App.new

 

測試環境:

Unicorn:

100進程,

寫道
[zheng.cuizh@localhost tbMemberServer]$ ps axf|grep unicorn -c
102
 

8080端口

Passenger:

基於nginx

100進程,

寫道
[zheng.cuizh@localhost tbMemberServer]$ ps axf|grep nginx -c
102
 

8081端口

 

測試結果:

場景1:

ab -c 100 -n 10000 10.1.166.138:8080/ => rps:1634

ab -c 100 -n 10000 10.1.166.138:8081/ => rps:1318

場景2:

ab -c 100 -n 100 10.1.166.138:8080/sleep?vcatwbwrge => rps:19.65

ab -c 100 -n 100 10.1.166.138:8081/sleep?v34rnjnf9 => rps:1.17

 

結果比較,unicorn比passenger性能看似好很多,但我不清楚如何關閉緩存,我對這兩個東西的配置還不是很熟悉,所以我猜測在測試過程中可能會有讀取緩存頁的情況,這會使得測試結果看起來速度更快。

 

不過passenger基於nginx,所以支持的併發訪問數要比unicorn高,比如測試1000併發的第二個場景時,unicorn出現socket closed by peer的提示,然後ab終止,passenger沒出現這個問題。實際生產環境unicorn不會出現在部署的最前端,也會用nginx作一層代理。

 

不管性能哪個更好,希望ruby的庫們越來越優秀,越來越豐富。

 

ps:誰告訴我一下這兩個server如何關閉cache?比如我用ab的話不能對每次url請求都生成一個隨機數,這時候就需要關閉server的緩存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章