[server] mod_proxy를 사용하여 프록시를 SOAP 서비스로 리버스 할 때 간헐적 인 오류

SOAP 웹 서비스에 대한 리버스 프록시로 mod_proxy를 사용할 때 몇 분마다이 오류가 발생합니다. 초당 3 ~ 4 건의 요청이있을 수 있으므로이 오류가있는 1000 건 중 1 ~ 2 건 정도 이야기하고 있습니다.

[Tue Nov 23 11:44:14 2010] [error] [client 172.16.1.31] (20014)Internal error: proxy: error reading status line from remote server soap1.server:8888
[Tue Nov 23 11:44:14 2010] [error] [client 172.16.1.31] proxy: Error reading from remote server returned by /someapp/path/to/web/service

이로 인해 요청이 실패합니다. 프록시를 사용하지 않고 클라이언트가 SOAP 서버에 직접 연결하도록하면 성공률이 100 %이므로 프록시에 문제가있는 것으로 보입니다.

구성은 다음과 같습니다. 기본 서버를 사용할 수없는 경우 백업 서버로 전환하는 것이 목적입니다.

<Proxy balancer://apicluster>
BalancerMember http://soap1.server:8888 lbset=0
BalancerMember http://soap2.server:8888 lbset=1
</Proxy>

ProxyPass /someapp balancer://apicluster/someapp
ProxyPassReverse / balancer://apicluster/someapp

누구 든지이 문제를 해결하고 수정 프로그램을 찾았습니까? 버그 보고서에는 언급이 있지만 해결책은 없습니다. 유일하지 않은 유일한 것은 클라이언트 요청이 100MB 이상일 수 있기 때문에 요청이 SOAP 호출에 예상되는 것보다 조금 더 오래 걸릴 수 있다는 것입니다.



답변

다른 사람 이이 문제에 부딪친 경우. 이것은 httpd.conf에 다음 줄을 넣어서 피할 수있는 mod_proxy의 버그입니다.

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1

https://issues.apache.org/bugzilla/show_bug.cgi?id=37770

이러한 변수에 대한 정보는 mod_proxy설명서를 참조하십시오 . 여기에는 이러한 변수를 다루는 특정 섹션 인 프로토콜 조정이 있습니다.


답변

여기에있는 아파치 문서를 참고하십시오 : http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html

mod_proxy_http에 경쟁 조건이있는 것 같지만 다음을 포함하여 피할 수 있습니다.

SetEnv proxy-initial-not-pooled 1

초기 요청 인 경우 Apache가 풀링 된 연결을 사용하지 못하게합니다.

이 설정에 따르면이 설정으로 성능이 다운 그레이드 될 수 있습니다.


답변

AH01102: error reading status line from remote server아파치 모듈 mod_reqtimeout 및이 conf 지시어를 사용 하여이 관련 오류 메시지 ( )를 억제 할 수도 있습니다 .

RequestReadTimeout header=30

다음과 같이 reqtimeout 모듈을 활성화해야합니다.

$ sudo a2enmod reqtimeout
$ sudo apache2ctl restart


답변