글 전체(33)
-
[Docker] docker: Error response from daemon: exec: "nvidia-container-runtime-hook": executable file not found in $PATH.
이전 글과 이어집니다 NVIDIA driver를 재설치 한 후 docker로 다시 NVIDIA가 연결된 컨테이너를 재시작했는데 해당 에러가 났다. Error response from daemon: exec: "nvidia-container-runtime-hook": executable file not found in $PATH. NVIDIA driver를 새로 설치해서 인식을 못하는 것 같은 느낌이었다(어떤 이유인지는 정확하게 모름) 이번에도 검색을 해 보니 nvidia-container-runtime을 설치해 주면 문제가 쉽게 해결된다고 한다. $ apt-get install nvidia-container-runtime
2022.08.16 -
[Ubuntu] couldn't communicate with the NVIDIA driver
연휴가 끝난 후 졸린 눈을 비비고 출근하여 서버를 확인해 보니 couldn't communicate with the NVIDIA driver 라는 에러가 발생했다. 건든 것도 없고 무엇이 문제인지 감이 안잡혀서 먼저 커널 로그를 살펴보았다. 그 결과 관련해서는 아무 것도 나오지 않았다. 그래서 구글에 검색해 본 결과 꽤 많은 포스트가 검색되었다. 아마 자주 일어나는 에러인 것 같다. 그렇기에 나도 따로 정리를 해보려고 한다. 에러 발생 원인 nvidia GPU 드라이버에 문제가 생기는 경우에 에러가 발생한다. NVIDIA 드라이버를 사용 중에 서버를 종료하거나 시스템을 종료하면 에러가 난다고 한다. 에러 해결 방법 기존 서버에 설치되어 있는 NVIDIA 드라이버를 전부 삭제하고 재설치하면 된다. NVID..
2022.08.16 -
[Django] pending되는 이슈에 대한 고찰
회사 프로젝트 진행 중 당황스러운 일을 겪었다. 영상 업로드 요청에 대해서 긴 시간이 걸렸다(엄청나게 길진 않지만 거의 1분 가까이 걸렸다). 그 이유는 한 번의 요청에 여러 이벤트가 발생했다는 점. 영상 파일을 웹서버에 업로드 업로드된 파일을 mp4파일로 변환(FFMPEG 사용) 업로드된 파일을 raw파일로 변환(FFMPEG 사용) 위에 변환된 두 파일을 NAS에 저장 mp4로 변환된 파일을 외부 storage에 저장 4번에서 NAS에 저장된 두 파일의 path를 DB에 저장하고 client에 리턴 이렇게 한 번에 많은 것을 처리하기 때문에 업로드 요청 시간이 오래 걸리게된다. 아키텍처를 내가 설계했다면 이런 식으로 하지 않았겠지만 기존 레거시 코드를 기반으로 마이그레이션했기 때문에 어쩔 수 없이 이런..
2022.08.02 -
포트 포워딩이란?
포트를 전달한다. Port란? port는 단어 뜻 그대로 항구라는 뜻이다. 항구에 서로 다른 배들이 정착하고 나가듯, 서버도 마찬가지로 이런 항구의 역할을 하는 친구가 필요하다. 그것이 바로 port이다. 하나의 서버에서는 여러 역할을 할 수가 있다. 데이터베이스를 관리할 수도 있고 다른 서버에 요청을 보낼 수도 있다. 파일을 전송할 수도 있고 굉장히 여러 기능이 존재할 수 있다. 그러나 포트가 없이 서버 IP주소로만 요청을 보내면 어떤 요청을 하는 것인지 알 수가 없다. 따라서 어디로 요청을 보내는 것인지 알려주기 위해 숫자로 포트 번호를 부여하고 해당 포트로 요청을 하게 된다. 포트의 종류는 크게 다음과 같이 3종류로 표현이 된다. 0 ~ 1023 : 잘 알려진 포트(well-known port) 잘..
2022.07.15 -
[성능 테스트] 성능테스트 기본 지식
1. 웹 시스템 가용성 가용성: 서버와 네트워크 등의 시스템이 정상적으로 사용 가능한 정도(Availability) 즉, 서비스가 다운되지 않고 정상적으로 서비스를 유지하는 것 서비스가 다운되는 이유: 네트워크 장애, 전원 장애, 하드웨어 문제, 소프트웨어 오류, 서비스 점검시간 등 2. 높은 가용성을 가지는 시스템을 설계하는 방법 서비스가 정상적으로 작동되지 않는 시간을 최대한 짧게 만든다. 시스템 확장 Scale Up/Down Scale Out/In 시스템 이중화 시스템 백업 배치 운용 (이중화, 삼중화) 멀티 클라우드 Scale-Up 기존의 서버를 보다 높은 사양으로 업그레이드하는 것을 말한다. 하나의 서버의 능력을 증강하기 때문에 수직 스케일링(vertical scaling)이라고 한다. Scal..
2022.07.04 -
[Python] os.system VS subprocess
os.system os.system 메소드는 UNIX Command와 다를 게 없다. 그리고 프로세스를 따로 생성하지 않고 현재 프로세스가 해당 명령을 실행한 뒤 결과를 받아온다. >>> def ossys(): >>> os.system("sleep 5") >>> print("hello") >>> ossys() hello # 5초가 지난 뒤 hello 출력 subprocess subprocess.Popen 메소드는 커맨드를 실행할 수 있게 도와준다는 느낌이 더 크다. concurrent.futures 모듈이 Threading 모듈을 감싼 고수준 API인 것처럼 subprocess도 마찬가지이다. 또한, 자식 프로세스를 생성하여 실행하는 것이기 때문에 흐름에 영향을 받지 않는다. >>> def subprc(..
2022.06.03