2013-02-21 2 views
8

Tomcat에서 페이지 응답 시간을 마이크로 최적화 한 적이 거의 대부분의 경우에 내가 새로 고침하면 응답 시간이 50ms이 될 것입니다. 그러나 페이지가 두 번째로 적중하지 않으면 또는 두 응답 시간이 500ms까지 다시 점프합니다.Tomcat 산발적 대기 시간

로컬, 로컬, APR, NIO, JIO, 정적 또는 동적 응답 (정적 파일 제공 또는 응답 동적 전달)에 관계없이이 동일한 동작을 보았습니다. 지금까지이 동작을 아직 보지 못했습니다. 이 Tomcat에서 발생하지 않습니다 (주파수에 관계없이 400ms 이하의 일정한 시간이 필요합니다).

Visual VM을 사용하여 단서가 있는지 확인했습니다.

저는 계속 살아 있다고 생각했지만 Apache Bench을 실행하면 응답 시간이 50ms 이상으로 단축되었습니다 (자주 발생하기 때문에).

그렇다면 Tomcat에서 자주 발생하지 않는 낮은 대기 시간을 어떻게 유지합니까? 아마도이 질문은 ServerFault에서 더 좋습니다.

업데이트 : 저는 Tomcat 6 호에 거의 긍정적입니다. 나는 Tomcat 7에서 테스트를 해본 경험이 있다고 생각했지만, 다시 테스트를 해본 결과 아무런 문제가 없었다. (아래 결과 참조). 최신 Tomcat 6조차도 여전히이 문제를 가지고 있습니다.

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  0 0 0.0  0  0 
Processing: 25 38 8.8  37  67 
Waiting:  25 37 8.7  36  66 
Total:   25 38 8.8  37  67 

톰캣 버전 : 여기

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  0 0 0.0  0  0 
Processing: 14 39 45.2  30  314 
Waiting:  14 38 45.2  30  314 
Total:   14 39 45.2  30  314 

가 최대 톰캣 7 통지 용 ab 출력된다 : 여기

톰캣 6 대한 ab 출력 (최대 통지) 인 유일한 차이점 (동일한 기계, 동일한 JDK 등)입니다. 나는 최신 Tomcat 6이 괜찮을 것이라고 생각했지만 처음 요청시 비슷한 대기 시간을 보였다.

+0

정말 요청에 따라 달라질 수 있습니다. .html 파일을 잡는 중입니까, 아니면 일종의 데이터 서비스를 초기화하고 있습니까? – aglassman

+0

openjdk를 사용하고 있습니까? 오라클 JDK로 바꿀 때 이상한 문제가있었습니다. – Jaydee

+0

어쩌면 '세계를 멈추게하는'풀 GC가 있습니다 ... 가비지 컬렉터 출력 (자세한 GC)을 확인 했습니까? – home

답변

1

톰캣 코드를 엿보는 나는 약한 참조가 무언가가 빨리 다시 요청하지 않을 때 수집되는 것이 문제라는 이론에 "약"이라는 단어를 검색하기로 결정했습니다.

나는 다음과 같은 추측 함께했다 ... 나는이 흥미로운 클래스를 발견

http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/javax/el/BeanELResolver.java?revision=1027187&view=markup

하는의 WeakHashMap에 의해 처리되는 부분있는 BeanProperties 개체의 캐시를 유지하기 위해 보인다 캐시가 채워질 때마다 모든 것이 WeakHashMap에 저장되고 가비지 수집 될 수 있습니다. 약한지도의 항목이 요청되면 기본지도에 다시 표시됩니다 (약하지 않음). 캐시 된 BeanProperties의 캐시 크기와 같은 항목을 추가하여 캐시 된 bean 설명을 거의 버릴 수 있습니다.

편의상 튜닝이의 속성 :

private static final String CACHE_SIZE_PROP = 
    "org.apache.el.BeanELResolver.CACHE_SIZE"; 

그래서 어쩌면 그와 함께 연주 시도하고 행동에 영향을 미치는 경우 내가 톰캣에서이 클래스에서 큰 변화 (빠른보기)를 참조하지 않았기 때문에이 그러나 그것을하지 않을 수 있습니다 참조? 7 어디서 문제가 사라진다는 말.(이전 튜닝 작업에서이 속성을 수정 한 적이 있습니까?)