我刚刚将我的应用程序部署到 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 攻击,并且可能仍然遇到一些。这会增加网络延迟和数据包丢失。