← 전체 글로 돌아가기

서버 운영

서버에서만 JSON 응답이 깨질 때 체크리스트

로컬 개발 환경에서는 정상이지만 운영 서버에서만 JSON이 깨진다면, 디스크 용량, 권한, 프로세스 상태를 먼저 확인해야 한다.

환경 차이가 원인이다

로컬에서는 완벽하게 동작하는데 운영 서버에서만 JSON 응답이 깨진다는 것은, 단순히 코드 문제가 아니라 서버 환경의 차이에서 비롯된 것일 가능성이 높다. 문제를 너무 크게 잡으면 모든 파일 처리 로직을 다시 짜야 한다고 생각하게 되지만, 체계적으로 확인하면 실제 원인은 훨씬 단순할 수 있다.

운영 환경 문제의 핵심은 화면만 보고 판단하지 않는 것이다. 디스크 용량, 파일 권한, 프로세스 상태, 메모리 사용량을 단계별로 확인해야 원인을 찾을 수 있다.

먼저 서버 상태를 파악한다

JSON 응답이 깨지는 이유를 찾으려면, 먼저 서버가 정상 상태인지 확인해야 한다:

  • 먼저 볼 값: 디스크 용량, 포트 상태, 프로세스
  • 함께 비교할 값: 정상일 때의 서버 상태
  • 남겨둘 기록: 명령 출력, 에러 로그, 설정 파일

디스크 용량이 가득 차면 JSON도 깨진다

서버 디스크 용량이 가득 차면, 파일 쓰기가 실패하고 프로세스가 비정상 종료될 수 있다. JSON을 생성하려고 할 때도 용량 부족으로 인해 불완전한 응답을 반환할 수 있다:

sudo ss -lntp
df -h
sudo journalctl -n 80

이 명령들로 열린 포트, 디스크 상태, 시스템 로그를 확인할 수 있다.

파일 권한도 체크한다

Nginx나 애플리케이션 프로세스가 파일에 접근할 수 없으면 JSON을 생성하지 못한다. 파일 권한이 올바른지, 프로세스가 실행되는 사용자와 파일 소유자가 일치하는지 확인해야 한다.

로그에서 실마리를 찾는다

서버 로그를 보면 어디서 문제가 생기는지 알 수 있다. journalctl이나 애플리케이션 로그에서 "Permission denied", "No space left", "File descriptor" 같은 메시지가 있는지 확인한다.

단계별로 검증한다

같은 문제가 반복되는 것을 방지하려면 확인 순서를 고정한다:

  1. 원래 증상이 같은 조건에서 다시 나타나는지 확인한다
  2. 서버 상태, 로그, 권한 설정에서 바뀐 부분을 명확히 설명할 수 있는지 확인한다
  3. 실제 요청을 보내서 응답이 정상인지 최종 확인한다

다음을 위해 기록한다

JSON 응답 문제를 해결한 후, 어떤 서버 상태가 원인이었는지 정리해두면 비슷한 문제가 생겼을 때 대응 시간을 크게 줄일 수 있다.