2013-04-08 68 views
2

我正在學習Lift框架。我使用git://github.com/lift/lift_25_sbt.git的項目模板,並使用容器啓動服務器:啓動 sbt命令。爲什麼升降架這麼慢?

此模板應用程序只顯示簡單的菜單。如果我從apache使用ab來衡量性能,那就相當糟糕了。我錯過了提高性能的根本原因?

C:\Program Files\Apache Software Foundation\httpd-2.0.64\Apache2\bin>ab -n 30 -c 
10 http://127.0.0.1:8080/ 
Benchmarking 127.0.0.1 (be patient).....done 

Server Software:  Jetty(8.1.7.v20120910) 
Server Hostname:  127.0.0.1 
Server Port:   8080 

Document Path:  /
Document Length:  2877 bytes 

Concurrency Level:  10 
Time taken for tests: 8.15625 seconds 
Complete requests:  30 
Failed requests:  0 
Write errors:   0 
Total transferred:  96275 bytes 
HTML transferred:  86310 bytes 
Requests per second: 3.74 [#/sec] (mean) 
Time per request:  2671.875 [ms] (mean) 
Time per request:  267.188 [ms] (mean, across all concurrent requests) 
Transfer rate:   11.73 [Kbytes/sec] received 
+0

我很驚訝,因爲我發現Lift很快。一個念頭:我注意到,在啓動服務器之後,我對服務器發出的第一個請求延遲了幾秒鐘。也許你的基準是看到這種延遲,它正在拋棄結果?如果你先讓它「熱身」,也許你會得到更快的結果。 – Dylan 2013-04-09 01:25:55

回答

2

您是否正在生產模式下運行它?我發現我在開發中有30 rps,但在生產模式下超過250。 (https://www.assembla.com/spaces/liftweb/wiki/Run_Modes

+0

是的,這就是我的想法。或者你的硬件就像10歲。 :s – 2013-04-09 08:12:54

+0

在生產模式下,我有100個請求/秒。 – 2013-04-09 21:04:05

1
  • 正如前面提到的,你應該運行在生產模式提升。這是獲得良好表現的主要關鍵。所有模板都以這種方式緩存,其他優化適用。
  • 如果你想測量一些不是抽象的和理論的東西,那麼你應該給JVM時間「熱身」,應用它的JIT優化。所以,你應該先申請〜千個請求,並完全忽略它們(必須是幾秒鐘)。在那之後,測量一個已經啓動的服務器的實際性能
  • 有一些輕微的JVM的優化,altrough他們似乎更像是一個黑客給我,並給升壓不超過20%左右
  • 等小竅門包括:使用nginx提供靜態內容,在專用服務器中啓動應用程序,而不是簡單構建工具等。
+0

ey @ vasya-novikov你可能會談論哪些JVM優化? – tyoc213 2013-09-29 01:53:03

+0

@ tyoc213,我沒有對確切的選項進行網絡搜索,但它是關於應該嘗試垃圾收集的新創建對象的百分比。意味着JVM嘗試垃圾收集的頻率,AFAIremember。這是指一般的「JVM調優」,如果真的需要這可能是一個複雜的話題。例如,如果你有很多機器,並且爲你的確切應用獲得20%的提升,這確實意味着什麼。 – VasyaNovikov 2013-09-29 08:24:21

+0

@ tyoc213(我從來沒有使用過第三件事,沒有時間做這件事,第4件和第1件作品很棒,2件就是JVM的工作方式。) – VasyaNovikov 2013-09-30 12:54:22