0

我已经接管了在 Rails (v2.3.5) 上运行 Ruby (v1.8.5) 和 Passenger (v2.2.9)、Thinking Sphinx (v1.3.14) 和 MySQL (v5.0.77-log) 的 Red Hat Enterprise Linux 5 系统. 我知道它们都过时了,但这不是问题。

该系统的用户已经注意到,最近输入的数据不像旧数据那样显示在查询中。例如,当查找旧数据时,这是日志中的一个片段:

                  7 Query       SELECT * FROM `patients` WHERE (`patients`.`id` = 618)
                  7 Query       SELECT count(*) AS count_all FROM `notes` WHERE (patient_id = 618)
                  7 Query       SELECT * FROM `notes` WHERE (`notes`.`id` IN (2238,2237,2092,2088))
                  7 Query       SHOW FIELDS FROM `categories`
                  7 Query       SELECT * FROM `categories` WHERE (`categories`.`id` = 3)
                  7 Query       SELECT * FROM `users` WHERE (`users`.`id` = 2)
                  7 Query       SELECT * FROM `categories` WHERE (`categories`.`id` = 2)
                  7 Query       SELECT * FROM `categories` WHERE (`categories`.`id` = 1)
                  7 Query       SELECT * FROM `users` WHERE (`users`.`id` = 6)
                  7 Query       BEGIN
                  7 Query       UPDATE `sessions` SET `data` = '[removed]\n', `updated_at` = '2013-04-12 20:08:26' WHERE `id` = 1836
                  7 Query       COMMIT

所以 MySQL 正在为患者 618 返回四个注释(id 为 2238、2237、2092 和 2088)。

另一方面,如果我选择上周二添加到系统中的患者,我知道该患者有三个与他相关的笔记,我会得到:

                  8 Query       SELECT * FROM `patients` WHERE (`patients`.`id` = 1157)
                  8 Query       SELECT count(*) AS count_all FROM `notes` WHERE (patient_id = 1157)
                  8 Query       BEGIN
                  8 Query       UPDATE `sessions` SET `data` = '[removed]=\n', `updated_at` = '2013-04-12 20:19:00' WHERE `id` = 1836
                  8 Query       COMMIT

缺少整个“SELECT * FROM notes”部分。我知道这些笔记在那里,因为如果我手动搜索它们就可以看到它们。

一些额外的潜在要点:

  • 这个系统已经三年多没有重新启动了,像 httpd 和 sqld 之类的东西也没有设置为在重新启动时自动启动,所以我不确定是否还有其他需要重新启动的东西。
  • 我没有 Ruby on Rails 的背景。我不知道 Thinking Sphinx 是什么,但我知道在运行命令“rake -f ~user/project/Rakefile ts:start RAILS_ENV=production”之前遇到了 HTTP 500 错误。
  • 系统刚刚从一个虚拟机场迁移到另一个(换句话说,V-to-V),但我已经检查了这可能会影响 RoR 安装的所有方式,并得出结论:它不会影响任何文件或功能。

您能给我的任何帮助将不胜感激!

4

1 回答 1

0

原来是 Thinking Sphinx 的问题。

TS 被设置为每小时以拥有该项目的用户身份运行其重新索引服务 (rake ts:reindex)。在调试问题时,我以 root 身份运行它,这将所有索引文件的所有权更改为 root。当用户的重新索引作业随后运行时,它返回一个

权限被拒绝,不会索引。尝试 --rotate 选项。

错误,或

资源暂时不可用,不会索引。尝试 --rotate 选项。

错误。

我最终以非 root 用户的身份从头开始重新创建索引文件,现在它又可以工作了。

于 2013-04-16T19:09:50.460 回答