자세한 구성 및 조정 톰캣

Service.xml

server.xml의 전체 컨테이너 구성 프로파일을 연관.

<서버> 요소 : 루트 요소는 전체 구성 파일입니다. 카탈은 전체 컨테이너를 나타냅니다.

속성 : 클래스 이름 : 구현 인터페이스, 표준 구현 클래스는 org.apache.catalina.core.StandardServer 클래스라고 이름 org.apache.catalina.Server 클래스입니다. 포트 : 종료 Tomcat 서버 명령 (필수)를 폐쇄 톰캣 서버를 수신합니다 Tomcat 서버의 명령에 대한 포트를 종료 보냅니다.

例 : <서버 포트 = "8005"종료 = "SHUTDOWN">

<커넥터> 요소 : 커넥터가 클라이언트 측에 응답 메시지를 다시 클라이언트 요청 및 전송을 수신 할 책임이있다.

커넥터 HTTP : 속성 :

  • allowTrace : HTTP 추적 방법을 허용할지 여부, 기본값은 false입니다
  • emptySessionPath : true로 설정이 모든 경로 사용자가 설정 될 경우 / 기본값은 false입니다.
  • enableLookups : 호출 요청, getRemoteHost ()는 설정이 false로 직접 IP 주소를 반환하는 경우, 원격 호스트의 호스트 이름을 반환하는 DNS 쿼리를 수행합니다.
  • maxPostSize : 지정 POST 요청의 최대 금액, 기본값은 2097152입니다 지정하지 않습니다.
  • 프로토콜 : 값이 사용되는 경우 HTTP1.1, AJP 프로세서 여야 값 AJP / 1.3이어야
  • proxyName : 커넥터가 구성 에이전트가 사용되는 바와 같이,이 특성은 request.getServerName에서 (시간) 반환
  • 있는 redirectPort :가 SSL 요청을 수신 한 SSL 요청을 지원하지 않습니다 커넥터, 컨테이너가 자동으로 리디렉션됩니다 카탈리나는 처리하자, 포트 번호를 지정했습니다.
  • 계획 : request.getScheme에서이 설정 계약의 이름, 반환 (), SSL 커넥터가 기본이다 "HTTPS"로 설정되어 "HTTP"
  • 보안 : SSL 연결이 true로 설정 될 수 있으며, 기본값은 false입니다
  • URIEncoding 없습니다 : URL가 사용하는 문자 인코딩 디코딩, 거기 기본값은 ISO-8859-1
  • 은 useBodyEncodingForURI : Tomcat4.1.x 주로 contentType이 지정된 인코딩이 URIEncoding URI는 쿼리 매개 변수를 디코딩, 치환 될 수 있는지 여부를 나타내는 오류의 기본값을 사용
  • xpoweredBy이 : 사실, 톰캣 사용이 권장 헤더가 지원하는 서블릿 사양 버전을 나타냅니다, 기본값은 false입니다
  • acceptCount : 가능한 모든 처리 스레드가 사용중인 경우, 큐에 대기중인 요청의 최대 수입니다. 큐가 가득 차면 어떤받은 요청은 기본 값이 10, 거부
  • 버퍼 크기 : 바이트 단위의 커넥터에 의해 제공되는 입력 스트림 버퍼의 크기를 만든다. 기본적으로 큰 버퍼 크기는 2048 바이트입니다
  • compressableMimeType : 기본의 MIME 목록은 쉼표로 구분. 기본값은 text / html과, 텍스트 / XML, 텍스트 / 일반입니다
  • 압축 : 응답 데이터를 압축할지 여부를 지정. 오프가 : 압축의 금지를 나타냅니다에 : 허가 압축 (텍스트를 압축하는) 힘 : 모든 경우는 압축 대표, 기본은 꺼져
  • 은 ConnectionTimeout은 : 밀리 초 연결의 시간 제한 값을 설정. 기본값은 60000 = 60 초
  • disableUploadTimeOut : 서블릿 긴 시간의 실행을 완료 할 수 있도록 서블릿 컨테이너, 더 긴 연결 시간 제한 값을 사용하여 수행됩니다 허용, 기본값은 false입니다
  • maxHttpHeaderSize : HTTP 요청 및 응답 헤더의 최대 크기 (바이트), 기본값은 4096 바이트입니다
  • maxKeepAliveRequest는 : 아래로 서버 종료되기 전에, 라인의 최대 수는 클라이언트에서 보낸. 기본값은 100입니다
  • maxSpareThreads : 유휴 스레드의 최대 수는 존재, 기본값은 50입니다
  • minSpareThreads : 세트 커넥터가 처음 시작될 때 공동 작성, 스레드의 수를 확인 적어도 많은 유휴 스레드를 이렇게 사용할 수있다. 기본값은 4입니다
  • 포트 : TCP 포트 번호에 서버 소켓 듣기, 기본값은 8080 (필수)입니다
  • socketBuffer (바이트) 소켓 설정된 출력 버퍼 크기 - 금지 1 버퍼이고, 디폴트 값은 9000 바이트
  • toNoDelay이 : 사실, 당신은 성능을 향상시킬 수 있습니다. 기본값은 true입니다
  • threadPriority 다음 JVM 스레드 우선 순위 요구 처리를 설정. 기본값은 NORMAL - 우선이다

예 :

<Connector port="8080" address="localhost"maxThreads="250" maxHttpHeaderSize="8192"emptySessionPath="true" protocol="HTTP/1.1"enableLookups="false" redirectPort="8181" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true" />

AJP 커넥터는 : 함께 아파치 톰캣 통합이 포트의 포트 번호의 요구에 의해 지정된 구성 아파치 의해 수신 된 동적 컨텐츠 요청은 어셈블리 AJP 커넥터를 청취 할 때.

특성 :

  • 잔고 : 모든 가능한 경우의 처리 스레드의 요청의 최대 수는 사용중인 요청 큐 큐. 기본값은 큐가 가득 찼을 때, 어떤 요청이 거부됩니다 10
  • maxSpareThread : 유휴 스레드의 최대 수는 존재, 기본값은 50입니다
  • maxThread : 스레드의 최대 수는, 디폴트 값은 200입니다
  • minSpareThreads : 세트 커넥터가 처음 시작될 때 생성 된 스레드의 수, 그 이상 너무 많은 유휴 스레드를 사용할 수 있도록이 기본이 4
  • 포트 : 서버 소켓 TCP 포트 번호, 기본값은 8089 (필수)입니다
  • topNoDelay이 : 사실, 성능을 향상시킬 수 있습니다, 기본은 true입니다
  • soTimeout : 시간 제한 값

예 :

<!—Define an AJP1.3 Connector on port 8089--><Connector port=”8089” enableLookups=”false” redirectPort=”8443” protocol=”AJP/1.3” />

 

<엔진> 요소 : 특정 서비스에 대한 모든 추천을 처리합니다. 각 서비스 엔진은 수신이 서비스는 연결 요청을 수신하는 모든 처리를 담당 하나 개 요소를 포함 할 수 있습니다 연결에 대한 응답을 다시 전송, 그리고 마지막으로 클라이언트에 표시됩니다. <엔진> 적어도 하나의 <호스트>는, 적어도 이름 <호스트>가 있어야하며 defaultHost에서이 속성 이름 일치를 지정했습니다.

속성 : 클래스 이름 : 반드시 org.apache.catalina.Engine 인터페이스, 클래스 org.apache.catalina.core.StandardEngine defaultHost에서의 기본 구현 클래스 구현 : 엔진의 이름 : 기본 호스트 이름을, 값은 <서비스> 이름 이름의 값과 일치해야합니다 논리적 이름 (필수) jvmRoute는 : 부하 분산 심 식별자에 사용하는 것은 고유해야합니다

例 : <엔진 이름 = "Cataline"defaultHost에서 = "localhst">

<호스트> 요소 : 특정 가상 호스트에 대한 모든 요청을 처리 할 수있는 가상 호스트를 나타냅니다

특성 :

  • appBase는 :베이스 디렉토리 애플리케이션은 절대 경로 또는 경로 이름 % CATALINA_HOME %에 대하여, 설정된
  • autoDeploy는 : 오프닝 플러스 새로운 웹 프로그램 디렉토리를 지정 appBase 경우 자동 배포 여부, 기본값은 사실이다, 톰캣 런타임을 나타냅니다
  • 클래스 이름 : org.apache.catalina.Host의 클래스가 구현하는 인터페이스 클래스에 대한 표준 구현 클래스 org.apache.catalina.core.StandardHost
  • deployOnStartup : Tomcat이 자동으로 디렉토리 appBase 속성을 지정 아래의 모든 웹 응용 프로그램을 배포 여부, 시작하면 기본값은 true입니다
  • 이름 : 가상 호스트의 네트워크 이름 (필수)
  • 표준 호스트 구현 클래스는 추가 속성을 지원 org.apahce.catalina.core.StandardHost :
  • deployXML : context.xml에 거짓 내부 웹 애플리케이션을 해결할 것이다, 기본값은 true입니다
  • unPackWARs : 웹은 읽기 및 쓰기, 아니, 톰캣은 % CATALINA_HOME % / 작업 디렉토리 아래에 적당한 디렉토리를 제공합니다 사용되는 임시 디렉토리 경로 이름을 지정 호스팅.

例 <호스트 이름 = "XXX"appBase = "C : 配置 虚拟 主机 <호스트 이름 ="localhst "appBase =는 unpackWARs ="true "로 autoDeploy ="true "로 xmlValidation ="FALSE "xmlNamespaceAware ="FALSE ""웹 응용 ">을 : / 검사 "> <contentPath를 =" "= Docbase의"E / 아베 "/> </ 호스트>

 

<컨텍스트가> 요소 : 웹 응용 프로그램이 현재 요청 웹 응용 프로그램, 각 <컨텍스트>을 모두 처리하는 고유의 컨텍스트 경로가 있어야합니다.

특성 :

  • 클래스 이름 : org.apache.catalina.Context이 클래스가 구현하는 인터페이스를 표준 구현 클래스 org.apache.catalina.core.StandardContext 클래스
  • 쿠키 : 세션에 적용할지 여부를 쿠키, 기본값은 true입니다
  • crossContext : 사실 크로스 도메인 액세스를 허용할지 여부, 가상 웹 호스트 요청 스케줄러에 다른 프로그램으로 프로그램을 반환 내에서 호출 된 ServletContext.getContext () 메소드. 기본이는 getContext 직경을 조정하여, 거짓 () 반환 널 (null)
  • Docbase의 : 호스트 절대 경로 또는 상대 경로 상대 속성 appBase
  • 특권 : 사실, 서블릿 컨테이너를 사용하여 웹 애플리케이션을 가능하게
  • 경로 : 컨텍스트를 지정하는 경로. 가상 호스트, 컨텍스트 경로는 고유해야합니다
  • 재충전 : WEB-INF / classes 및 WEB-INF / lib 디렉토리가 변경되면 사실, 톰캣 런타임은, Tomcat이 자동으로 웹 응용 프로그램을 다시로드합니다. 편리하지만 비용이 대형이지만, 기본값은 우리가 가까이를 열고 해제 할 수 있습니다 전화, false입니다.
  • cacheMaxSize : 최대 정적 자원 캐시, KB에, 디폴트 값은 1만2백40킬로바이트입니다
  • cachingAllowed : 정적 리소스 캐싱을 허용할지 여부, 기본값은 사실이다
  • 소문자를 구분 : 기본값은 사실이다, 리소스 파일 이름은 대소 문자를 구분 거짓 대소 문자를 구분하는 경우
  • unpackWAR : 기본값은 true입니다
  • WORKDIR : 지정 읽기 임시 디렉토리 경로 및 내부 웹 응용 프로그램 서블릿을 작성합니다. 설정되지 않은 경우, 톰캣은 적절한 디렉토리 % CATALINA_HOME % / 작업 디렉토리에 제공된다

例 <콘텐츠 경로 = "/ ABC"는 Docbase = "D / XYZ"재충전 = "참"/>

 

톰캣 성능 최적화 마무리

 

이 시나리오를 고려, 당신은 아주 좋은 레이아웃 설계, 최신 기능 등 뛰어난 기능을 가지고 응용 프로그램을 개발할 수 있습니다. 그러나이 점에 관계없이 클라이언트 응용 프로그램이 거부되었을 것입니다 방법, 성능이 부족합니다. 고객은 항상 응용 프로그램은 더 나은 성능을 기대한다. 당신이 제품에 Tomcat 서버를 사용하는 경우,이 문서에서는 Tomcat 서버의 성능을 향상시키기 위해 몇 가지 측면을 줄 것이다. 여기에 제공된 자원에 ITWorld 기사 감사합니다. 명상 후, 나는 이미 알고 더 나은 안정성과 최신 톰캣의 이전 버전에 비해 성능을 제공합니다. 그래서 항상 톰캣의 최신 버전을 사용하십시오. 본 명세서에서 사용 된 바와 같이, 다음 단계는 이제 Tomcat 서버의 성능을 향상시킬 수 있습니다.

  1. JVM이 힙 메모리의 크기를 증가
  2. JRE 메모리 누수 수리
  3. 스레드 풀 설정
  4. 압축
  5. 데이터베이스 성능 조정
  6. 네이티브 라이브러리 톰캣
  7. 다른 옵션

 

첫 번째 단계 - JVM을 스택 메모리 증가 JVM 힙 메모리를 개선하기 위해

당신이 그것을 사용하고 톰캣, 단순히는 "메모리 부족". 일반적으로이 문제는 실제 프로덕션 환경에서 발생하는 것을 의미한다.이 문제에 대한 이유는 톰캣의 구성을 통해, 공정 톰캣 메모리를 적게 사용하는 것입니다 프로파일 (리눅스 또는 Windows에서의 catalina.sh catalina.bat)이 문제를 해결할 수있다.이 용액을 달성하기 위해 JVM 스택 메모리를 증가하는 것이다. 즉, 일반적 JVM 가비지 수집기를 호출하지 않는다 그래서 서버는 웹 요청에게 더 많은 관심을 처리하고 가능한 한 빨리 완료하도록 요청 할 수 있습니다. 에있는 파일 (catalina.sh)를 변경하려면 "\ 서버 폴더 \ 빈 \ catalina.sh 바람둥이", 아래의 구성 파일에 대한 정보를 제공합니다,

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8-server -Xms1024m -Xmx1024m-XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m-XX:MaxPermSize=512m -XX:+DisableExplicitGC"

-Xms - 스택 메모리의 지정 초기화

-Xms - 지정 초기화 스택의 메모리 -Xmx - 지정이 다시 시작 Tomcat 서버 후 최대 스택 메모리, 이러한 변경 내용이 적용 구성 될 것입니다. 여기에 JRE 메모리 누수를 처리하는 방법은 다음과 같습니다.

 

두 번째 단계 일 - JRE 메모리 누수를 해결

항상 더 나은 성능과 확장 성을 위해 최신 톰캣 서버를 사용 : 내가 전에 말했듯이 성능 저하의 또 다른 큰 이유는 메모리 누수이다. 이제이 말은 사실이된다. 우리는 JRE와 PermGen 메모리 누수를 처리하는 수신기를 포함하고 있기 때문에,이 실수를 해결할 수 위의 최신 바람둥이 버전 6.0.26을 사용합니다. 사용 리스너입니다

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

이 리스너 구성은 "바람둥이 프로젝트 폴더 / conf의 / server.xml을"의 server.xml 파일 server.xml의 위치를 ​​찾을 수 있습니다. 다음으로, 우리는 연결 속성 "maxThreads"을 조정하는 방법을 찾을 것입니다.

 

세 번째 단계 - 스레드 풀 설정

이 섹션에서는주의하여 취급해야 더 나은 성능을 얻기 위해, 따라서 웹 요청의 풀로드 지정된 수의 스레드. 설정은 연결 속성 "maxThreads"을 조정하여 수행 할 수 있습니다. MaxThreads 값 흐름의 크기에 기초하여야하고, 값이 너무 낮 으면, 모든 요청을 처리하기에 충분한 스레드가 없을 것이다 만 처리 스레드의 방출 후, 대기 상태로 진입 할 요청을 처리하는 단계; 집합 너무 많으면 시작 톰캣 더 많은 시간이 소요됩니다. 그것이 올바른 값을 설정 maxThreads 우리에게 달려있다 그래서.

<Connector port="8080" address="localhost"maxThreads="250" maxHttpHeaderSize="8192"emptySessionPath="true" protocol="HTTP/1.1"enableLookups="false" redirectPort="8181" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true" />

상기 구성에서, maxThreads 값은 동시에 최대 수를 처리 요청을 서버에 의해 지정 될 수있다 "250"로 설정된다. 지정되지 않은 경우,이 속성의 기본값은 "200"입니다 여분의 동시 요청은 요청 프로세스가 해제 다른 프로세스 때까지 오류 메시지가 "연결 거부"가 나타납니다. 오류 외모가 좋아

org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (250) arecurrently busy, waiting. Increase maxThreads (250) or check the servlet status

응용 프로그램 프롬프트 경우 위의 오류가 위의 오류로 인해 문제의 이유에 너무 오래 걸릴 수있는 하나의 요청에 의한인지 여부를 확인해야하면 데이터베이스 연결이 프로세스는 다른 요청을 처리하지 않습니다, 해제되지 않습니다 때때로 경우, 즉.

참고 : 요청의 수는 속성 값이 설정 maxThreads "750"는 것을 의미한다 "750"를 초과하는 경우, 그것은 "톰캣 클러스터"로 사고의 여러 인스턴스를 사용하는 것이 가장 좋습니다. 존재하는 경우 즉, "1000"요청, 두 실시 예는 단일 인스턴스 톰캣의 경우 maxThreads = 1000을 설정하지 않고, 톰캣 "maxThreads = 500"를 제공했다. 내 경험에 의하면, 정확한 값은 다양한 환경에서의 테스트 결과를 적용하여 설정할 수 있습니다. 다음으로, 우리는 MIME 타입을 압축하는 방법을 살펴.

4 단계 - 압축

압축 옵션을 통해 server.xml의 Tomcat 구성 파일에 설정이 있습니다. 압축 커넥터 설치되어 다음과 같이 달성 될 수있다

​​​​​​
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8181" compression="500" compressableMimeType="text/html,text/xml,text/plain,application/octet-stream" />

파일 크기가 같거나 500bytes 압축 전의 크면 상기 구성에있어서. 경우 때 파일 크기에 도달하지만 압축되지 다음 "또는"= 압축 속성을 설정. 그렇지 않으면 톰캣의 기본 설정은 "OFF"입니다. 다음으로 우리는 어떻게 조정에 대한 데이터베이스를 볼 것이다.

5 단계 - 데이터베이스 성능 조정

데이터베이스 쿼리를 기다리는이 실행될 때 톰캣의 성능은 감소한다. 오늘날 대부분의 응용 프로그램은 "명명 된 쿼리"관계형 데이터베이스의 사용을 포함 할 가능성이있다. 그런 경우에는 톰캣이 시작 명명 된 쿼리에 기본적으로로드됩니다,이 성능을 향상시킬 수 있습니다. 또 다른 중요한 점은 모든 데이터베이스 연결이 제대로 닫혀 있는지 확인하는 것입니다. 데이터베이스 연결 풀 설정 올바른 값은 매우 중요합니다. 나는 값이 유휴 자원 요소 (maxIdle), 최대 수 (maxActive) 연결, 연결 속성의 (maxWait) 값을 설정하는 최대 대기 시간의 최대 수입니다 말했다. 구성에 의존하는 애플리케이션의 요구 사항 때문에,이 문서의 올바른 값을 지정할 수 없습니다. 당신은 데이터베이스 성능 테스트를 호출하여 올바른 값을 찾을 수 있습니다.

6 단계 - 톰캣 네이티브 라이브러리

네이티브 라이브러리 바람둥이 제품의 동작에서 최적의 성능을 보여주기 위해 뛰어난 확장 성 및 성능, 도움 네이티브 통합 서버 기술을 제공하는 아파치 휴대용 런타임 기반의 프로그래머 (아파치 휴대용 런타임 사월이라한다). APR () 설치 - 친구 톰캣 네이티브 라이브러리를 참조 설치 방법을 알고 싶습니다.

7 단계 - 기타 옵션

이 옵션은 다음과 같습니다

  • 브라우저의 캐시를 열고, 너무 크게, 더 빨리 전반적인 성능을 촉진 폴더 정적 콘텐츠의 웹 어플리케이션에 저장 읽기.
  • 때마다 부팅, Tomcat 서버가 자동으로 다시 시작해야합니다.
  • 일반적으로 HTTPS는 HTTP 요청보다 느리게 요청합니다. 당신은 우리가 여전히 느린 HTTPS 조금을 선택해야에도 불구하고, 더 나은 보안을합니다.

~~~~~~~~~~~~~~~~ 2013년 11월 7일에 Travis.Tang에 의해 정돈 ~~~~~~~~~~~~~~

GZIP 압축 설정 TOMCAT 사용

 

소개 원칙

클라이언트가 서버 측 리소스 파일 압축에서 서버 해당 자원을 요청하고 클라이언트에 출력, 클라이언트의 브라우저가 압축 해제 및 브라우징에 대한 책임이 후 HTTP 압축 크게 사이트를 탐색의 속도를 향상시킬 수 있습니다, 그 원칙이다. 일반 검색 HTML, CSS, 자바 스크립트, 텍스트에 상대, 그것은 트래픽의 40 %에 대해 저장할 수 있습니다. 더욱 중요한 것은 동적 CGI, PHP, JSP, ASP, 서블릿, SHTML 페이지와 다른 출력을 압축 할 수 포함한 발생 수, 압축 효율도 높은 것이다.

 

구성 심천 대리 명성 15023219993  쿤밍 대리 명성 15023219993  상하이 대리 명성 15023219993  천진 대리 명성 15023219993  청두 대리의 명성

버전 Tomcat5.0 GZIP 압축 포맷을 사용하여 압축 출력 콘텐츠 지원한다. 베이징 대리 명성 15023219993  광저우 대리 명성 15,023,219,993  15,023,219,993  베이징 대리 명성 15023219993  충칭 대리 명성 15023219993  충칭 대리의 명성 15023219993

 

수정 % TOMCAT_HOME % / conf의 / server.xml에, 노드가 같은 다음 개정 :

<Connector port="80" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8"compression="on"compressionMinSize="50" noCompressionUserAgents="gozilla, traviata"compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />

  위의 노드의 속성에서 알 수있는 바와 같이, gzip 압축을 사용하려면 노드 속성 커넥터를 추가 할 필요가

  • 압축 = "ON"오픈 압축
  • compressionMinSize은 = "50"압축 출력 콘텐츠의 크기, 기본 2킬로바이트를 활성화
  • 다음 브라우저에 대한 noCompressionUserAgents = "GoZilla와, 트라비아타"는 압축을 사용하지 않습니다
  • 자원 유형 압축을 필요 compressableMimeType = "text / html과, 텍스트 / XML, 텍스트 / 자바 스크립트, 텍스트 / CSS, 텍스트 / 일반"

시험 방법

TOMCAT이 압축 후가 얼마나 효과적 압축입니다 테스트 할 수있게?

톰캣 값 GZIP가 포함되어있는 경우, 브라우저가 지원하는 압축, 브라우저 지원 GZIP 압축 콘텐츠 탐색, 우리는 압축 여부를 확인하기 위해 두 가지 방법을 사용할 수 있음을 표시할지 여부를 판단 할 수있어서, 상기 제 브라우저 요청 수락 인코딩 헤더 인 효과.

우리는 직접 액세스 서버 기반 압축 구성으로 브라우저를 통해 다음 패킷 캡처 도구를 통해 수집 된 데이터 패킷을 볼 수, 당신이 읽을 수없는 경우 내용이 많이있다, 그것은 압축이 활성화되어 있음을 나타냅니다.

 

시뮬레이션 프로그램의 요청에 의해

우리는 HttpClient를 간단한 테스트 프로그램 코드가 그대로 다음 쓰기 :

@Test  public void testGzip() {          HttpClient httpClient = new HttpClient();          GetMethod getMethod = new GetMethod("http://localhost/admin.jsp");          try {                  getMethod.addRequestHeader("accept-encoding", "gzip,deflate");                  getMethod.addRequestHeader("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)");                  int result = httpClient.executeMethod(getMethod);                  if (result == 200) {                          System.out.println(getMethod.getResponseContentLength());                          String html = getMethod.getResponseBodyAsString();                          System.out.println(html);                          System.out.println(html.getBytes().length);                  }          } catch (HttpException e) {                  e.printStackTrace();          } catch (IOException e) {                  e.printStackTrace();          } finally {                  getMethod.releaseConnection();          }  }  

 이 프로그램의 JUnit 구현 및 출력이 횡설수설하는 경우는 출력이 무엇인지보고, 길이가 훨씬 실제 길이보다 콘텐츠를 인쇄, 그것은을 적용하기 위해 구성을 보여주고, 다른 검증 툴에 의해, 당신은 사이트를 찾을 수 검색 속도가 크게 향상 될 것입니다.

참고 : 콘텐츠가 압축되지 않은 찾을 경우, 요청 된 자원이 적은이 값보다, 그것은 압축을 사용하지 않을 경우 compressionMinSize 크기를 조정 고려할 수 있습니다.

추천

출처www.cnblogs.com/ipengrui2/p/12306735.html