포트 80에서 포트 8080으로의 리디렉션: Proxypass를 사용하는 Apache가 너무 느린 반면 xyz.com:8080에 직접 액세스하는 것은 매우 빠릅니다.

포트 80에서 포트 8080으로의 리디렉션: Proxypass를 사용하는 Apache가 너무 느린 반면 xyz.com:8080에 직접 액세스하는 것은 매우 빠릅니다.

우리는 이상한 문제에 직면해 있습니다....서버가 바쁜데...응답 시간은 요청당 약 1분입니다(매우 느림).....Tomcat 앞에서 실행 중입니다..... xyz.com:8080으로 사이트에 액세스하는 경우 매우 빠릅니다(1 요청/초).....그리고 요청을 tomcat으로 리디렉션하는 Mod_Proxy를 사용하고 있습니다.....아파치에서 요청을 전달하는 대신 내 질문입니다 tomcat에 직접 tomcat에 요청을 보낼 수 있나요... 아니면 Apache에서 일부 구성이 필요한가요.......

다음은 Httpd.conf 파일입니다.

ProxyPreserveHost On 
ProxyPass / http://localhost:8080/ retry=1 acquire=300 timeout=60 Keepalive=On 
ProxyPassReverse / http://localhost:8080/ ErrorLog /Path/To/Logs/Apache.log LogLevel warn

답변1

Apache가 빠르게 실행되고 있지만 Tomcat 요청에 비해 속도가 느린 것 같습니다. 질문이 완전히 명확하지 않으며 Apache 자체가 느린 경우 이를 살펴봐야 합니다. 하나의 프로세스만 포트 80을 수신할 수 있으므로 포트를 지정하지 않으려면 Apache를 거쳐야 합니다. 또는 Apache를 완전히 폐기하고 Tomcat이 대신 포트 80에서 수신하도록 하세요. 그러나 Apache는 이를 프록시할 수 있을 만큼 충분히 빨라야 합니다.

Apache 자체는 빠르지만 프록시된 Tomcat 요청에 대해서는 느린 경우 제안할 수 있는 몇 가지 사항은 다음과 같습니다.

DNS 조회가 느릴 수 있지만 로컬 호스트에서는 그런 경우가 드뭅니다. localhost가 호스트 파일에 있다고 가정합니까? DNS 조회가 필요하지 않도록 이를 127.0.0.1로 변경할 수 있습니까?

이러한 옵션이 모두 필요합니까?

  • ProxyPreserveHost - Tomcat은 호스트 이름에 대해 알아야 합니까? 그렇지 않다면 보존할 필요가 없나요?
  • retry/aquire/timeout/keepalive - 프록시가 안정적인 연결에 있지 않거나 방화벽 뒤에 있는 경우에 더 적합합니다. Apache와 Tomcat이 동일한 서버에 있을 때는 필요하지 않습니다.
  • 프록시 요청에 대한 사용자 정의 로그 파일은 유용할 수 있지만 직접 사용하지는 않았습니다.

왜 문제가 발생하는지 알 수 없지만 사용하지 않았으므로 첫 번째 제안은 이를 찢어서 문제가 개선되는지 확인하는 것입니다. 그런 다음 필요한 경우 하나씩 다시 추가하여 문제가 발생한 위치를 확인하세요.

그래서 단순화하고 다음으로 대체하겠습니다.

ProxyPass / http://127.0.0.1:8080/ 
ProxyPassReverse / http://127.0.0:8080/

그런 다음 다시 시도해 보세요.

또한 mod_proxy를 로드하고 있다고 가정합니까? 때로는 가장 간단한 것들을 놓칠 수도 있습니다 ;-)

관련 정보