0

Passenger (v2.2.9)、Thinking Sphinx (v1.3.14)、および MySQL (v5.0.77-log) を使用して Rails (v2.3.5) で Ruby (v1.8.5) を実行している 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 に対して 4 つのメモ (ID が 2238、2237、2092、および 2088) を返しています。

一方、先週の火曜日にシステムに追加され、3 つのメモが関連付けられていることがわかっている患者を選択すると、次のようになります。

                  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」セクション全体が欠落しています。手で探せば見えるのでメモがあることは知っています。

いくつかの追加の潜在的に顕著な点:

  • このシステムは 3 年以上再起動されておらず、httpd や sqld などは再起動時に自動起動するように設定されていないため、他に再起動が必要なものがあるかどうかはわかりません。
  • Ruby on Rails のバックグラウンドはありません。Thinking Sphinx が何であるかはわかりませんが、コマンド「rake -f ~user/project/Rakefile ts:start RAILS_ENV=production」を実行する前に HTTP 500 エラーが発生していたことは知っています。
  • システムはある仮想マシン ファームから別の仮想マシン ファームに (つまり、V から V に) 移行されたばかりですが、これが RoR のインストールに影響を与えた可能性があるすべての方法を調べた結果、次のような結論に達しました。ファイルや機能に影響を与えることはできませんでした。

あなたが私に与えることができるどんな助けでも大歓迎です!

4

1 に答える 1

0

Thinking Sphinx の問題であることが判明しました。

TS は、プロジェクトを所有するユーザーとして 1 時間ごとに再インデックス サービス (rake ts:reindex) を実行するように設定されています。問題をデバッグしているときに、ルートとして実行したため、すべてのインデックス ファイルの所有権がルートに変更されました。その後、ユーザーのインデックス再作成ジョブが実行されると、次のいずれかが返されました。

許可が拒否されました。インデックスに登録されません。--rotate オプションを試してください。

エラー、または

リソースは一時的に利用できません。インデックスは作成されません。--rotate オプションを試してください。

エラー。

非ルートユーザーとしてインデックスファイルを最初から再作成することになりましたが、今では再び機能しています。

于 2013-04-16T19:09:50.460 に答える