DevTzu
[Debug] 아파치 파일 업로드 오류 ERR_CONNECTION_RESET 본문
(failed)net::ERR_CONNECTION_RESET
[시스템 환경]
최근 새로운 운영사이트를 인수인계받았습니다.
그동안 개발해왔던 시스템 구성 환경은 nginx + Spring Boot or Tomcat 구조였고 이 환경에 익숙한 상태였습니다.
그러나 이번 인수인계받은 프로젝트는 Apache + Tomcat + Spring MVC 구조였습니다.
프로젝트를 개발하며 nginx 쪽에 설정해야 된 부분이 있는데 nginx가 없어 당황했는데요.
그러나 Apache가 그 역할을 동일하게 해주고 있다는 것을 이번 기회에 알게 되었습니다.
[현상]
이번 문제는 대용량 파일 업로드 개발 건 중 발생하였습니다.
파일 업로드 시 Max Upload Size 관련 설정이 필요하다는 것을 알고있었고, 설정이 들어갈 부분에 세팅해주었습니다.
그런데 100MB 파일 업로드시 잘 되었으나, 200MB 이상된 파일은 오류가 발생하는 것입니다.
300MB, 500MB 파일도 동일하게 발생하였고요.
로컬 환경이나 개발서버에서는 발생하지 않았던 문제입니다.
(원인을 발견하고 난 이후 알게 된 사실이지만 로컬 환경이나 개발서버에는 Apache가 세팅이 되어있지 않습니다. 그래서 테스트시에는 발생하지 않았습니다.)
파일 업로드 시 오류 발생한 경우(200MB 이상 파일)
파일 업로드시 정상 처리된 경우(100MB 이하 파일)
[원인]
오류가 나온 패턴을 보니 업로드 20초 경과 시 오류로 리턴되는 것을 보고 Send Request Timeout 쪽이 문제이지 않을까 방향을 잡고 구글링을 하였습니다.
역시 구글 검색은 가장 첫 번째 결과로 해결책을 보여주네요.
Apache 설정을 통해 Request Read Timeout 시간을 설정할 수 있었습니다.
좀 더 디테일하게 handshake, header, body 각각 초단위로 설정이 가능했습니다.
그럼 알려준 방법을 적용해 보겠습니다.
[해결방법]
1) 우선 터미널 접속하여 apache 설치 경로를 찾아봅니다.
-> ps -ef | grep apache
2) 이렇게 입력하면 서버에 apache로 실행된 프로세서를 검색해서 보여줍니다.
3) 아파치가 설치된 경로를 찾았으니 해당 폴더로 이동합니다.
apache 폴더 밑에 conf폴더에 설정 파일인 httpd.conf 가 있습니다.
vi로 httpd.conf 파일을 열어줍니다.
-> cd /usr/local/apache/conf
-> vi httpd.conf
4) 파일 가장 밑으로 이동하여 RequestReadTimeout 관련 설정을 넣어줍니다.
-> RequestReadTimeout handshake=5 header=10 body=30
5) 아파치 설정이 변경되었으니 재실행을 해보겠습니다.
apache 폴더 밑 bin폴더로 다시 이동합니다.
apachectl 파일로 restart 를 할 수 있습니다.
-> cd /usr/local/apache/bin
-> ./apachectl restart
6) 오류가 났던 200MB 이상 파일을 업로드해봅니다.
200MB이상 파일 업로드 시 20초 경과되어도 오류 없이 성공됨
[참고링크]
https://httpd.apache.org/docs/2.4/mod/mod_reqtimeout.html
- Allow for 5 seconds to complete the TLS handshake, 10 seconds to receive the request headers and 30 seconds for receiving the request body:
RequestReadTimeout handshake=5 header=10 body=30
'study' 카테고리의 다른 글
[javascript] 자주쓰는 javascript 함수 10가지 (0) | 2022.10.17 |
---|---|
[Java Spring] AWS Amazon Rekognition 시작하기 / 아마존 레코그니션 설정 (0) | 2022.10.15 |
java.sql.SQLSyntaxErrorException: Table '' doesn't exist (0) | 2022.03.14 |
JAVA - java.net.UnknownHostException (0) | 2022.03.11 |
[Spring boot] AWS Tomcat에 war 배포시 404 에러 (0) | 2020.01.06 |