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로 제한 할 수 있습니다 (here 및 here 참조).
예, 로그 및 출력 확인은 항상 권장됩니다. "xxx docs, xxx MB"를 수집하지만 위에서 언급 한 오류로 종료합니다 (이전 색인 사용, 회전 색인 'x': 사전 판독 실패보고). – 0x4a6f4672
임시 파일을 저장할 디스크 공간이 충분한 지 확인하십시오. 일반적으로 색인 크기의 1.3 배가 필요합니다. – barryhunter
df -h는 약 9GB가 무료라고 말합니다. 하지만 크기 제한과 관련이있을 수 있습니다. 질문 아래에 추가 한 텍스트를 참조하십시오. 어쩌면 어떤 종류의 2GB/int32 한계 일 것입니다. – 0x4a6f4672