2015-01-09 98 views
0

我的服務器運行速度極其緩慢......除了我自己以外沒有任何流量。我使用Nginx代理Unicorn服務器。我對服務器優化知之甚少。首次裝載時間總共爲13秒,時間爲10秒。基本服務器優化 - 帶有1個連接的緩慢服務器

網:

​​

http://i.imgur.com/qFVOUWr.png

http://i.imgur.com/OS4mYVM.png

什麼是我刮鬍子10秒掉它的最快方法?

注意:資產尚未預編譯。

編輯:如果我將Nginx剪掉進程並直接服務於Unicorn,我就下降到1.72秒。它看起來好像Nginx是罪魁禍首。我仍然不明白爲什麼Nginx會讓我放慢腳步。

回答

0

好了,所以......

瓶頸確實是由於Nginx的或相當的Nginx和獨角獸之間的相互作用。直到我讓Unicorn和Nginx在其各自的配置文件中使用套接字之後,它纔得到解決。

獨角獸需要此:

listen ENV["UNICORN_PORT"].to_i || 4567, :tcp_nopush => true 
listen "#{@dir}tmp/sockets/unicorn.sock", :backlog => 64 

和nginx的需要指向插座的上游配置。

upstream unicorn_server { 
    server unix:/home/user/someapp/tmp/sockets/unicorn.sock 
    fail_timeout=0; 
} 

服務器第一響應時間現在下降到1-2秒。

1

你需要找出瓶頸在哪裏。這是很難僅僅通過網絡圖來猜測,但你應該檢查你的系統以下級別:

  • OS水平 - 如果它有足夠的資源:處理器使用,負荷平均,內存(是系統交換?)
  • 數據庫級別 - 最有可能會出現瓶頸,因爲您只有一個會話有問題;跟蹤並檢查哪些數據庫運行並調整它們的查詢(索引,統計數據取決於數據庫服務器);在應用程序服務器運行時檢查數據庫鎖定
  • 應用程序服務器級別 - 它取決於應用程序本身,但最好查看它正在運行的代碼;也許它正在等待一些東西,比如外部系統的響應?
+0

感謝您的意見。 我只是試着直接連接到3000端口(我運行Unicorn服務器)。加載時間現在總共爲1.72秒。這是從13秒... 因此,我認爲這是公平的說,Nginx的代理是瓶頸? –

+0

這會很奇怪 - 它只是一個代理,它只是傳輸請求,所以它應該很快。這種行爲是否重複?這可能是一個巧合(第一個請求很慢,第二個更快,因爲緩存填滿等)。而我在想,也許DNS解決速度緩慢? – Grych

+0

因爲這是一個配置問題,我在想,如果沒有正確的配置,Nginx會搜索所有的套接字,直到它找到一個連接 - 這可能會解釋延遲? –