2014-08-28 5 views
0

thinking_sphinx 3.1.1이있는 레일 3.2.18이 개발에서 생산 모드로 전달되고 있습니다. 과정에서 , 동안 다음 작업 중 하나를스핑크스가 로컬 색인에 액세스하지 못한다는 것을 생각하십시오

bundle exec rake ts:rebuild 
bundle exec rake ts:index 
bundle exec rake ts:stop 
bundle exec rake ts:start 

검색은 내가 처음에 개발이 shared 디렉토리를 가지고 있기 때문에 응용 프로그램에서 실행이 개 검색의 PID를 HADE 것을 깨달았다

ActionView::Template::Error (unknown local index [...] 

와 함께 종료된다 스핑크스 표시와 tmp/pid 파일이 놓여있다. 그 결과 이월되어서 두 개의 pids가 생성되었습니다. 하나는 공유 폴더 내이고 다른 하나는 응용 프로그램 릴리스의 공유 폴더에 있습니다. 이런!

여전히 ps aux | grep searchd
/fna/shared/config/development.sphinx.conf PID를위한 두 가지 프로세스를 반환하는 공유 폴더에 그들이 아직 개발, 다른 응용 프로그램 개발 부르는 하지 일치하지 않습니다 (!)도 두 프로세스

있다

1) 두 프로세스가 정상입니까?
2) production.shpinx.conf에 대해 pid를 시작하는 방법 (그리고 부수적 인 오염을 없애는 방법)?

나는 이것이 또한 카피 스트라 노 배포의 영향을받을 수 있음을 알고 있으며, 문제가 올바르게 처리되도록 제안을 환영합니다.

업데이트 ps ax | grep "searchd"

kill 99335 

에 적절한 활성의 PID를 준 두 PID를 적절한 환경

shared/config/production.sphinx.conf 

및 재배포위한 지금

RAILS_ENV=production bundle exec rake ts:rebuild 
[...] 
Started searchd successfully (pid: 7086) 

을 달렸다. 성공했다. 나머지 의심은 카피 스트라 노 배포에 있습니다. 색인 야간 실행 (와 같은 허용)되는 것을 감안하면 deploy.rb 파일은 다음을 포함한다 :

invoke_command "cd #{release_path} && RAILS_ENV=#{rails_env} bundle exec rake ts:rebuild" 

답변

1

당신은 모든 배포 한 후 ts:rebuild를 실행할 필요가 없습니다 - 그것은 db:migrate처럼,이 경우에만 필요한 것 당신은 당신의 인덱스의 구조를 바꾸거나, 인덱스를 추가/삭제할 수 있습니다. 의 데이터를 개의 색인으로 업데이트하려면 ts:index 작업을 사용하십시오 (정기적으로 이미 수행하고있는 것처럼).

paths are set up correctly 모든 생산 Sphinx 파일이 특정 릴리스 디렉토리 외부에 있는지 확인하는 것이 좋습니다. 공유 디렉토리 나 심볼릭 링크 된 파일에 의존하지 않고 비슷한 디렉토리에 넣는 것이 가장 좋습니다. 이것이 모두 설정되면 배치 작업의 일부로 TS 작업을 실행할 필요가 없습니다.

또한 Sphinx v3는 Sphinx의 threaded 작업자를 사용하므로 적어도 두 개의 프로세스가 있습니다. 하나는 마스터이고 다른 하나는 첫 번째 연결을 기다리는 프로세스입니다. 더 많은 동시 연결이 있으면 더 많은 검색 프로세스가 있습니다.

+0

우수 : 안개 흩어짐 덕분에! – Jerome