스프링에서 AWS S3 파일 업로드시 지연시간 질문드립니다.

1,049 views
Skip to first unread message

이용범

unread,
Nov 11, 2015, 7:42:06 PM11/11/15
to Korea Spring User Group Q&A

안녕하세요!

아침부터 해결되지 않아 이렇게 질문을 드립니다.

현재 AWS S3 버킷에 이미지를 업로드할 수 있는 API를 개발하고 있는데요


이상한게 이미지 파일용량이 1MB만 넘어가도 9초 ~ 30초 이런식으로 업로드 시간이 걸리고 있습니다.

서버 환경은 Spring 4.1.7 + JAVA8 + Tomcat7.0.64 + Maven 기반이고, Spring boot는 사용하고 있지 않습니다.

서버는 AWS EC2가 아닌 IDC에 입고되어있고, 로컬에서 테스트할때도 동일하게 느린걸로 봐서는 프로젝트 자체문제인듯 한데 원인을 모르겠습니다..


지금 아래처럼 구성하였는데요, 


maven

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-s3</artifactId>
        <version>1.10.32</version>
    </dependency>



AWS S3 초기화

AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
            ClientConfiguration clientConfig = new ClientConfiguration();
            clientConfig.setProtocol(Protocol.HTTP);
            this.amazonS3Client = new AmazonS3Client(credentials, clientConfig);
    //      this.amazonS3Client.setEndpoint("ap-northeast-1.amazonaws.com");
            this.amazonS3Client.setRegion(Region.getRegion(Regions.fromName(region)));



AWS S3 업로드

private PutObjectResult upload(InputStream inputStream, String uploadKey, ObjectMetadata metadata) {
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, uploadKey, inputStream, metadata);
            putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead);
            PutObjectResult putObjectResult = amazonS3Client.putObject(putObjectRequest);
            IOUtils.closeQuietly(inputStream);
            return putObjectResult;
        }




이부분(실제 업로드 코드)에서 속도가 급격히 떨어지고 있습니다.

PutObjectResult putObjectResult = amazonS3Client.putObject(putObjectRequest);



Parameter

putObjectResults.resultData.add(upload(multipartFile.getInputStream(), tempName, metadata));




톰캣 설정 문제일까요? S3 콘솔에서 직접 업로드 하면 동일한 16MB 파일이 1초면 올라갑니다.

문제점을 도저히 못찾아서 이렇게 질문드려봅니다


혹시 스프링에서 S3 에 파일 업로드할때 추가적으로 설정을 잡아줘야 하는게 있는지요?

조언 부탁드리겠습니다(__)

이용범

unread,
Nov 11, 2015, 9:15:40 PM11/11/15
to Korea Spring User Group Q&A
질문자입니다.
스프링 부트로 프로젝트를 재구성해서 로컬에서 돌려보니 속도가 빠른걸 확인하였습니다.
하지만 war 파일로 만들어서 서버 Tomcat7.0.64 에 배포만 하면 속도가 다시 떨어지는걸 확인하였습니다.

현재 톰캣 설정은 아래와 같이 되어있는데 이게 AWS S3 에 파일 업로드시 속도에 영향을 주는건가요??
 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               URIEncoding="UTF-8"
               disableUploadTimeout="true"
               compression="off"
               tcpNoDelay="true"
               redirectPort="8443" maxThread="100" maxHttpHeaderSize="8192" emptySessionPath="true" enableLookups="false" acceptConut="5" MaxKeepAliveRequest="1" />


CATALINA_OPTS="-server -Xms2048M -Xmx2048M -XX:PermSize=128M -XX:MaxPermSize=128M -Xnoclassgc -XX:NewSize=512M -XX:MaxNewSize=1024M -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=50 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+AggressiveOpts -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true"


감사합니다.







2015년 11월 12일 목요일 오전 9시 42분 6초 UTC+9, 이용범 님의 말:

김지헌

unread,
Nov 11, 2015, 9:26:41 PM11/11/15
to ks...@googlegroups.com
Tomcat 8 이상으로 올려보신다면??
스프링부트에서는 Tomcat 8 이 Embedded Container  로 기본포함되어 있습니다.

2015년 11월 12일 오전 11:15, 이용범 <top...@gmail.com>님이 작성:

--
이 메일은 Google 그룹스 'Korea Spring User Group Q&A' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ksug+uns...@googlegroups.com에 이메일을 보내세요.
http://groups.google.com/group/ksug에서 이 그룹을 방문하세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/ksug/0fadef6f-4442-4dde-be9d-d2ca1b8e9b1d%40googlegroups.com을(를) 방문하세요.

더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.



--
이름 : 김지헌
별명 : 허니몬
블로그 : http://ihoney.pe.kr / http://java.ihoney.pe.kr
트위터 : @ihoneymon
이메일 : ihon...@gmail.com

YongHyeok Lee

unread,
Nov 11, 2015, 9:48:16 PM11/11/15
to ks...@googlegroups.com
네트워크 문제가 아닐까요..
실제로 유럽을 경유해서 몇번 돌아서 간다던지...
서버에서만 그런거지요..?

나의 iPhone에서 보냄

2015. 11. 12. 11:26 김지헌 <ihon...@gmail.com> 작성:

Reply all
Reply to author
Forward
0 new messages