2009-10-29 2 views
1

때로는 com.sun.net.httpserver.HttpServer의 실행중인 인스턴스에 연결할 때 (거의 사용하지 않음) "연결 거부 됨"메시지가 다시 나타납니다.com.sun.net.httpserver.HttpServer 최대 연결 수?

아무도 왜 이런지 알 수 있습니까? 처리 할 수있는 연결 수에 대한 스레드 제한이 있습니까? 그것을 늘릴 수 있을까요? 감사합니다. . the doc 가입일 -r

답변

2

:

어드레스와 포트 번호로 바인딩 애플리케이션은 정수 잔고 파라미터를 지정할 수있다. 시스템이 내부적으로 대기하는 수신 TCP 연결의 최대 수인 을 나타냅니다. HttpServer에서 허용 대기중인 동안 연결이 대기합니다. 한도에 도달하면 기본 TCP 구현에 의해 더 이상의 연결이 거부 될 수 있습니다 ( ). 오른쪽 백 로그 값이 TCP 계층에서 효율적인 자원 사용 사이의 타협 입니다 설정 (설정이 너무 높게되지 않음) 들어오는 요청의 적절한 처리량 (너무 낮게 설정하지 ) 수.

표시 될 수 있습니다.

대신 setExecutor()을 사용하여 실행 프로그램을 설정 했습니까? 기본 실행 프로그램은 필요한 것보다 적은 수의 스레드를 구성 할 수 있으며 적절히 구성된 ThreadPoolExecutor이 작동 할 수 있습니다.

+0

setExecutor - 고맙습니다. 기본 구성이 무엇인지 궁금합니다. [기본 구현이 사용되는 Java 문서] – rogerdpack

+0

두 버전의 OpenJDK에서 다른 기본 동작을 경험했습니다. (우분투 12.04와 ArchLinux - "1.7.0_21"대 "1.7.0_15") : 우분투에서는 예상대로 작동했지만 ArchLinux에서는 디폴트가 분명히 싱글 스레드입니까 ?? 스레드 풀을 사용하도록 Executor를 설정하면 문제가 해결됩니다. – Joseph