Apache와 GlassFish의 기본값을 사용하여 mod_proxy_ajp를 통해 Apache 2.2.15 프록시 요청을 mod_proxy_ajp를 통해 받았다. 설치가 매우 짧게 진행되는 동안 GlassFish 로그에 스레드 풀 사용 중 오류 메시지가 표시되고 Apache 로그에서 시간 초과 오류가 발생하고 GlassFish를 다시 시작할 때까지 응용 프로그램이 다시 작동하지 않습니다.Apache mod_proxy_ajp (GlassFish 스레드 풀 사용 중)
이 오류가 발생하지 않도록 구성을 변경해야합니까?
참고 : 시스템 부하가 높지는 않습니다. 응용 프로그램의 페이지를 탐색하여 하나의 브라우저에서 액세스 할 수 있습니다. 이것은 잘못 구성된 것이 아닌 경우 스레드 누출 버그 일 수 있음을 나타냅니다. 브라우저에서받는 오류는 500입니다 : 내부 서버 오류.
글래스 피쉬 로그의 오류는 다음과 같습니다
는SEVERE|glassfish3.1.1|org.apache.tomcat.util.threads.ThreadPool|_ThreadID=17;_ThreadName=Thread-2;|threadpool.busy
아파치 로그의 오류는 다음과 같습니다
는[error] (70007)The timeout specified has expired: ajp_ilink_receive() can't receive header
아파치에서 내 프록시 구성은 다음과 같습니다
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
ProxyPass/ajp://mydomain:8009/
ProxyPassReverse/ajp://mydomain:8009/
과의 GlassFish 설치 후 다음 명령을 실행합니다 :
asadmin create-http-listener --listenerport 8009 --listeneraddress 0.0.0.0 --defaultvs server apache-proxy
asadmin set configs.config.server-config.network-config.network-listeners.network-listener.apache-proxy.jk-enabled=true
: 아파치에 사용되는 스레드를 설정하는 방법 중 하나는 과 같이 최대 속성을 사용하는 것입니다 /www.java.net/node/701914), 문제는 스레드 풀의 기본 최대 크기가 너무 작음을 나타냅니다. 크기를 50으로 늘렸으나 크래시를 재현 할 수 없었습니다. 나는 피할 수없는 추락을 지연시키는 것이 아니라고 확신한다. 아직도 답을 다시 확인하고 아마이 설정을 스스로에게 확신시키는 방법에 대한 팁은 프로덕션 용도로는 괜찮습니다. – Ryan