JAVA 고수님들께 질문 드립니다.
6년전에 만들고 한번도 수정하지 않는 프로그램 (SDK)에 문제가 있는걸 첨 알았습니다.
프로그램은 REST기반의 Storage SDK입니다. AMAZON의 S3 Lib와 비슷합니다.
그동안 문제가 없었는데 (몰랐는데) 이번에 Python Library를 제공하면서 JAVA에 문제가 있음을 알았습니다.
정리하면 10G Network에서
Upload (B/W, CPU) | DownLoad (B/W, CPU) | |
JAVA | 130MB / 100% (single core) | 140MB / 100% (single core) |
Python (OpenSSL 사용) | 230MB / 30% (single core) | 330MB / 60% (single core) |
JAVA No-SSL | 480MB | 550MB |
Python No-SSL | 480MB | 550MB |
일반 Socket No-SSL | 510MB | 600MB |
입니다.
Web서버는 APACHE이고 설정 동일합니다.
JAVA에서 AES-NI를 사용하는건 확인했습니다. (-useAES 하면 성능 떨어짐)
JAVA - Python 모두 동일한 Cipher 상용합니다. TLS_RSA_WITH_AES_128_CBC_SHA. 다른것, MD5, RC4 등등 도 마찬가지.
뭐가 문제일까요? 저희가 JAVA 전문 조직이 아니라 그양 해매고 있습니다.
UPLOAD: 120MB
DOWNLOAD: 540MB°¡ ³ª¿Â´Ù°í ÇÕ´Ï´Ù.
À̰͵éÀÌ ¹º°¡ Àå³Ä¡´Â°Å °°Àºµ¥ È®ÀÎÇÒ ±æÀÌ ¾ø½À´Ï´Ù.
½ÉÁõÀº HTTPS°¡ ¾Æ´Ï¶ó HTTP¸¦ »ç¿ëÇϴ°Š°°Àºµ¥ ¸»ÀÌÁÒ...
º´¸ñ±¸°£ ½ÃÀÛÁ¡ÀÌ º¸Åë ¹®Á¦ÀÔ´Ï´Ù.
¿¹»óÀº 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·Î ´ëüÇϴ°ǵ¥ ±×·¯±ä ½È°í ¹¹ ±×·¸½À´Ï´Ù.
Jdk ¹öÀüÀº ¹«¾ùÀΰ¡¿ä?
Jdk7 ȤÀº 8
-versionÀ¸·Î ¼¼ºÎ ÆÐÄ¡¹öÀü È®ÀÎÇÏ½Ã°í ¹ö±× °ü·Ã »çÇ×À» ±¸±Û¿¡¼ °Ë»öÇÏ´Â °Íµµ ¹æ¹ýÀÔ´Ï´Ù
ÀÇ¿Ü·Î ÀÚ¹Ù°¡ ¹ö±×³ª º¸¾È ¹®Á¦°¡ ¸¹½À´Ï´Ù
JDK7, 8¿¡ ÀÖ´Â ¸¹Àº update¸¦ Å×½ºÆ® Çߴµ¥ ¸ðµÎ (¼º´É¿¡) ¹®Á¦°¡ ÀÖ½À´Ï´Ù.
°á±¹ Netty¿¡ ÀÖ´Â ¸ðµâÀ» ¶§´Ù°¡ ºÑ¿´½À´Ï´Ù. Netty°¡ Jetty¿Í ºñ½ÁÇҰŶó°í »ý°¢Çß¾ú´Âµ¥ ÀÏ¹Ý Network Library°¡ ¾Æ´Ï´õ±º¿ä. WebServer Àü¿ëÀ̶ó Á¶±Ý ´çȲÇß½À´Ï´Ù.
¾î°µç OpenSSL ¼öÁØÀÇ JAVA SSL Library¸¦ ¸¸µé¼ö Àֳ׿ä. ¼º´Éµµ ¸¸Á·ÇÒ ¸¸ ÇÕ´Ï´Ù.
ÀÌÁ¦ License¸¸ ÇØ°áÇÏ¸é µÇ°Ú½À´Ï´Ù.