2014-01-18 3 views
0

그 질문은 정말 간단하고 거의 모든 것이 제목에 들어 있습니다.Java new MongoClient()가 10 초 이상 걸립니다

나는 내 프로그램이 눈에 띄는 CPU 나 메모리 사용량의 변화없이 10 ~ 15 초 동안 중단

MongoClient mc = new MongoClient(); 

할 때.

이 후 데이터베이스에 대한 호출은 예상대로 번개처럼 보입니다. 내 프로그램이 로컬로 내 DB로 실행됩니다.

My dev 노트북은 꽤 빠르므로 하드웨어 관련 문제가 거의 없습니다.

Java에서 MongoDB를 처음 사용합니다. PHP를 사용하면 DB 연결이 거의 즉각적 이었으므로 여기서는 같아야합니다! 여기

이 내 프로그램

program start time : 1390057127744 // 0,000s 

new mongojacktest // a small object I made for my tests 

new MongoClient() // The output hangs here and if I comment this line I get errors 
     // but my entire program runs in 5ms or less 
start time :1390057127745 // 0,001s 
getDB(myTestDb) 
start time :1390057127745 // 0,001s 
getCollection - testCollection 
start time :1390057127745 // 0,001s 

print db collections : 
firstCollection 
system.indexes 

program exit time : 1390057143987 // 16,242s WTF? 

의 출력은 내가 놓친 게 있나요 또는이 정상입니까?

감사합니다.

답변

0

확실히 말할 수는 없지만 호스트 이름을 확인하려고 시도하고 있으며 DNS가 느리거나 도달 할 수없는 것일 수 있습니다. 당신이 할 수있는

MongoClient mc = new MongoClient("127.0.0.1", 27017); 

한 번 더 시도가 컴퓨터에 IPv6 프로토콜을 사용하지 않도록하는 것입니다 모드 (단일 몽고 노드에서 실행중인 경우)를 테스트하려면 그것을 서버의 정확한 주소, 즉 127.0.0.1을 전달합니다.

+0

이미 시도했지만 아무 것도 변경하지 않았습니다. 어쨌든 모든것이 로컬 컴퓨터에서 실행되고 "localhost"를 해결하는 것은 절대로 문제가되지 않습니다. 귀하의 답변 주셔서 감사합니다! – Johnride

+0

"127.0.0.1"로 시도하십시오.이 값은 기본값이지만 어쨌든 "localhost"가있는 이전 버전을 사용하고 있습니다. 추측 할 수 있습니다. –

+0

@Johnride 호스트와 포트를 추가해도 아무런 변화가 없었습니까? 내 랩톱에 대한 작은 테스트에서'새로운 MongoClient()'가 약 0.5 초 걸렸지 만'새로운 MongoClient (새로운 ServerAddress ("localhost", 27017)) (또는 "127.0.0.1"사용) 시각. 문제를 재현하여 여기에 게시하기 위해 작은 프로그램이나 단위 테스트를 작성할 수 있습니까? Java를 사용하면 지연을 실제로 일으키는 원인을 알기가 항상 어렵습니다. 가비지 수집으로 인해 불행해질 수 있습니다. 그렇지 않으면 완전히 관련이없는 것일 수 있습니다. – Trisha

관련 문제