2012-04-24 4 views
1

MySQL 데이터베이스 중 하나의 Sphinx 인덱스를 재구성하는 동안 문제가 발생합니다. 인덱스 회전 및 다시 작성이 반복적으로 실패하고 시스템은 이전 인덱스를 계속 사용합니다. 데이터베이스 크기는 지난 달에 두 배로 증가했으며 이제는 1 천만 개가 넘는 행이 포함 된 테이블을 포함합니다. (여기에 사용 UltraSphinx 플러그인에 의해 생성)스핑크스 인덱스 재구성 실패

indexer --config our_config.conf --rotate --all 

와 스핑크스 지수의 재 구축하는 동안, 우리는 스핑크스 데몬 로그 파일에 다음과 같은 오류가

WARNING: rotating index 'main': preread failed: failed to open 
~/etc/sphinx//sphinx_index_main.new.spi: No such file or directory; 
using old index 
WARNING: rotating index 'main': preread failure reported 

오류 메시지가 발생 searchd.log 얻을 데이터베이스가 커질수록 빈도가 증가합니다. 전체 색인 생성은 약 1 시간 30 분이 소요되며 색인 파일은 함께 1GB보다 큽니다. 이 문제를 해결하기 위해 Sphinx 버전을 0.9.8.1에서 2.0.4로 업데이트했지만 여전히 존재합니다. 서버는 약 4 GB 메모리를 가지고 있으며, 문제가 해결 될 수있는 사람에게 아이디어를 어떻게 구성 파일은

indexer { 
    mem_limit = 1024M 
} 

searchd { 
    read_timeout = 5 
    max_children = 300 
    log = ~/etc/sphinx/log/searchd.log 
    port = 3313 
    max_matches = 100000 
    query_log = ~/etc/sphinx/log/query.log 
    seamless_rotate = 1 
    pid_file = ~/etc/sphinx/log/searchd.pid 
    address = 127.0.0.1 
} 
.. 

로 시작? 나는 2GB 한계와 관련이있는 일종의 인덱스 크기 한계가있는 것으로 추측됩니다. 특정 파일 시스템에서 파일 크기에 대한 최대 값과 부호있는 32 비트 정수의 최대 값입니다. 우분투/데비안 시스템에서 사용하는 ext3 파일 시스템은 파일 당 최대 16GB를 허용하지만 특정 라이브러리는 실제로 파일 크기를 2GB로 제한 할 수 있습니다 (herehere 참조).

답변

1

인덱서 자체의 출력을 확인하십시오. 인덱싱 중에 진행 상황을 보여 주므로 문제에 대한 단서를 제공 할 수 있습니다.

+0

예, 로그 및 출력 확인은 항상 권장됩니다. "xxx docs, xxx MB"를 수집하지만 위에서 언급 한 오류로 종료합니다 (이전 색인 사용, 회전 색인 'x': 사전 판독 실패보고). – 0x4a6f4672

+0

임시 파일을 저장할 디스크 공간이 충분한 지 확인하십시오. 일반적으로 색인 크기의 1.3 배가 필요합니다. – barryhunter

+0

df -h는 약 9GB가 무료라고 말합니다. 하지만 크기 제한과 관련이있을 수 있습니다. 질문 아래에 추가 한 텍스트를 참조하십시오. 어쩌면 어떤 종류의 2GB/int32 한계 일 것입니다. – 0x4a6f4672

0

데이터 위치를 확인하십시오. Sphinx가 ~/etc/sphinx//sphinx_index_main.new.spi에 임시 색인 파일 (인덱서가하는 것)을 만들고 싶습니다. 나는 두 가지를 본다. 하나는 ~이다, 이것이 작동하는지 확실하지 않다. 다른 것은 double /입니다.

IIRC 이것은 Sphinx 설정 파일의 색인 부분에 있습니다.

+0

~을 단지 약어로 사용했습니다. 실제 경로는/home/username으로 시작합니다. 이중 /도 알았지 만 데이터베이스가 커질 때까지 작동했기 때문에 근본 원인이 아닌 것 같습니다. – 0x4a6f4672