我刚刚将我的应用程序部署到VPS上,我在apache2 +乘客设置上使用了Rails 3.1.3和Ruby1.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 www.google.com.au
这个花了63秒。在我的显影盒上是2秒。好像有什么东西在服务器上延迟我的http请求。
更新
看起来,我目前使用的VPS最近遭受了很多DOS攻击,而且可能还在经历一些攻击。这会增加网络延迟和数据包丢失。
发布于 2012-07-30 05:45:32
gmaps4rails只是在查询google的api,以便从一个地址获取坐标。
如果速度太慢,请考虑使用Gmaps4rails.geocode(address)
将地理代码部分放在后台。
在本例中,禁用保存上的地理编码:acts_as_gmappable :process_geocoding => false
https://stackoverflow.com/questions/11722762
复制相似问题