현재 시나리오는 다음과 같습니다. 머신의 성능은 CPU가 매우 nb라는 것입니다. i7의 모델번호를 잊어버렸습니다. nb는 쿼리 중에 CPU 작업이 거의 없음을 의미합니다. htop을 통해 보세요. 그런데 메모리가 좋지 않고 8g밖에 안되는데 앞으로 메모리는 확실히 늘어날 것 같아요. 하드디스크도 일반 기계식 디스크라 나중에 교체하겠지만 그건 나중을 위한 것입니다. 지금 느낀 점은 쿼리 데이터가 10만개를 넘으면 io에 병목 현상이 나타나고 io가 잠기며 메모리가 잠기는 현상이 발생한다는 것입니다. 사용량도 가득 찼습니다. 결과적으로 다른 작업이 중단됩니다. 이 영향은 작지만 웹 페이지의 긴 대기 시간에 반영됩니다.
현재 다음과 같은 최적화가 이루어졌습니다.
1. Linux 스택 크기 값을 조정합니다.
2.인덱스를 생성합니다.
3. 최근(1개월) 동안 수정되지 않은 일부 인기 데이터를 별도의 컬렉션에 넣습니다.
위의 세 가지 최적화를 통해 상황은 더 좋아질 것입니다. 그러나 쿼리에 여러 조건이 있으면 인덱스가 유효하지 않게 됩니다. 상황은 여전히 나쁩니다.
아주 모순적이네요. 어떻게 하면 잘 대처할 수 있을까요? 그렇다면 동일한 구성의 다른 서버가 있다면 샤딩 등의 작업을 통해 이 상황을 해결할 수 있을까요?
감사합니다
巴扎黑2017-05-17 10:04:32
mongoDB, 최적화는 1. 메모리 추가 2. 메모리 추가 3. 마더보드의 최대 메모리 삽입.
redis + mysql 솔루션으로 변경하는 것을 고려해 볼 수 있습니다.
某草草2017-05-17 10:04:32
참고로.
1. 먼저 어떤 비즈니스 CRDU 작업이 느린지 확인한 다음 이러한 작업을 중심으로 최적화하세요.
2. 일반적으로 메모리 추가/SSD 교체는 비교적 일반적인 관행입니다. 최적화를 위한 몇 가지 공통 매개변수 설정도 있습니다. MongoDB의 프로덕션 노트를 참조하여 그에 따라 구성할 수 있습니다.
https://docs.mongodb.com/manu...
MongoDB를 사랑해주세요! 재미있게 보내세요!