2016-09-08 3 views
5

스프링 부트 + SSL과 같은 기능으로 Java Spring 프레임 워크의 성능을 테스트하여 REST API를 개발했습니다.스프링 부트 + SSL : CPU 사용량이 너무 많음

스프링 프레임 워크에 SSL 기능을 추가하면 너무 많은 CPU가 소모된다는 것을 알게되었습니다. 그러나 SSL 기능을 제거하면이 문제가 발생하지 않습니다.

REST 응용 프로그램을 테스트하기 위해 현재 20 개의 HTTP 요청/초 또는 100 개의 요청/초를 보내거나 응용 프로그램이 항상 CPU의 거의 200 %를 사용합니다.

응용 프로그램 서비스를 Spring에서 Tomcat으로 변경했습니다. 그 결과도 마찬가지였다.

Test Environment 
- Sender : Loading Test Generator Ubuntu, Dual Core, EC2 on AWS. 
- Receiver: Spring-Boot + SSL, Ubuntu, Dual Core, EC2 on AWS. 

다음은 수신 서버의 테스트 프로그램입니다.

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

/** 
* Hello world! 
* 
*/ 
@SpringBootApplication 
//@EnableAutoConfiguration 
public class App 
{ 
    public static void main(String[] args) 
    { 
     SpringApplication.run(App.class, args); 
    } 
} 

다음은 테스트 생성기 명령을 siege on sender 서버에로드하는 것입니다.

//Current 1 request 
siege -b -c6 -t60S https://receiver Server IP:8443/ 

//Current 100 request 
    siege -b -c100 -t60S https://receiver Server IP:8443/ 

다음 정보는 수신 서버의 테스트 결과입니다.

Current Requests/sec  Usage of CPU1 Usage of CPU2 Succ 
    1       40%   40%   100% 
    2       80%   80%   100% 
    3       95%   95%   100% 
    6       100%   100%   100% 
    100      100%   100%   100% 
    600      100%   100%   100% 

CPU의 사용량이 100 % 미만인 동안 Spring의 최대 성능은 3 요청/초입니다. 스프링 애플 리케이션은 모든 요청을 처리 할 수 ​​있지만 너무 많은 CPU를 소비합니다.

아래와 같이 매우 간단한 코드를 다운로드하여 사용해보십시오. https://github.com/dpomaresp/Spring-boot-with-ssl

이 문제를 명확히 설명해 주시겠습니까? 왜 이상한 문제가 발생 했습니까? Spring 프레임 워크의 문제인가?

이 문제에 대한 귀하의 친절한 도움은 매우 감사하겠습니다.

에릭

+0

스프링 부트 프레임 워크 v1.3.0 및 1.4.0에서도 테스트를 마쳤습니다. 그 결과도 마찬가지였다. –

+0

봄에 ssl을 추가하지 않고 Tomcat에 추가합니다. 그래서 그것을 임베디드에서 비 임베디드로 변경해서는 안됩니다. 물론 암호화와 암호 해독이 모든 연결에서 이루어지기 때문에 CPU로드가 증가합니다. –

+0

감사합니다. Tomcat에 추가했습니다. 그러나 CPU 부하가 너무 빨리 증가하여 REST 응용 프로그램에 소량의 데이터를 보냈습니다. –

답변

관련 문제