0

我刚刚将我的应用程序部署到 VPS,并且在 apache2 + 乘客设置上使用 Rails 3.1.3 和 Ruby 1.9.3-p125。我正在使用最新的 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 攻击,并且可能仍然遇到一些。这会增加网络延迟和数据包丢失。

4

1 回答 1

0

gmaps4rails 只是查询 google 的 api 以从地址获取坐标。

如果这太慢,请考虑使用Gmaps4rails.geocode(address).

在这种情况下,请在保存时禁用地理编码:acts_as_gmappable :process_geocoding => false

于 2012-07-30T13:45:32.320 回答