題 Virtualbox中的Ubuntu - 使用本地IP地址時,WEBrick Web服務器速度非常慢


我正在使用Ubuntu(Lucid Lynx)來學習Ruby On Rails。我在VirtualBox中運行Ubuntu(主機是Windows 7旗艦版),使用橋接網絡。

當我運行我的Rails應用程序並使用localhost:3000將瀏覽器指向它時,應用程序立即響應,我的頁面將在一兩秒內呈現。

但是,如果我使用10.0.0.5:3000(其中10.0.0.5是我報告的IP地址使用 ifconfig),我的rails應用程序的響應是 令人難以置信 緩慢 - 服務器響應和呈現頁面可能需要30秒或更長時間。

這在Firefox和Chrome中都會發生。此外,當我從主機點擊Rails應用程序(在IE中測試它)時,我得到了相同的slooooooow響應。

可能會發生什麼想法?我用兩個不同的路由器和兩個不同的網絡(工作和家庭)嘗試了相同的結果。

乾杯全都。


7
2017-09-01 09:08


起源


與虛擬Ubuntu盒子的其他連接也很慢嗎?如何以另一種方式連接,從Ubuntu VM到Windows主機? - CarlF
我可以從Windows主機ping Ubuntu來賓,ping回復是立即的。此外,從Ubuntu guest虛擬機到Windows主機(例如Windows上的IIS網站)的連接速度很快。唯一的緩慢是當我使用IP地址訪問Ubuntu Rails服務器時。運用 localhost 很好。 - Lenny Marnham
我有同樣的問題,但無論我使用'localhost'還是數字IP,響應都很慢。加載每個資源(圖像,js,等等)需要幾秒鐘。我嘗試過混蛋,瘦身,獨角獸...我想唯一的解決辦法就是在apache下使用乘客嗎? - emzero
可能與反向dns查找有關。 - artistoex
本文可能會提供一個答案: stackoverflow.com/questions/1156759/... - Etienne


答案:


試試跑步

sudo service avahi-daemon stop

還可以嘗試設置WEBrick /usr/lib/ruby//webrick/config.rb

:DoNotReverseLookup => true

另見: “Stackoverflow WEBrick從遠程桌面緩慢”


8
2018-01-27 18:53



+1停止Avahi立即產生影響。你能解釋一下為什麼嗎? - Amro
@Amro,不確定。 http://mercenary-code.blogspot.co.uk 建議它並提及從/etc/rc3.d刪除符號鏈接,因此它不會重新啟動。 這燈塔票 提到avahi試圖解決127.0.0.255的反向映射導致超時。 http://qzdrproject.wordpress.com 在strace / wireshark中挖掘以找到解決方案。 - James EJ
這對我有用,它似乎確實是由反向查找引起的,最終會超時。 - Ed Bishop


這是WEBrick問題,使用其他Web服務器時沒有問題。

我使用Ruby on Rails 3.0.x嘗試了Mongrel和Thin,兩者都很好用。

我建議使用Mongrel - 只需將其添加到您的Gemfile:

gem "mongrel"

或者您可以將其設置為僅用於開發和測試,而不是為了破壞生產:

group :test, :development do
  gem "mongrel"
end

現在以與之前相同的方式啟動服務器,並且Mongrel啟動而不是WEBrick。

如果您更喜歡Thin,則需要啟動服務器 thin start 或WEBrick將啟動。


1
2018-01-17 16:00





我在VirtualBox和VMware下都遇到了同樣的問題。不知道問題是什麼......它就像Rails服務器正在尋找一些必須超時的東西? Rails服務器在日誌中報告快速渲染時間,但需要永久響應每個請求。在一個特定的Ubuntu實例上(在VirtualBox和VMware下都嘗試過),我在Rails 2.3.8和Rails 3.0.3中都會發生這種情況。我在另一個沒有問題的盒子上有另一個Ubuntu VM ...

在令人沮喪地追逐這一段時間後,我的解決方案是在開發模式和Apache中使用Phusion Passenger。


0
2017-12-14 23:00





警告:這是一個非答案(除了建議只使用Passenger),但我記錄了我自己的經驗以及我做過的一些實驗,希望能幫助我們接近結論。

我有完全相同的問題。它突然出現了。在ping前面我也有類似的觀察。我的Ubuntu客戶端也運行一個常規的LAMP堆棧,那裡絕對沒有服務問題。對於它的價值,它似乎是 unix_stream_data_wait 是(主要是?)歸咎於掛斷。我無法真正解析這意味著什麼超出了微不足道或如何進一步調查。

這似乎與端口號無關(將軌道移動到較低端口,如 rails s -p 30 不會改變問題,而設置為偵聽端口3000的其他服務不會遇到相同的服務問題)。

它似乎也獨立於應用程序代碼。我嘗試使用裸軌應用程序,延遲再次出現。

延遲似乎也在持續時間上有所不同,這引發了一個潛在的問題,即Rails可以預測超時。

以同一“批次”發送的請求似乎同時得到滿足。這表明在Rails進程和網絡處理程序之間的界面中有一些東西,其中界面只是緩慢但在事務最終通過時清除了他的盤子。

總的來說,奇怪的奇怪怪異。

我跟著去了 乘客 代替。


0
2018-01-05 05:37





這個真的很奇怪。我發現,如果我從putty響應啟動rails服務器比從VirtualBox窗口啟動它要快得多...


0
2018-04-30 16:04





如果您使用的是WEBrick,則可以嘗試使用Thin。在您的Gemfile中添加thin:

gem 'thin'

並通過運行安裝它:

bundle

運行以下命令啟動服務器:

thin start

0
2017-10-10 02:07