
관련 정보가 많이 없어서 여기에 질문드립니다...
IO 하위 시스템 작업자 구성에서 "Io 스레드" 및 "작업 최대 스레드" 설정의 주요 용도는 무엇입니까?
내가 읽은 모든 곳에서 사람들은 "Io 스레드"가 서버가 처리할 수 있는 동시 요청 수를 지정하고 "작업 최대 스레드"가 서버가 처리할 수 있는 최대 동시 요청 수라고 말하고 있습니다.
그렇다면 "Io 스레드"를 50으로 설정하면 JBoss가 50개의 브라우저 요청을 동시에 처리할 수 있다는 의미입니까?
15초 내에 1500명의 동시 사용자를 처리할 수 있어야 하는 사이트가 있습니다. 그리고 각 요청을 완료하는 데 3초 이상 걸리지 않아야 합니다. 여기에는 브라우저에 필요한 html, js, css 및 모든 jpg 파일 다운로드가 포함됩니다.
이는 "Io 스레드"를 100과 같은 더 높은 숫자로 설정하고 "작업 최대 스레드"를 150으로 설정해야 함을 의미합니까?
"작업 최대 스레드"를 150, 심지어 250으로 설정해 보았는데 이로 인해 사이트 속도가 느려지는 것 같습니다.
이 두 가지 설정이 어떻게 작동하는지 설명할 수 있는 사람이 있나요?
답변1
일반적으로 각 사용자 연결에 대해 별도의 IO 스레드가 필요하지 않습니다. 속도 저하를 피하기 위해 언제든지 동시 사용자 수만큼 작업 스레드가 필요할 수 있습니다. 기본값을 시도하고 해당 기본값이 애플리케이션에 어떻게 작동하는지 확인할 수 있습니다. 다음 지원 문서를 참조하세요.
EAP 7.2에는 효율성을 위한 추가 코어 스레드 구성이 있습니다.
업데이트: 더 포괄적인 지침을 원할 경우 전체 내용을 확인하는 것이 좋습니다.Red Hat Enterprise Application Platform 성능 튜닝 가이드.
업데이트 2: EAP 7은 Undertow를 사용하기 때문에 IO 및 작업자 스레드의 기능을 이해하려면문서를 미루다몇 가지 단서를 제공해야 합니다.
IO 및 작업자 스레드 관리
XNIO 작업자는 IO 스레드와 차단 작업에 사용할 수 있는 스레드 풀을 모두 관리합니다. 일반적으로 비차단 핸들러는 IO 스레드 내에서 실행되는 반면, 서블릿 호출과 같은 차단 작업은 작업자 스레드 풀로 전달됩니다.
답변2
@IWantSimpleLife는 문서에서 언급된 @akostadinov가 디자인과 "IO 차단" 작업이 처리기 작업과 어떻게 구분되는지 설명합니다. 귀하의 질문에 "IO 스레드"와 "작업 최대 스레드"가 직접 관련이 없다고 말하는 것이 옳다고 생각합니다. 나는 그들이 두 개의 별도 스레드 그룹을 참조하기 때문에 이렇게 말합니다. 첫 번째는 nio 채널과 이벤트를 수신하는 IO 관련 "읽기" 및 "쓰기" 핸들러의 초기 그룹을 설명하는 "작업자 IO 스레드"입니다. 이상적으로는 IO 풀에 스레드가 1개만 있어야 하며절대차단(네트워크 또는 파일) 처리를 실행합니다. 그만큼다른그룹은 일반적으로 "작업자 작업 스레드" 그룹이라고 합니다. 차단 작업을 실행하는 데 전념합니다. 중 하나설정이 두 번째 그룹의 크기는 "작업 최대 스레드" 크기입니다.