싸밥(=밥프)

유승현·2025년 4월 11일

SSABAB

목록 보기
2/3
post-thumbnail

Version 0.1.0

로그 데이터를 수정하고, DB의 구성과 Front에 자신의 평가 지표가 보이는 등 두 번째 배포를 진행했습니다.

이러한 형태로 진행이 되었습니다.

추가로 분석페이지를 설계하여 제작중에 있습니다.

하지만 이번 배포의 가장 중요한 사항은 바로 서버에 모니터링 시스템을 도입한 것이라고 생각합니다.

서버 모니터링

서버를 운영하면서 사용자가 몰릴때 서버가 어느정도 부하가 가해지는지 궁금했고 이를 위해 NetData를 도입했습니다.

NetData는 특별한 설치 없이 모니터링 시스템을 웹 브라우저를 통해 볼 수 있는 오픈소스 프로그램입니다.

bash <(curl -SsL https://my-netdata.io/kickstart.sh)
sudo ufw allow 19999/tcp

그리고 외부에서도 모니터링이 가능하게 nginx도 수정했습니다.

location /netdata/ {
    proxy_pass http://localhost:19999/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_http_version 1.1;
    proxy_pass_request_headers on;
    proxy_set_header Connection "keep-alive";
}

이를 세팅하고 모니터링을 진행한 결과 큰 문제를 발견했습니다.
아무 접속자가 없을 때 CPU 사용률이 66% 이상인 것을 확인했습니다. 이를 이상하게 생각하여 조사한 결과 uvicorn을 실행할 때 사용한 --reload 옵션이 문제임을 알았습니다.

그래서 이를 해결하면서 추가로 서버를 종료했다가 실행해도 바로 동작하도록 세팅을 진행했습니다.
이를 적용하여 fastapi를 백그라운드에서 실행하고 cpu 사용률을 측정한 결과는 다음과 같았습니다.

앞서 아무런 사용자가 없어도 66~80%까지 오가던 cpu 사용량이 10% 미만으로 확 줄어버렸습니다.(2025.04.11)
다시 확인한 결과 그대로 60% 대를 유지하고 있었습니다.
그 원인을 파악중에 있습니다. (2025.04.12)

사용한 스크립트는 다음과 같습니다.

sudo nano /etc/systemd/system/fastapi.service

해당 경로에 파일을 생성하고, 다음과 같이 스크립트를 작성했습니다.

[Unit]
Description=FastAPI Server (Uvicorn)
After=network.target

[Service]
User=ssabab
WorkingDirectory=/home/ssabab/바탕화면/projects/ssabab/back-end
ExecStart=/home/ssabab/바탕화면/projects/ssabab/back-end/venv/bin/uvicorn app.main:app --host 127.0.0.1 --port 8000 --proxy-headers --forwarded-allow-ips="*"

Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

이후 스크립트를 등록하기 위해 아래의 명령어를 실행하면 모든 적용이 끝납니다.

sudo systemctl daemon-reload
sudo systemctl enable fastapi
sudo systemctl start fastapi

덕분에 저희는 지속적인 모니터링이 가능했고, 이를 통해 수집되는 log 또한 추후 활용할 예정입니다.

profile
커피를 넣으면 코드가 나옵니다.

0개의 댓글