Git Repo : https://github.com/2018007956/Preddit/pull/55
[문제 상황]
- 회원가입 버튼 누르면 아무 동작도 하지 않고, 아래와 같은 에러가 콘솔 출력됨
- 그리고 시간이 지나면 아래와 같이 인스턴스 끊김
- 인스턴스 중지했다가 시작하면 다시 접속 가능
- pm2 다시 켜야됨
- 연결 되다가 조금 시간이 지나면 인스턴스 연결 끊김
[원인 분석]
1. 디스크 용량 확인 -> 차이 없음
2. 메모리 용량 확인
- htop으로 메모리 사용량을 확인해보니 서버에서 여러 ts-node 프로세스가 동시에 실행되고 있어 CPU와 메모리가 과부하 상태에 있다는 것을 발견
[해결 과정]
- 적용 가능한 해결 방법은 다음과 같았음
- ts-node 대신 컴파일된 JavaScript 파일을 사용
- 중복된 프로세스를 제거
- 필요시 인스턴스의 자원을 업그레이드
- 스왑 메모리를 설정해 메모리 부족 문제를 예방 -> 적용!
- 위 방법들 중 스왑 메모리를 설정하는 방법 적용해봄 [참고]
# 블럭사이즈가 1MB, 블럭 갯수가 2000K 인 빈파일을 만들기 (2000000 = 2GB)
sudo dd if=/dev/zero of=/root/swapfile bs=1k count=2000000 conv=excl
# swapfile의 권한 생성
sudo chmod 600 /root/swapfile
# 스완 파일로 설정
sudo mkswap /root/swapfile
# 스왑 파일 실행
sudo swapon /root/swapfile
# 메모리 확인하면 Swap에 약 2G가 생성된 것을 확인 가능
free -h
# 인스턴스를 재시작 할 때 자동으로 swap을 실행시키도록 fstab파일에 값을 추가
sudo vi /etc/fstab
/root/swapfile swap swap auto 0 0
[Result]
배포 성공!
'Trouble Shooting' 카테고리의 다른 글
pm2 사용하여 서버 실행 시 net::ERR_SSL_PROTOCOL_ERROR, net::ERR_CONNECTION_RESET 발생 (0) | 2024.09.02 |
---|---|
CORS 에러 처리 (0) | 2024.06.13 |
[DB] Docker Postgres 실행 시 permission error (0) | 2024.06.08 |