我刚刚将我的应用程序部署到VPS,并且我正在使用带有Ruby 1.9.3-p125的Rails 3.1.3,在apache2 +乘客设置上。我正在使用最新的gmaps4rails 1.5.2。
在本地运行应用程序时,我可以非常快速地找到使用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来证明这个
curl www.google.com.au
这需要63秒。在我的开发盒上它是2秒。看起来有些事情正在延迟我在服务器上的http请求。
更新
看起来我正在使用的VPS最近有很多DOS攻击,可能还会遇到一些。这可能会增加网络延迟和数据包丢失。
答案 0 :(得分:0)
gmaps4rails只是查询谷歌的api从地址获取坐标。
如果速度太慢,请考虑使用Gmaps4rails.geocode(address)
在后台制作地理编码部分。
在这种情况下,请在保存时禁用地理编码:acts_as_gmappable :process_geocoding => false