Linux) watch 명령을 이용해 ls 명령어 실시간 호출하기

Intro 서버에 파일 업로드할 때 임시 파일이 생성되고 소멸되는 시점과 소요 시간 등을 확인 하기 위해 ls -al 명령어를 계속 치고 있었습니다. 임시 파일을 생성 하거나 삭제 할 때에 로그를 남기는 방법이 있지만, 스프링이 MultipartFile 을 받아 임시 파일을 생성하는 시점을 확인 하려니 쉽지 않았습니다. spring: servlet: multipart: location: /home/shane/Downloads SpringBoot 에서는 aplication.yml에 위의 설정을 통해 임시 파일이 생성되는 경로를 변경 할 수 있습니다. 탐색기를 띄워 두어 눈으로 확인 할 수도 있지만, SSH 로 서버에 접속해서 상태를 확인 할 때는 얄짤없이 ls -al을 계속 타이밍 해야 했는데요 watch..

IT ⁄ Computer/Linux 2022.06.17
Chrome 브라우저 업로드 / 다운로드 속도 제한 걸기

Intro 웹 애플리케이션의 파일 업로드와 다운로드 기능을 구현하는 과정에서 테스트를 하다 보면 꽤나 당황스러울 때가 많습니다. 웹 브라우저를 사용하고 있기는 하지만, 사실 브라우저를 통해 업로드 되는 파일은 네트워크 망을 전혀 타지 않고 디스크 내부에서만 COPY 행위가 일어나기 때문입니다. 이때의 속도는, 인터넷 속도에 영향을 받지 않고 디스크의 읽기/쓰기 속도를 따라 가기 때문에 일반적으로 상상하기 어려운 300 MB/s 가 나오곤 합니다. 요즘에는 보통 기가 인터넷을 쓰기 때문에 1Gbps 가 흔한데 300 MB/s가 대수냐 싶을 수도 있지만, 1MB/s == 8Mbps/s 이기 때문에 (bit와 Byte의 표기 차이) 300 MB/s 는 결국 2.4Gbps 의 속도인 것입니다. 물론 여전히 흔하..

Development/Develop Tools 2022.06.17
The getKey method should only be used when a single key is returned

Intro JDBC의 KeyHolder를 사용 하던 중 위와 같은 에러를 만났습니다. 에러 전문은 아래와 같습니다. org.springframework.dao.InvalidDataAccessApiUsageException: The getKey method should only be used when a single key is returned. The current key entry contains multiple keys: [{id=13, item_name=M2Air, price=1690000, quantity=12}] keyHolder.getKey() 를 했을때 하나의 키가 반환 되어야 하지만 여러개의 키가 반환 되어 발생한 에러라고 메시지에 쓰여 있습니다. 상황 NamedParameterJdbcTe..

Development/Daily Error 2022.06.16
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