2016-10-11 4 views
0

로컬 컴퓨터에서 Tomcat/Spring 서버를 실행하고 있으며 POST 요청을 서버에 차례로 빠르게 보내는 다른 프로그램을 실행하고 있습니다. 각 요청은 원격 Postgresql 데이터베이스에서 업데이트를 일으키고 다음 요청이 완료되기 전에 완료됩니다 (응답 코드 플러시).서버 오버로드 된

약 100 건의 요청 후에 서버는 응답하는 데 더 오래 걸리기 시작합니다. 약 200 요청 후, 서버가 응답을 멈추고 Eclipse 또는 Windows 작업 관리자에서 수동으로 죽일 때까지 사용 가능한 모든 처리를 수행합니다.

한순간 서버에서 가비지 수집에 대한 오류가 발생하지만 지난 몇 번 본적이 없습니다. 이 가비지 수집 오류를 보았을 때 가비지 수집 시간을 서버에 제공하기 위해 20 건의 요청을 5 초씩 추가했지만 도움이되지는 않습니다.

어떻게이 서버 과부하의 원인을 추적하고 해결할 수 있습니까?

+1

메모리 누출이 있습니다. –

+0

@ KarthikeyanVaithilingam- 그게 실제로 도움이되었고, 올바른 방향으로 나를 지적했다, 고마워. 지금은 http://stackoverflow.com/questions/40119/how-to-find-a-java-memory-leak를보고 있습니다 ... –

+0

JVM Explorer 프로파일 링을 사용하여 생성 된 세션까지 문제를 추적했습니다. 각 요청,하지만 결코 처분. 관련 요청이 끝날 때마다 각 세션을 무효화함으로써 메모리 문제가 사라졌습니다. –

답변

0

메모리 사용을 모니터링 했습니까? 그러나 다음은 문제를 추적하는 몇 가지 방법입니다.

  1. 작업 관리자에서 메모리 사용량을 시간별로 추적합니다.
  2. 때때로 스레드 덤프를 가져 오십시오.
  3. visualVM을 사용하여 CPU 사용을 추적하십시오.
  4. DB 연결이 닫히는 지 확인하십시오.

    visualVM이 이러한 문제를 진단하기위한 도구가 될 수있는 더 많은 것들이있을 수 있습니다.