1. 최근 mongodb를 운영하기 위해 spring-boot와 spring-data-mongo를 사용하고 있습니다
2. 매일 아침 서버 로그를 확인해보니 같은 오류가 발생하고 있는데, 다음날 누군가가 서버에 접속하면 오류가 발생할 것으로 추정됩니다.
3. 오류 로그는 다음과 같습니다.으아악
4. 몇 가지 해결 방법을 시도하고 mongodb를 연결하는 코드를 다음과 같이 변경했습니다.으아악
또한 서버(Ubuntu)의 ipv4 연결 유지 시간을 120초로 변경했습니다.하지만 여전히 오류가 있습니다. 모두가 조언을 해주셨으면 좋겠습니다. 감사합니다!
伊谢尔伦2017-05-31 10:37:10
MongoDB가 Java에서 유지 관리하는 연결을 시작했을 가능성이 높습니다(상태가 CLOSE_WAIT
로 변경되어 데이터를 보낼 수만 있고 더 이상 받을 수 없음).
연결 풀을 구성하거나(매우 복잡해 보임) 연결 풀을 사용하지 마세요. 즉, socketKeepAlive
设成false
;
문제는 모두 아침에 나타나기 때문에 MongoDB가 이른 아침에 연결을 재설정하는 전략이 있는지 확인할 수 있습니다.
ringa_lee2017-05-31 10:37:10
1. 쿼리 시간이 너무 길 수도 있습니다. 10초를 초과하는 명령문과 같이 쿼리 시간이 비교적 긴 명령문을 찾아 프로파일링이나 서버 로그 정보를 살펴보는 것이 좋습니다.
최적화하세요.2. 이 오류 상황을 완화할 수 있는지 확인하려면 SocketTimeout을 적절하게 늘립니다.
참고로.
MongoDB를 사랑해주세요! 재미있게 보내세요!
2017 MongoDB 중국어 커뮤니티 베이징 사용자 그룹 컨퍼런스가 2017년 6월 3일 13:00-18:00에 곧 개최됩니다
티셔츠와 기타 작은 선물도 있어요! 헤헤!
등록해주세요