바람둥이 스레드의 수에 관한 문제

성능 측정 된 압력은 초기에 사용자의 수가 증가 여기서 특정 임계 값 이후에, 사용자의 수는 요청의 응답 시간의 실질적인 증가를 QPS가 증가하지 않는다 증가 또는 크게 증가하지하지만 동시에하면 QPS를 증가 할 것이다. 우리가 생각하는 임계 값은 스레드의 최선의 수입니다.

 

왜 평균 최적의 스레드 번호는 :

1. 너무 많은 스레드는 더 많은 메모리 오버 헤드, 더 많은 CPU 오버 헤드,하지만하지 않습니다 도움 원인 QPS를 강화하는 것

간단한 설정을 통해 최적의 스레드 번호를 찾으십시오, 당신은 웹 시스템보다 안정을 만들 수 있습니다, 가장 높고 가장 안정적인 출력 QPS

 

스레드의 가장 좋은 번호를 가져옵니다 :

1 천천히 관찰 QPS를 증가 사용자가 성능 측정, 압력 응답 시간

(2) 상기 식에 따라 계산한다 : * 번호 CPU 번호 가장 서버 스레드 = (레이턴시 +) / CPU 시간 스레드 (스레드 쓰레드 CPU 시간)

(3) 단일 사용자 압력 테스트는 최적의 스레드 수 있어야 일반적으로이 값의 근처에서, 비율하여 그때 그때의 압력 테스트를 CPU 사용량을 확인하고있다.

 

최적의 스레드 수에 영향을 미치는 주요 요인 :

1, IO

2, CPU

수식에 따르면, 번호 가장 서버 스레드 = ((쓰레드 쓰레드 CPU 시간 지연 +) CPU 시간 / 스레드) * 번호 CPU

그것은 일반적으로 IO 및 CPU입니다. 대기 시간이 더 많은 CPU 스레드 비용 IO 응용 프로그램은 스레드의 수를 더 열 수 있도록, 반대 덜 될 스레드의 수는, 사실, 같은 프록시로 두 극단, 순수 IO 응용 프로그램의 수는있다, 스레드 캔입니다, 더 길어질 수 있습니다 기본적으로 QPS의 수를 가지고있는 백 엔드 응용 프로그램 (이 프록시 프록시 검색 등)이며, (당신이 스레드 스위칭의 오버 헤드를 고려할 필요가 너무 큰) 매우 큰, 많은 프록시가를 엽니 다.

또,이 상황은 CPU의 수에 일반적으로 스레드의 수를 CPU의 계산 된 소비 열 수있다. 그러나이 응용 프로그램이 높은 QPS하지 종종이 응용 프로그램이 높을 수있다 QPS 있다는 말을하지.

 

QPS의 관계와 스레드의 수

한 후, 최적의 스레드 번호 앞에, QPS 서로 나사의 관계가 가장 스레드에 스레드의 수를 증가하고, 해당 시간이 계속 상승하면서, 조금이라도 쇠퇴 상승하지 평면 QPS.

(2) 시스템의 측면 지원 스레드보다 수가 (스레드의보다 최적의 수와 구성되지 않은 스레드보다 수가) 클수록 QPS 동일한

 

QPS 관계 및 응답 시간을

도 1은 일반적으로 응답 시간의 웹 시스템은 CPU 실행 시간 지연 + IO 조성물 인

2, QPS는 QPS의 상당한 업그레이드의 IO 시간을 단축 할 필요가에 대한 것은 명확하지 않다, CPU의 실행 시간을 줄일 수 있습니다. 당신이 크게 QPS를 강화하려는 경우, 시스템 최적화 시간은 CPU 술고래을 최적화에 초점을 맞 춥니 다.

 

스레드와의 최적의 번호 JVM의 힙 메모리의 관계였다

이러한 자바 응용 프로그램에 대한 또 다른 요인은, 우리가 자주 FULL GC 발생하지 않는 스레드의 최적의 수를 확인 할 FULL GC가되면, CPU의 성능 병목 현상을 기반으로

수식에 따르면 :( 작은 시간 간격으로 GC / RT) * (동시 스레드의 수 * THM) <= 스레드 <최적의 개수가 더 자주 FULL GC 될 수있다이 경우에 계산 젊은 동시 스레드의 수는, 현실 보인다 웹 시스템에 매우 작습니다. 그러나이 시뮬레이션 할 수 있습니다.

우리는 제이 보스 스레드를 설정 그래서, 당신은 압력 측정 및 계산에 의해 최적의 스레드 수를 얻기 위해 밖으로 설정 한 후 스레드의 수를 설정 메모리 식의 스레드의 수를 활용할 수 있습니다.

 

스레드 수를 설정합니다 :

스레드 수의 스레드 압력 측정의 최적 개수 <실제 내용물 <메모리의 스레드 수를 제한

시스템 자체가되기 때문에, 예를 들어, 스레드 수를 통해 최고 압력 측정 시스템 (10)을 얻기 위해, 다음 스레드의 개수가 메모리 (20)를 통해 계산되는 스레드 보스 (15)의 수가 제공되고, 10의 경우 직접 가능 일부는 시스템 변경 및 일부 변경에 의존하고, 이러한 시스템은 IO 응답 ​​시간의 수에 의존 갑자기 사실,이 시간은 최적의 스레드 수는 13이되었다 인해 스레드의 수를 10로 확장, 10 것이다 우리가 죽은 이후, 자신을 QPS 결과는 감소했지만, 그것은 20을 초과하는 경우, 그것은 것입니다 다시 차례로 QPS의 감소에 영향을 미치는 매우 자주 FULL GC, 원인.

 

JBOSS 스레드의 수를 :

사용과 같은 스레드 연결, HTTP, AJP 등의 종류에 따라 달라집니다에 JBoss의 경우, 스레드의 수를 설정

HTTP 및 AJP 설정은 정확히 매우 간단합니다, 동일 :

, AJP 예를 들어, 또는 바람둥이-의 server.xml의 server.xml을 확인하는 방법은 다음과 같습니다

스레드의 기본 개수는 200입니다

 <커넥터 포트 = "8009"주소 = "$ {jboss.bind.address}"은 ConnectionTimeout = "15000"프로토콜 = "AJP / 1.3"  maxThreads = "200"  minSpareThreads = "40"maxSpareThreads = "75"maxPostSize = "512000 "acceptCount ="300 "버퍼 크기 ="16384 "emptySessionPath ="FALSE "enableLookups ="FALSE "있는 redirectPort ="8443 "은 useBodyEncodingForURI ="참 "/>

여기에 20로 스레드의 기본 수는 물론, 다른 유휴 스레드의 적절한 최소 번호와 유휴 스레드의 최대 번호도 일부 조정을 수행합니다

<커넥터 포트 = "8009"주소 = "$ {jboss.bind.address}"은 ConnectionTimeout = "15000"프로토콜 = "AJP / 1.3"  maxThreads = "20"  minSpareThreads = "20"maxSpareThreads = "20"maxPostSize = "512000 "acceptCount ="300 "버퍼 크기 ="16384 "emptySessionPath ="FALSE "enableLookups ="FALSE "있는 redirectPort ="8443 "은 useBodyEncodingForURI ="참 "/>

게시 된 168 개 원래 기사 · 원 찬양 16 ·은 90000 +를 볼

추천

출처blog.csdn.net/ajax_yan/article/details/104862810