JAVA SSL의 성능으로 고생하고 있습니다

   조회 4517   추천 0    

JAVA 고수님들께 질문 드립니다.

6년전에 만들고 한번도 수정하지 않는 프로그램 (SDK)에 문제가 있는걸 첨 알았습니다.

프로그램은 REST기반의 Storage SDK입니다.  AMAZON의 S3 Lib와 비슷합니다.

그동안 문제가 없었는데 (몰랐는데) 이번에 Python Library를 제공하면서 JAVA에 문제가 있음을 알았습니다.

정리하면 10G Network에서


Upload (B/W, CPU)DownLoad (B/W, CPU)
JAVA130MB / 100% (single core)140MB / 100% (single core)
Python (OpenSSL 사용)230MB / 30% (single core)
330MB / 60% (single core)
JAVA No-SSL480MB550MB
Python No-SSL480MB550MB
일반 Socket  No-SSL510MB600MB

입니다.

Web서버는 APACHE이고 설정 동일합니다.

JAVA에서 AES-NI를 사용하는건 확인했습니다. (-useAES 하면 성능 떨어짐)

JAVA - Python 모두 동일한 Cipher 상용합니다. TLS_RSA_WITH_AES_128_CBC_SHA.  다른것, MD5, RC4 등등 도 마찬가지.

뭐가 문제일까요?  저희가 JAVA 전문 조직이 아니라 그양 해매고 있습니다.

짧은글 일수록 신중하게.
epowergate 2018-03
참고로 저희 경쟁사 제품 (EMC)는 JAVA에서
UPLOAD: 120MB
DOWNLOAD: 540MB가 나온다고 합니다.
이것들이 뭔가 장난치는거 같은데 확인할 길이 없습니다.
심증은 HTTPS가 아니라 HTTP를 사용하는거 같은데 말이죠...
소스를 모르는 한 뭐가 문제인지 답하기 어려운 상황이네요. 다만 CPU 사용율이 올라가는 시점이 어디서 부터 시작하는지 확인해보세요.
병목구간 시작점이 보통 문제입니다.
     
epowergate 2018-03
동일한 Code를 http로 하면 아무런 문제가 없습니다. 그냥  Python하고 동일합니다.
예상은 JAVA에서 제공하는 SSL Library가 후져서 그런거 같은데 확신이 없어서요.
Jetty와 Netty 모두 JAVA기반의 Web Server (사실은 Network 서버)인데 Netty가 Jetty 보다 3배정도 속도가 좋다고 합니다 (google). 이부분은 확인중에 있구요.  Netty는 Openssl을 사용하고 Jetty를 JAVA Library를 사용한다고 하네요.
정 해결못하면 저희 GET/PUT을 Netty의 get/put lib call로 대체하는건데 그러긴 싫고 뭐 그렇습니다.
          
사용해 보지 않아서 답변 드리기 어려우나 밴치마크상 네티의 성능이 더 좋은 것으로 알려져 있습니다. 아마도 자바의 ssl lib 성능의 영향으로 전체 성능이 떨어지는 것으로 보입니다. 달리 방법이 없어 보이내요. 싫어 하신다는 그 방법을 먼저 적용 해 보는 수밖에 없을거 같아 보입니다.
online9 2018-03
위분 말씀대로 소스를 보지 못하니 알 방법이 없습니다
Jdk 버전은 무엇인가요?
Jdk7 혹은 8
-version으로 세부 패치버전 확인하시고 버그 관련 사항을 구글에서 검색하는 것도 방법입니다
의외로 자바가 버그나 보안 문제가 많습니다
epowergate 2018-03
JDK에 있는 SSL LIB이 문제였습니다.
JDK7, 8에 있는 많은 update를 테스트 했는데 모두 (성능에) 문제가 있습니다.
결국 Netty에 있는 모듈을 때다가 붇였습니다.  Netty가 Jetty와 비슷할거라고 생각했었는데 일반 Network Library가 아니더군요. WebServer 전용이라 조금 당황했습니다.
어째든 OpenSSL 수준의 JAVA SSL Library를 만들수 있네요.  성능도 만족할 만 합니다.
이제 License만 해결하면 되겠습니다.


QnA
제목Page 3607/5709
2015-12   1682929   백메가
2014-05   5148335   정은준1
2016-03   4489   행복을찾아서
2020-06   4488   윤하쨔응
2016-07   4488   yuno
2016-07   4488   토브
2016-05   4488   Lucyed
2018-08   4488   아리시마
2007-04   4488   박성만
2007-04   4488   김기범
2014-05   4488   김윤술
2016-08   4488   perls
2020-12   4488   NiteFlite9
2019-02   4487   니크네이므
2017-10   4487   황재광
2016-12   4487   허인구마틴
2014-02   4487   Leo
2017-09   4487   아슬레이
2015-09   4487   ery
2015-08   4487   세이용이
2018-01   4487   화란
2015-08   4487   라크67