2012-07-30 32 views
0

我剛剛將我的應用程序部署到VPS,並在apache2 +乘客設置上使用Rails 3.1.3和Ruby 1.9.3-p125。我正在使用最新的gmaps4rails 1.5.2。gmaps4rails在生產機器上運行緩慢

在本地運行應用程序時,我可以非常快速地找到使用gmaps4rails的位置。當我在我的VPS上嘗試這個時,需要60到70秒。如果我說出以下內容,那麼我可以非常快地提交我的表單,但是沒有找到位置。

acts_as_gmappable :check_process => false 

在生產服務器上找到它的位置後,它可以正常工作,顯示地圖並在模型中存儲了正確的位置。

更新

當運行我使用的WEBrick並通過相同的測試以開發模式運行的VPS應用程序,它也慢。這排除了apache2,乘客和生產環境。我開始認爲這是VPS的一個問題。

更新

仍在試圖找出爲什麼它需要很長的時間來處理,我採用手動Gmaps4rails在控制檯服務器上,像這樣:

require 'gmaps4rails' 
Gmaps4rails.geocode("66 Elizabeth st, Melbourne Victoria Australia") 

這花了62秒,與沒有錯誤信息。

更新

閱讀gmaps4rails的源代碼,並認爲這可能是一個問題的所有HTTP

所以我用捲曲來證明這一點

curl www.google.com.au 

這花了63秒請求。在我的開發箱上,它是2秒鐘。看起來像是延遲了我在服務器上的http請求。

更新

貌似我目前使用已經有很多DOS最近,也許仍然遇到一些攻擊VPS。這可能會增加網絡延遲和數據包丟失。

回答

0

gmaps4rails只是簡單地查詢谷歌的API來獲取地址的座標。

如果這太慢了,請考慮使用Gmaps4rails.geocode(address)在背景中製作地理編碼部分。

在這種情況下,禁用地理編碼上節省:acts_as_gmappable :process_geocoding => false

+0

你的意思是使用類似延遲工作的Gmaps4rails.geocode(地址) – map7 2012-07-30 13:51:36

+0

是的,沒錯:) – apneadiving 2012-07-30 13:58:15