【发布时间】:2023-03-27 12:36:01
【问题描述】:
我有两个 Rails 应用程序(现在都在 Rails 3.1.1 上),它们运行良好。但是,我在两者之间存在依赖关系。应用程序A 通过链接使用应用程序B 的数据。这些链接是自动创建的,但必须通过查找应用程序B 的数据来计算它们。我正在使用 Ruby 1.9.2 和 Thin 作为 Web 服务器在 Windows 7 上工作,这不会改变:-(
我尝试了以下方法:
- 只使用一个 RESTful 资源,因此定义了一个控制器,称为它的操作(
get_xml_obj,其中包含一些参数),从 XML 中读取所需的值。有效,但每次调用大约需要 0.5 到 1 秒。 - 将其替换为 ActiveResource#find,效果也不错,但性能与之前的解决方案相同。
- 我已经安装了 nginx 并对其进行了配置,使连接保持活动状态,因此连接处理应该更快。但是从
A调用B时发现没有任何区别。
当我比较花费的时间时,这些是典型的例子(这里在一个网页中有 4 个参考):
应用 A:
Started GET "/tasks/search_task/1803" for 127.0.0.1 at 2011-11-02 14:11:04 +0100
Processing by TasksController#search_task as HTML
Parameters: {"id"=>"1803"}
Rendered tasks/_tooltip.html.haml (4529.5ms)
Completed 200 OK in 4532ms (Views: 4527.5ms | ActiveRecord: 2.0ms)
cache: [GET /tasks/search_task/1865] miss
应用 B:
cache: [GET /service/get_xml_obj?key=notice&value=rails] miss
Started GET "/service/get_xml_obj?key=notice&value=rails" for 127.0.0.1 at 2011-
11-02 14:11:05 +0100
Processing by ServiceController#get_xml_obj as */*
Parameters: {"key"=>"notice", "value"=>"rails"}
Completed 200 OK in 6ms (Views: 3.0ms | ActiveRecord: 1.0ms)
和其他 3 个具有相似长度(
那么我可以做些什么来调整检索(无需直接访问数据库)?你知道如何测量和调整 Web 服务器和中间件的任何好的文档吗?这些只是个人应用程序,因此无法将它们部署在像样的服务器上。我对检索到的信息使用缓存,所以随着时间的推移它会变得更好,但是等待 1 秒太长了。并且我要呈现的页面中可能有超过 1 或 2 个链接。
【问题讨论】:
-
不能直接进入数据库吗?
-
也许我可以(将是下一次尝试获得更好的性能)。但是它也有一些缺点:2个数据库连接,很多模型对象的重复。当然,我希望看到有可用的高性能 Rails 解决方案。
-
将共享模型放入插件/gem。
标签: ruby-on-rails ruby-on-rails-3 performance ruby-on-rails-3.1