WildFly 9로 HTTP2 해볼게요.
개시하다
WildFly9 출시 이후 두 달이 지났습니다.나는 WildFly9의 눈동자 기능 중 하나가 HTTP/2 지원노트 를 발행 하다이라고 생각한다.HTTP/2는 한 연결에서 여러 요청/응답을 동시에 처리할 수 있습니다(HTTP/1.1에서 기본적으로 1 연결=1 요청/응답).이렇게 하면 많은 자원을 필요로 하는 웹 페이지의 불러오는 시간을 단축할 수 있다.
이 글은 WildFly9에서 HTTP/2의 설정 방법을 설명한 후 HTTP/2와 HTTP/1.1의 성능을 실제적으로 검증하였다.
환경 확인
WildFly 설정
다운로드
공식 사이트에서 zip 파일을 다운로드하여 적당한 곳으로 해제합니다(이하 예시에서/opt).해동된 디렉터리 분배를 jboss 사용자로 변경합니다.$ cd /opt
$ sudo curl -O http://download.jboss.org/wildfly/9.0.1.Final/wildfly-9.0.1.Final.zip
$ sudo unzip wildfly-9.0.1.Final.zip
$ chown -R jboss wildfly-9.0.1.Final
나중에 $JBOSSHOME은/opt/wildfly-99.0.1입니다.Final을 지정합니다.또한 jboss 사용자를 사용하여 작업을 진행합니다.
부트 클래스 경로에 ALPN 추가
현재 주요 브라우저는 TLS(SSL)의 HTTP/2(HTTP/2의 규격상 일반 HTTP)만 지원한다.따라서 HTTP/2를 사용하려면 서버 측도 TLS에 대응해야 합니다.그러나 HTTP/2를 사용할 때는 일반적인 TLS 확장이 아닌 ALPN이라고 불리는 TLS 확장이 필요합니다.현재 JDK8 로컬에서는 ALPN을 지원하지 않기 때문에 확장 라이브러리(jar)를 시작 클래스 경로에 추가해야 합니다.또한 JDK7보다 강력한 비밀번호 방식을 갖춘 JDK8이 필요합니다.
ALPN 다운로드
공식 웹사이트에서 ALPN을 다운로드합니다.가져온 버전은 실행 환경인 JVM의 버전에 따라 달라집니다.버전의 대응 표는 공식 사이트에 있습니다.다운로드 주소는 $JBOSS입니다.HOME/BIN으로서$ cd /opt/wildfly-9.0.1.Final/bin
$ curl -O http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.1.3.v20150130/alpn-boot-8.1.3.v20150130.jar
standalone.conf 설정
$JBOSS_HOME/bin/standalone.conf에 다음 줄을 추가합니다.따라서 WildFly를 시작하면 위에서 설명한 ALPN이 시작 클래스 경로에 추가됩니다.JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:alpn-boot-8.1.3.v20150130.jar"
SSL 인증서 작성
JSSE 도구의 keytool 명령을 사용하여 SSL 인증서1를 만듭니다.이곳은 시험 목적이기 때문에 자기 증명서입니다.
인증서 작성
다음 명령에 따라 인증서가 저장된 키 저장소$JBOSSHOME/standalone/configuration/http2test.키스토어 파일을 만듭니다.$ keytool -genkeypair -alias http2test -keyalg RSA -keystore /opt/wildfly-9.0.1.Final/standalone/configuration/http2test.keystore -storepass storepass -keypass keypass -dname "cn=localhost, c=JP"
HTTPS 커넥터 설정
다운로드 후 동결해제된 WildFly는 SSL(HTTPS)을 사용할 수 없습니다.standalone.HTTPS 커넥터를 설정하려면 xml을 편집해야 합니다.
standalone.xml 설정
$JBOSS_HOME/standalone/configuration/standalone.xml 편집.
$ cd /opt
$ sudo curl -O http://download.jboss.org/wildfly/9.0.1.Final/wildfly-9.0.1.Final.zip
$ sudo unzip wildfly-9.0.1.Final.zip
$ chown -R jboss wildfly-9.0.1.Final
$ cd /opt/wildfly-9.0.1.Final/bin
$ curl -O http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.1.3.v20150130/alpn-boot-8.1.3.v20150130.jar
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:alpn-boot-8.1.3.v20150130.jar"
$ keytool -genkeypair -alias http2test -keyalg RSA -keystore /opt/wildfly-9.0.1.Final/standalone/configuration/http2test.keystore -storepass storepass -keypass keypass -dname "cn=localhost, c=JP"
<security-realms>
구역에 생성된 인증서를 사용하는 안전 등급을 추가합니다. <security-realm name="https">
<server-identities>
<ssl>
<!-- この例ではhttp2test.keystore は同一ディレクトリにある -->
<keystore path="http2test.keystore" relative-to="jboss.server.config.dir" keystore-password="storepass" alias="http2test" key-password="keypass"/>
</ssl>
</server-identities>
</security-realm>
<subsystem xmlns="urn:jboss:domain:undertow:2.0">
영역에 추가합니다. <!-- security-realm属性には、上のsecurity-realmで設定したname属性の値(この例ではhttps)を設定します。-->
<https-listener name="https" socket-binding="https" security-realm="https" enable-http2="true"/>
참고로 WildFly에서 웹 서브시스템Undertow 설치로 바뀌었습니다.확인
WildFly를 시작합니다.
$ /opt/wildfly-9.0.1.Final/bin/standalone.sh
브라우저를 시작하고 다음 URL을 입력합니다.https://localhost:8443/
자기증명서라서 경고하는데 잠자리 같은 로고와 함께 Welcome to WildFly 9로 뜨면 OK.측정 응용 프로그램
측량용 프로그램을 제작하다.측정 애플리케이션이지만 WildFly logo 500개를 표시하는 JSP에 불과합니다.
로고
WildFly 플래그입니다.잠자리 같은 거 있어요?
여기.부터 먹어...m(__)m
JSP
sample.jsp<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>
<head>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<title>http2のテストページ</title>
<meta charset="utf-8">
</head>
<body>
<%
long current = System.nanoTime();
for (int i = 0; i < 500; i++) {
%>
<!-- キャッシュさせないために、パラメータをつけておく -->
<img src="wildfly_logomark_64px.png?<%=current + i%>" />
<%
}
%>
</body>
</html>
측정 결과
HTTP/1.1 및 HTTP/2 측정용 페이지의 결과는 다음과 같습니다.브라우저는 크롬입니다.
현재 기본 브라우저는 SSL(HTTPS)에서만 HTTP/2를 지원합니다.따라서 일반적인 HTTP 프로토콜을 통해 연결할 때는 HTTP/1.1이고 HTTPS를 통해 연결할 때는 HTTP/2이다.
HTTP/1.1
HTTP/2
HTTP/1.1에서 페이지 로드 시간은 약 2.9초입니다.HTTP/2의 속도는 약 1.3초로, HTTP/2의 속도는 2배 이상 높아졌다.또한 Chrome의 개발자 도구와 같이 HTTP/2는 대량의 이미지를 동시에 불러옵니다.
사이트 축소판 그림
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>
<head>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<title>http2のテストページ</title>
<meta charset="utf-8">
</head>
<body>
<%
long current = System.nanoTime();
for (int i = 0; i < 500; i++) {
%>
<!-- キャッシュさせないために、パラメータをつけておく -->
<img src="wildfly_logomark_64px.png?<%=current + i%>" />
<%
}
%>
</body>
</html>
HTTP/1.1 및 HTTP/2 측정용 페이지의 결과는 다음과 같습니다.브라우저는 크롬입니다.
현재 기본 브라우저는 SSL(HTTPS)에서만 HTTP/2를 지원합니다.따라서 일반적인 HTTP 프로토콜을 통해 연결할 때는 HTTP/1.1이고 HTTPS를 통해 연결할 때는 HTTP/2이다.
HTTP/1.1
HTTP/2
HTTP/1.1에서 페이지 로드 시간은 약 2.9초입니다.HTTP/2의 속도는 약 1.3초로, HTTP/2의 속도는 2배 이상 높아졌다.또한 Chrome의 개발자 도구와 같이 HTTP/2는 대량의 이미지를 동시에 불러옵니다.
사이트 축소판 그림
http://wildfly.org/news/2015/07/02/WildFly9-Final-Released/
http://www.javadera.com/blog/wildfly-9-final-release-node/(일본어역)
http://undertow.io/blog/2015/03/26/HTTP2-In-Wildfly.html
https://docs.jboss.org/author/display/WFLY8/Examples
https://docs.oracle.com/javase/jp/6/technotes/tools/windows/keytool.html
http://www.eclipse.org/jetty/documentation/current/alpn-chapter.html
http://codezine.jp/article/detail/8663
https://http2.akamai.com/demo
HTTP/1.1과 HTTP/2 성능의 차이는 시각적으로 뚜렷하다.
Reference
이 문제에 관하여(WildFly 9로 HTTP2 해볼게요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/pebblip/items/19c8856f36f5d553bbbb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)