문제

Tomcat 6에는 openbluedragon을 실행하는 서블릿이 있으며 이미지를 제외하고 모든 것이 빠르게 컴파일되고 서버가 작동하는데 실제로 상당히 지연됩니다.이미지 제공에 대한 제안 최적화가 있습니까?

내 server.xml은 다음과 같습니다.

    <Service name="Catalina">

      <Connector port="8009" protocol="AJP/1.3" />
      <Connector port="8080" maxThreads="100" protocol="HTTP/1.1" connectionTimeout="20000" />
      <Engine name="Standalone" defaultHost="hostname.whatever" jvmRoute="ajp13">

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      <Host name="hostname.whatever"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        ...context
      </Host>

    </Engine>
  </Service>
도움이 되었습니까?

해결책

또 다른 옵션은 Apache를 프런트엔드로 사용하여 Tomcat을 mod_jk와 연결하는 것입니다.이렇게 하면 아파치가 정적 콘텐츠(예:이미지, CSS, 자바스크립트) 및 Tomcat이 동적 콘텐츠를 생성하도록 합니다.정적 콘텐츠와 동적 콘텐츠를 분리하려면 약간의 작업이 필요할 수 있지만 저에게는 아주 좋습니다.

Unix에서는 Apache를 프런트엔드로 사용하는 것이 좋은 옵션입니다. 포트 80에 바인딩되어 있으면 루트로 실행해야 하는 경우가 많기 때문입니다.Apache는 포트를 바인딩한 후 루트 권한을 삭제하는 방법을 알고 있지만 Tomcat은 그렇지 않습니다.대중에게 공개되는 서버가 루트로 실행되는 것을 원하지 않습니다.

(이것은 역방향 프록시 답변과 유사하지만 프록시는 포함하지 않고 mod_jk를 포함합니다)

다른 팁

동일한 이미지 세트를 계속해서 제공하고 있나요?이 경우 적절한 Expires 헤더를 추가하는 서블릿 필터를 추가하면 Tomcat의 작업을 많이 줄일 수 있습니다.제공되는 이미지의 속도는 증가하지 않지만 처리해야 하는 요청 수가 줄어듭니다.웹에는 이에 대한 많은 예가 있습니다.

옵션이 있는 경우 신청 전에 역방향 프록시를 추가할 수 있습니다.직장에는 모든 인바운드 HTTP 연결을 수신하는 Apache 웹 서버가 있습니다.URL을 기반으로 요청을 다른 서버로 전달하거나 콘텐츠 자체를 제공합니다.나는 Trac 사이트의 정적 콘텐츠 제공을 가속화하기 위해 이 접근 방식을 사용했습니다.ProxyPass 및 ProxyPassReverse 지시문은 이 경로로 이동하려는 경우 찾기 시작하는 좋은 장소입니다.

간단한 예로, /images라는 가상 디렉터리가 있는 경우 Apache는 해당 디렉터리에 있는 항목에 대한 모든 요청을 처리하고 다른 모든 것을 Tomcat 인스턴스로 전달할 수 있습니다.구문은 매우 포괄적입니다.정적 콘텐츠를 식별하는 방법이 있다면 이 방법이 효과적일 것입니다.

여기서 Apache가 유일한 선택은 아닙니다.현대의 모든 웹 서버에는 비슷한 기능이 포함되어 있다고 생각합니다.오늘 시작했다면 아마도 LigHTTPd의 기능이 적기 때문에 대신 살펴볼 것입니다.

이를 자동으로 파악하는 캐싱 역방향 프록시가 있을 수도 있습니다.하지만 나는 그들 중 어느 것에도 익숙하지 않습니다.

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