문제

우리는 실행중인 웹에 Tomcat6Apache mod_proxy2.2.3.보고 많은 502 오류를 다음과 같다:

나쁜 게이트웨이!프록시 서버에서 잘못된 응답을 받았 업스트림 서버입니다.

프록시 서버가 요청을 처리하지 못하 GET/의/페이지입니다.는 않습니다.

이유:읽기 오류가 원격 서버

당신이 생각하는 경우,이는 서버 오류로 연락 주시기 바랍 webmaster.

오류 502

톰캣의 많음이 있는 스레드,그래서 그것은 스레드-제약을 받습니다.우리는 2400 을 통해 사용자에게 제 미터에 대한 앱입니다.모든 상자 안에 앉아있는 우리의 방화벽에 빠른 언로드 네트워크,그래서이 있어야 하지 않는 모든 네트워크 문제입니다.

사람이 어떤 것들에 대한 제안을 보거나 시도?우리를 제공하기 위하여 필요한 만큼 보유 tcpdump 음.

업데이트 10/21/08:아직 생각하지 않은 이니다.보고 단지 소수의 이러한 부하.답변이 아래 없 제공한 모든 마법의 응답니다.:)

도움이 되었습니까?

해결책 2

그래서 대답하여 내 자신의 질문에 여기에.우리가 궁극적으로 결정 그것은 우리들을 보고 502,503 오류에 부하 분산으로 인해 톰캣 스레드 타이밍.단기적으로 우리는 증가한다.에서 장기간에,우리는 응용 프로그램을 수정했는 문제를 일으키는 원인이 되었다 시간 제한 첫 번째 장소입니다.왜 Tomcat 시간 제한되고 있었으로 인식 502,503 에서 오류 로드 밸런서는 여전히 약간의 신비입니다.

다른 팁

그냥 몇 가지를 추가로 특정 설정,나는 유사한 설정(아파치 2.0.63 역방향 프록시에 Tomcat5.0.27).

특정 Url 을 Tomcat 서버에 걸릴 수있다 아마도 20 분 반환합니다.

I ended up 을 수정하여 다음과 같은 설정에서 아파치 구성 파일에서 그것을 방지하기 위해 시간이 초과시(으로 큰 이상 유출 요인 경우에는 Tomcat 했다는 더 이상 페이지를 반환):

Timeout 5400
ProxyTimeout 5400

일부 backgound

ProxyTimeout 혼자만으로는 충분하지 않았습니다.보고서에 대한 문서 Timeout (나는 확실하지 않)이 때문에 아파치는 응답을 기다리는 톰캣에서이없는,트래픽을 사이에 흐르는 아파치는 브라우저(또는 어떤 http 클라이언트)-그래서 아파치는 연결을 브라우저입니다.

내가 찾는다면 내가 시간 제한 설정을 기본(300 초),후면 프록시 요청을 톰캣했 300 초 이상 응답을 얻을 수있는 브라우저에서 표시"502 프록시 오류"페이지를 참조하십시오.저는 이것을 믿는 메시지를 생성하여 아파치에서는 그의 행동으로 역방향 프록시,을 닫기 전에 아래로 연결하여 브라우저(이 현재 이해 할 수 있습니다-그것은 결함이 될).

프록시 오류가 페이지가 말합니다:

프록시의 오류

프록시 서버는 받은 잘못된 응답에서 업스트림 서버입니다.이 프록시 서버를 처리 요청을 얻는다.

이유:읽기 오류가 원격 서버

...제안하는 그것의 ProxyTimeout 설정이 너무 짧은 동 조사를 보여주는 아파치의 제한 시간 설정(시간 제한 사이의 아파치는 클라이언트)에도 영향을 준다.

당신이 사용할 수 있는 프록시-초기지--풀링

http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html :

이 변수를 설정한 경우에는 없는 풀 연결 될 것입니다 다시 사용하면 클라이언트의 연결은 초기 연결합니다.이렇"proxy:읽기 오류 상태 표시줄에서"원격 서버에 오류 메시지가 발생하는 경쟁 조건 백엔드 서버를 닫 풀 연결한 후에는 연결을 확인하여 프록시와 데이터 전송한 프록시에 도달했습니다.보관해야 하는 마음에 이 변수를 설정하면 다운 성과,특히 HTTP/1.0 클라이언트입니다.

우리는 이 문제를 너무입니다.우리는 그것을 고정하여 추가

SetEnv proxy-nokeepalive 1
SetEnv proxy-initial-not-pooled 1

고 돌고 keepAlive 모든 서버에서 꺼집니다.

mod_proxy_http 는 잘 대부분의 시나리오에서는 그러나 우리는 그것을 실행으로 무거운 짐 우리는 여전히 몇 가지 시간 제한 문제는 우리가 이해하지 않습니다.

그러나오는 경우 위의 지시어에게 적합합니다.

샘플에서 아파치는 conf:

#Default value is 2 minutes
**Timeout 600**
ProxyRequests off
ProxyPass /app balancer://MyApp stickysession=JSESSIONID lbmethod=bytraffic nofailover=On
ProxyPassReverse /app balancer://MyApp
ProxyTimeout 600
<Proxy balancer://MyApp>
    BalancerMember http://node1:8080/ route=node1 retry=1 max=25 timeout=600
    .........
</Proxy>

나의를 사용하여 mod_proxy_http(또는 프록시 balancer).

에 tomcat 로그(localhost.로그,또는 catalina.log)용의자하고는 예외에서 당신의 웹 스 bubbling up 닫 소켓는 tomcat 작업자가 연결되어 있습니다.

당신을 얻을 수 있어야가 이 문제를 해결을 통해 시간 및 proxyTimeout 매개변수 설정을 600 초입니다.그것은 나를 위해 일 후 진압하는 동안.

당신은 피할 수 있는 글로벌 시간 제한 또는 가상으로 호스트를 지정하는 프록시 시간 제한에렉토리 지시어는 다음과 같다:

ProxyPass /svc http://example.com/svc timeout=600
ProxyPassReverse /svc http://example.com/svc timeout=600

timeout=600 초입니다.

그러나 이것은 항상 작동하지 않을 때가 있 로드 밸런싱 장치를 의미합니다.이 경우에는 추가해야 합니다 시간 제한 모두에서는 장소(에서 테스트는 아파치 2.2.31)

부하 분산를 들어:

<Proxy "balancer://mycluster">
     BalancerMember "http://member1:8080/svc" timeout=600
     BalancerMember "http://member2:8080/svc" timeout=600
</Proxy> 

ProxyPass /svc "balancer://mycluster" timeout=600
ProxyPassReverse /svc "balancer://mycluster" timeout=600

주석:이 timeout=600ProxyPass 이 필요하지 않은 경우드라이어도 마련되어 클라이언트(I don;t know why)지만 이에 제한시간 ProxyPass 인터넷 익스플로러(11)중단 말 다시 연결에 의해 서버입니다.

내 이론은:

ProxyPass 제한 시간 간에 사용되는 클라이언트(브라우저)과 Apache.

BalancerMember 제한 시간 간에 사용되는 아파치하고 있습니다.

을 사용하는 사람들 Tomcat 또는 다른 백업을 수행할 수도 있습니 관심을 지불하는 HTTP 커넥터 시간이 초과되었습니다.

가장 가능성이 증가해야 합 시간 제한 매개 변수는 아파치는 conf(기본값은 120 초)

내가 이것을 알고 있지 않은 이 질문에 대답하지만,여기에 왔기 때문에 나는 같은 오류가 및 라이브러 서버입니다.나는 이 시간이 오래까지 내가 해결책을 발견했다.나의 솔루션을 추가 또는 슬래 /의 끝에서 proxyreserve apache.

나의 오래된 코드:

ProxyPass / http://192.168.1.1:3001
ProxyPassReverse / http://192.168.1.1:3001

올바른 코드:

ProxyPass / http://192.168.1.1:3001/
ProxyPassReverse / http://192.168.1.1:3001/
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top