Jetty 는 메모리 가 너무 큰 솔 루 션 을 사용 합 니 다.

5607 단어 jetty
전에 Jetty 로 메시지 알림 서버 를 만 든 적 이 있 습 니 다. 주요 기능 은 다른 키 시스템 입 니 다. push 가 클 라 이언 트 에 게 메 시 지 를 줄 필요 가 있 으 면 이 메 시 지 를 저 에 게 보 낸 Server 입 니 다. 저 는 WebSocket 으로 클 라 이언 트 에 게 추 천 했 습 니 다. 프로그램 이 출시 된 지 얼마 되 지 않 은 후에 운영 엔지니어 가 저 에 게 제 프로그램 이 16G 메모 리 를 차지 했다 고 말 했 습 니 다. 제 순 둥 이 는 Xmx 를 2G 로 설정 하 는 것 을 기억 합 니 다.왜 이렇게 큰 메모 리 를 먹 었 을 까?!!테스트 를 통 해 알 수 있 듯 이 메모 리 를 사용 하 는 것 은 응용 메모리 가 아니 라 시스템 의 메모리 입 니 다. 이 메모리 들 은 응용 관 에 속 하지 않 고 JVM 관 에 속 합 니 다 ~ ~ Jetty 는 자바 의 nio 를 사용 합 니 다. nio 는 bytebuffer 분 배 를 요청 할 때 두 가지 가 있 습 니 다. 하 나 는 응용 메모리 분배 입 니 다. 하 나 는 시스템 메모리 분배 입 니 다 ~ 끼 워 넣 는 방식 으로 시작 하 는 Server 라면 이 두 줄 의 코드 를 추가 하면 됩 니 다.SelectChannelConnector conn = new SelectChannelConnector();conn.setUseDirectBuffers(false);
또한, Jetty 의 프로필 을 찾 아 설정 파일 에 쓰 는 것 도 OK 입 니 다 ~
<Call name="addConnector">
    <Arg>
        <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
            <Set name="host"><Property name="jetty.host" /></Set>
            <Set name="port"><Property name="jetty.port" default="8877"/></Set>
            <Set name="maxIdleTime">300000</Set>
            <Set name="Acceptors">2</Set>
            <Set name="statsOn">false</Set>
            <Set name="confidentialPort">8443</Set>
            <Set name="useDirectBuffers">false</Set>
            <Set name="lowResourcesConnections">20000</Set>
            <Set name="lowResourcesMaxIdleTime">5000</Set>
        </New>
    </Arg>
</Call>

원본 링크:http://www.coderroad.com/blog/15/

좋은 웹페이지 즐겨찾기