2013-08-22 17 views
11

我正在使用play framework 1.2.5,過去兩天我在負載測試中遇到了一個很大的問題,那就是每個API調用服務器的平均時間大約需要1200-1400ms,但是今天我只更改了以下內容在文件application.conf極大地減少了的平均時間20一個線 - 50毫秒,行如下,在「application.conf」文件中從DEV更改爲PROD模式時會發生什麼情況?

application.mode=prod 
    %prod.application.mode=prod 

最初它是象

application.mode=dev 
    %prod.application.mode=prod 
從這個

所以我可以理解從開發到生產的變化使我在互聯網上發現的東西是,在dev模式play.pool = 1默認情況下,而在生產模式play.pool =沒有處理器+ 1,我的Ubuntu機器是4處理器,所以它使用5個線程。現在來解決這個問題,如果我發現是真的,那麼當我在application.conf中手動更改play.pool = 5時,如果我設置play.pool = 1並且在生產中運行,則不會給我更快的結果模式也不會減慢我的應用程序加載測試結果,所以我需要知道從dev切換到prod模式時發生了什麼,除了這個play.pool,這使我的應用程序更快。因爲我面臨的問題在UAT中沒有改變prod模式的好結果,它只能在我的本地主機上運行。請在提前找到我的解決方案。

UPDATE:

是的,我知道所有在DEV模式一樣東西的應用程序重新加載和編譯,但是,或許它不是隻在初始程序加載,我認爲每一個要求,但我的問題是這prod模式工作正常在我的本地主機和我的本地服務器,當我去UAT我得到一個壞的結果負載測試約800ms平均。即使我在本地執行loadtest(jmeter安裝在服務器機器上,並且使用遠程桌面連接對它進行負載測試),該應用程序甚至在prod中也很慢。因此,除了編譯和重新加載之外,當我從DEV更改爲PROD模式時,我需要知道application.conf文件中執行的所有更改如play.pool從1個線程更改爲(無處理器+ 1)線程。供參考:我的本地主機系統是4處理器機器,本地服務器機器是4處理器,但UAT機器是2處理器,如果這是我甚至嘗試將池線程更改爲10(play.pool = 10)在UAT沒有好的結果。

回答

3

除了單線程之外,在dev模式下,應用程序啓動被延遲,直到發送第一個請求。在prod模式下,應用程序將立即啓動。這顯然會影響第一個請求的加載時間。

我猜dev模式中的'壞'性能主要是由於在運行時重新加載和編譯類的功能造成的。在每個請求上,檢查類是否有變化,並且可能會重新加載。我認爲這個功能非常值得增加加載時間,我不知道是否可以停用。

您可能不應該在開發模式下運行任何性能/驗收測試。 Here's a short a discussion about it。您應該使用prod模式,而不是試圖提高開發模式性能。

+0

是的,我知道所有的重裝和compilingin開發者模式,但什麼我的問題是從DEV更改爲PROD模式的思想工作在我的本地和本地服務器的罰款是充塞,但這種想法是不是在UAT良好(美國測試網站)。請在問題 –

2

在跳到你的槍之前,你應該做更多的分析。
首先,您試着瞭解額外花費的時間。

  • 渲染模板?
  • 掛着等待數據庫連接?
  • 有沒有線程鎖?
  • 數據庫是否已使用索引進行了優化?
  • 你有沒有測得的處理器和內存使用情況?
  • 您是否在做任何昂貴的IO操作?
  • 是這臺機器上運行的任何其他進程?
0

你是如何在生產服務器上啓動遊戲?

我希望您已經閱讀:http://www.playframework.com/documentation/1.2.5/production

你的問題實際上是關於性能問題。可能有許多因素會導致您當地環境和生產的性能差異。除了Play,數據庫是否在同一個盒子上運行?

+0

中查看我的更新是的,數據庫在同一臺機器上運行。 –

相關問題