2009-10-15 4 views
4

Apache에서 JBoss에서 실행중인 서블릿에 간헐적 인 문제가 있습니다. mod_proxy_ajp.so.Apache error_log에서 503 개의 오류를 수정하는 방법과 원인은 무엇입니까? "Broken pipe : ajp_ilink_send() : send failed"

때때로 REST 요청의 경우 Apache에서 503 개의 오류가 발생합니다. 이런 일이 발생하면 Apache error_log에 다음 내용이 포함됩니다.

[Mon Oct 12 09:10:19 2009] [error] (32)Broken pipe: ajp_ilink_send(): send failed 
[Mon Oct 12 09:10:19 2009] [error] (32)Broken pipe: proxy: send failed to 127.0.0.1:8009 (localhost) 

몇 번의 시도가 실패하면 다시 작동하기 시작합니다.

나는 봤어 몇 가지 발견 한 나는 문제가 발생했습니다 유일한 사람이 아니에요. 내가 찾은 유일한 해결책은 JBoss를 시작한 후에 Apache를 시작하는 것입니다 (JBoss를 다시 시작한 후에 Apache를 다시 시작합니다).

이 문제에 관한 이상한 점은이 JBoss에서 다른 서블릿이 실행 중이며 거기에 문제가 없다는 것입니다.

서블릿은 CXF JAX-RS 기반입니다.

아파치는 2.2.6입니다.

+0

'깨진 파이프 (. 당신은 컴파일 된 모듈을 나열하는 apachectl -l을 실행하여 "아파치 MPM"파라미터를 결정할 수있다) failed' 보내는 메시지는 일반적으로 접속은 다른 측면에 의해 폐쇄 된 것을 의미한다. JBoss 로그에 동시에 예외가 있습니까? DEBUG 또는 TRACE 수준에서 힌트를 제공 할 수있는 항목이 기록되어있을 수 있습니다. – pra

+0

JBoss 로그에는 예외가 전혀 없습니다.하지만 디버그 수준을 켜서이 문제의 원인을 더 잘 이해할 수 있는지 확인합니다. –

답변

1

AJP 프로토콜을 사용할 때 통신의 양측 (예 : Apache와 Tomcat)이 동일한 매개 변수로 구성되도록 매우 신중해야합니다. 이는 AJP가 지속적이고 상태있는 연결을 사용하고 양 당사자가 연결 라이프 사이클에 대해 동일한 기대치를 가져야하기 때문입니다.

나는 relevant Tomcat docs a good read을 제안합니다. 아마 일치시킬 수 있도록 Apache의 mod_proxy_ajp config 또는 Tomcat의 AJP connector config 또는 둘 다를 수정해야 할 것입니다. 구성이 약간 다른 경우 AJP의 성능은 절대적으로 빠를 수 있습니다.

+0

내가 한 첫 번째 일은 mod_proxy_ajp에 대한 config와 docs를 검토하는 것이 었습니다. 나는 또한 연결의 재사용을 막음으로써 물건을 향상시킬 수 있는지 실험했다. 개선 없음. –

+0

'연결 재사용 방지'단계에 대한 자세한 내용을 참조하십시오. –

1

같은 문제가 발생했지만 원인을 찾지 못했습니다. 쉬운 해결책은 mod_proxy_ajpmod_proxy_http으로 약간 깎아 내면 약간의 성능 저하가 허용됩니다. 초당 최대 100 페이지로드가있는 웹 사이트에서 문제없이 작동합니다.

+0

기존 구성을 수정하고 싶습니다. –

+1

물론, 그래도 작동하지 않는다면 적어도 하나의 옵션이 있습니다 :) –

+1

방금이 작업을 시도했지만 작동합니다. 503은 이제 올바르게 처리되고 투명하게 다른 노드로 전달됩니다 .... 또한 "ProxyErrorOverride On"을 내 구성에 추가해야하고 제안 된대로 ajp : // 링크를 http : // 링크로 변경해야합니다. –

1

AJP 연결을 구성 할 때 this config generator이 도움이된다는 것을 발견했습니다. 생성 된 설정으로 시작하여 관련 문서를 읽는 것이 좋습니다.

+0

멋진 생성기이지만로드 균형 조정 기능이 없습니다. 그냥 똑바로 연결. –