NGINX 대용량 파일 업로드 502 응답

Intro 대용량의 파일 업로드를 시도 할 때, 특정 용량을 넘어가면 업로드가 되지 않고 502 응답이 오는 문제가 있었습니다. 로컬 개발환경에서는 아무 문제 없지만 운영 및 개발 서버에서 문제가 재현 되었습니다. 300MB 업로드 요청시 응답 시간 정보 일단 20MB, 100MB, 300MB, 1000MB 크기의 더미 파일을 각각 준비 해두고 더미 파일 생성 방법은 아래의 링크를 참고 해 주세요 Linux) 대용량의 더미 파일 생성하기 업로드 테스트를 진행 해 본 결과 300MB 까지는 문제 없이 업로드가 되었으나, 1000MB 파일을 업로드 하려고 하면 자꾸 NginX에서 502 응답을 보내고 있었습니다. 원인 저의 경우에 Nginx 설정 값이 원인 이었습니다. nginx.conf 파일을 확인 해 보..

Development/Daily Error 2022.06.15
Linux 에서 열려있는 파일을 삭제할 때 일어나는 일

Intro 진행상황 회사에서 진행중인 프로젝트에서 기능 추가를 위해 임시 파일을 다루던 중 예기치 못한 동작을 확인 했습니다. 지금의 구조를 간략하게 보면 대략적으로 데이터 파일 저장에 관련된 부분만 보았을 때 이런 식으로 이루어 져 있습니다. 사용자가 파일을 업로드 할 경우에, 사용자를 응대해 주는 서버가 저장담당 서버와 통신을 하고, 그 파일을 전달 받은 후에는 DB에 관련된 메타데이터 정보를 저장 하고 실제 파일은 또 다른 파일 저장에 관련된 부분만을 관리 하는 또 다른 파일관리 어플리케이션에 전달을 하게 됩니다. 1번 서버에서 2번 서버로 전달되는 과정에서의 비용도 제법 아까운데, 시간을 측정 했을 때에 파일 저장소에 저장해내는 4번의 과정에서 대부분의 병목이 일어나는 것이 확인 되었습니다. 심지..

IT ⁄ Computer/Linux 2022.06.13
JAVA) 자바에서는 Call By Reference가 불가능 합니다.

Intro 사실 자바를 처음 배우고나서 최근까지도 함수를 호출 하여 파라미터가 전달 될 때에 primitive 타입인 경우에는 value가, 그 외에는 reference가 전달 된다 라고 알고 있었습니다. 자바에서의 Primitive 데이터 타입들 byte short int long float double boolean char String의 경우에만 String pool을 통해 immutable로 관리되기 때문에 primitive가 아님에도 call by reference가 되지 않지만 Java) String의 Immutable이 의미하는 것 그 외에는 reference가 넘어간다고 알고 있었는데요 그 개념 하에서는 LinkedNode 나 Trie 등을 다루는 메서드를 짤 때 마다 뭔가 생각한 대로 동..

Programming/Java 2022.06.06
AppleScript로 MacOS 자동 작업 스케줄 등록하기

Intro 10년 전 쯤에 컴퓨터를 쓰다가 뭔가 자동화가 필요한 시점에서는 항상 AutoHotkey 라는 스크립트를 주로 사용했었습니다. 이 덕분에 정말 말할 수 없을 만큼 다양한 작업들을 스크립트 작성 후 자동으로 했었는데요. MacOS를 사용하면서 뭔가 스케줄을 등록해두고 자동으로 시행했으면 하는 일들이 생겼는데, 맥에서는 AutoHotkey가 지원이 되지 않아 대체제를 찾아보다가 애플에서 제공하는 AppleScript가 있기에 한번 사용을 해 보았습니다. 생각보다 문법이 직관적이고 어렵지 않았으며 의도한 대로 작동 했기 때문에 사용법을 한번 남겨 보려고 합니다. 특정 시간에 카카오톡으로 메시지 전송 어떤 작업을 자동으로 진행 해 볼까 하다가 카톡 메시지 전송을 한번 테스트 해 보았습니다. scrip..

IT ⁄ Computer/Mac 2022.06.04
Linux) 스왑(swap) 메모리 설정 변경

Intro 메모리 부족 Windows 에서는 WSL 위에 도커 컨테이너 몇개 띄우고, 인텔리제이에 브라우저 탭 몇개만 켜면 메모리가 바닥나버리는 바람에 Linux 사용을 시작한지도 어느덧 1년이 다 되어갑니다. 처음 우분투로 옮겼을때는 평소 윈도우에서는 메모리를 다 잡아먹었을 만큼 어플리케이션을 띄워도 거의 절반의 메모리 만을 사용하기 때문에 굉장히 쾌적했는데 그 사이 도커 컨테이너도 몇개 늘고 프로젝트에서 사용하는 어플리케이션도 몇개 늘어났습니다. 메모리 부하가 조금만 심해졌다 하면 컴퓨터가 그대로 멈춰버리는 바람에 그때마다 Ctrl + Alt + F6 으로 터미널 모드에 들어가 돼지 프로세서들 몇개를 kill 해낸 후 Alt + F1 로 돌아오는 방식으로 해결을 하고는 있지만 여간 번거로운 일이 아닙..

IT ⁄ Computer/Linux 2022.05.31