2

これが私が決定したものです:

  1. デルタインデックスは開発でうまく機能します
  2. 本番サーバーにプッシュするとデルタインデックスが機能せず、searchd.logにアクションが記録されません
  3. 私はPhusionPassengerを実行しており、基本的なトラブルシューティングガイドで推奨されているように、次のことを確認しています。
    1. www-dataには、インデックスレーキタスクを実行する権限があります(コマンドラインから手動で実行します)。
    2. インデクサと検索へのパスが正しい(/ usr / local / bin)
    3. Production.logにエラーはありません

いったい何が欠けているのでしょうか?Ruby Enterprise 1.8.6、Rails 2.3.4、Sphinx 0.9.8.1、ThinkingSphinx1.2.11を実行しています。

ありがとう!

4

6 に答える 6

1

昨夜私が寝ていたとき、それは私を襲った。当然のことながら、それは悪い構成を含む愚かな問題でしたが、それがそれがした結果を生み出したことに私はかなり驚いています。ThinkingSphinxの内部についてはよく知らないと思います。

最近、サーバーを移行しました。sphinx.ymlは次のようになりました。

production:
  bin_path: '/usr/local/bin'
  host: mysql.mysite.com

新しいサーバーでは、MySQLは単なるローカルサービスでしたが、その行を削除するのを忘れていました。興味深いことに、手動のレーキのインデックス変更は依然として問題なく機能しました。明らかに問題の原因であるにもかかわらず、mysql.mysite.comが存在しなくなったため、ThinkingSphinxがデルタをリロードしようとしたときにエラーをスローしなかったことに興味をそそられます。

すべてのご協力に感謝し、そのようなばかげた問題を提起して申し訳ありません。

于 2009-10-26T19:11:34.473 に答える
0

これが私が取る次のトラブルシューティングのステップです。使用しているデルタインデックス戦略のファイルを開きます(おそらくlib/thinking_sphinx/deltas/default_delta.rb)。実際にインデックスコマンドを生成する行を見つけます。私の(v1.1.6)では20行目です:

output = `#{config.bin_path}indexer --config #{config.config_file} #{rotate} #{delta_index_name model}`

これを変更して、コマンド自体をログに記録できるようにします。また、出力もログに記録できるようにします。

command = `#{config.bin_path}indexer --config #{config.config_file} #{rotate} #{delta_index_name model}`
RAILS_DEFAULT_LOGGER.info(command)
output = `#{command}`
RAILS_DEFAULT_LOGGER.info(output)

デルタインデックスモデルを変更しながら、それを本番環境にデプロイし、ログを調整します。うまくいけば、それは実際にあなたに問題を示すでしょう。もちろん、問題はコードの他の場所にあり、この点に到達することすらできないかもしれませんが、ここから始めます。

于 2009-10-26T03:14:13.090 に答える
0

私も同じ問題を抱えていました。アプリではなく、コマンドラインで動作します。

インデックス作成に使用していたスレーブデータベースがまだあることがわかりましたが、スレーブは更新されていませんでした。

于 2010-04-14T15:13:48.510 に答える
0

上記のように、同じ問題が2台のマシンで私たちの側に直面しました。最初の問題はmysqlで発生し、apache2ログに表示されました。ローカルOSXマシンにのみ影響するようでした。

2回目にUbuntuサーバーにデプロイしたときに、同じ問題が発生しました。Rails cの生産は問題なく、エラーはありませんでした。

結局、権限の問題になりました。ルートとしてやっていたと思いますが、起動に問題がなかったのでわかりませんでした。

capistranoとpassengerを使用して、これを行いました。

  1. 乗客ユーザーを作成し、www-dataグループに追加
  2. deploy.rbのユーザーをpassengerに変更しました
  3. 上記が所有するすべての/currentファイルを手動で変更しました
  4. 乗客ユーザーとしてログインしました。
  5. Ran rake ts:rebuild RAILS_ENV = "production"

私たちのために御馳走を働いた...

幸運を

于 2011-07-22T23:13:44.257 に答える
0

Apache / Nginxのエラーログに手がかりはありますか?

于 2009-10-26T02:36:37.747 に答える
0

私はこの問題を抱えていて、上記の「bin_path」ソリューションを見つけました。うまくいかないように見えたとき、「ステージング」環境でテストしているときに、「本番」のサンプルコードを貼り付けたことに気付くのに少し時間がかかりました。問題が解決しました!

これは、sphinxの構成、インデックス作成、および開始を行うrakeタスクがすべて、passengerインスタンスと同じユーザーとして実行されていることを確認した後のことです。これらのタスクを実行するためにrootとしてサーバーにログインすると、これらのタスクはコンソールで機能しますが、パッセンジャー経由では機能しません。

于 2010-03-03T14:35:05.897 に答える