본문으로 건너뛰기
버전: 4.6.1

모니터링 베스트 프랙티스

이 가이드는 실시간으로 메트릭을 모니터링하고 실용적인 결정을 내리는 방법을 설명합니다. 일반적인 문제에 대응하고 진입 허용 수를 조정하는 방법을 다룹니다.

빠른 참조

주시해야 할 주요 메트릭:

  • 대기자 수 + 대기 시간: 진입 허용 수 적절성 표시
  • 진입량 vs 완료량: 통합 상태 표시
  • 처리 시간: 서버 부하 상태 표시

건강한 지표:

  • 진입량 ≈ 완료량 (10-20% 이내)
  • 처리 시간: 안정적이거나 감소
  • 대기자 수: 낮고 짧은 대기 시간
  • 처리 완료율: >80%

경고 신호:

  • 처리 시간이 지속적으로 증가 → 서버 스트레스 또는 성능 저하
  • 처리 완료율 <70% → 명시적 종료 누락 또는 통합 문제
  • 대기자 수가 증가하고 대기 시간이 증가 → 수요가 진입 허용 수를 초과

중대한 문제 (즉시 조치 필요):

  • 처리 시간이 급격히 급증 → 즉시 진입 허용 수 감소
  • 처리 완료율 <50% → 중대한 통합 실패; 타임아웃 감소 및 조사
  • 대기자 수가 빠르게 증가하고 높은 대기 시간 → 진입 허용 수 고갈; 서버 상태 평가

일반적인 시나리오 및 대응

시나리오 1: 높은 대기열, 높은 대기 시간, 서버 리소스 여유 있음

증상:

  • 대기자 수: 높음
  • 평균 대기 시간: 높음
  • 서버 리소스: 미활용

의미: 진입 허용 수가 너무 낮게 설정되었습니다. 서버가 더 많은 트래픽을 처리할 수 있지만 NetFUNNEL이 진입을 너무 많이 제한하고 있습니다.

즉시 조치:

  1. 서버 리소스 사용률 확인 (CPU, 메모리, I/O)
  2. 리소스가 미활용 상태이면 진입 허용 수를 10-20% 증가
  3. 5-10분 동안 대기자 수와 대기 시간 모니터링 - 감소해야 함
  4. 개선되면 추가 점진적 증가 고려

예시:

현재 상황:
- 진입 허용 수: 100 TPS
- 대기자 수: 200명
- 대기 시간: 20초
- 서버 CPU: 50% (리소스 여유 있음)

조치: 진입 허용 수를 110-120 TPS로 증가
모니터링: 대기자 수/대기 시간이 감소해야 함

시나리오 2: 높은 대기자 수와 낮은 처리 완료율

증상:

  • 진입량: 100 TPS
  • 완료량: 50 TPS (또는 그 이하)
  • 처리 완료율: <50%
  • 대기자 수: 증가 중
  • 대기 시간: 증가 중

의미: 명시적 서비스 종료가 제대로 발생하지 않고 있습니다. 사용자가 진입하지만 명시적으로 키를 반환하지 않아 진입 허용 수가 불필요하게 보유되고 있습니다.

즉시 조치:

  1. 타임아웃 값 즉시 감소:
    • 처리 시간이 1-2초인 경우, 타임아웃 최소값을 1초, 최대값을 2초로 설정
    • 이것은 새 사용자를 위해 진입 허용 수를 빠르게 해제합니다
    • 타임아웃 설정은 세그먼트 고급 - 타이밍 (기본 제어) 또는 고급 - 타이밍 (구간 제어)에서 조정할 수 있습니다
  2. 대기자 수 모니터링 - 감소하기 시작해야 함
  3. 타임아웃 조정 후에도 대기자 수가 길면 진입 허용 수 증가 고려 (서버 리소스가 허용하는 경우)

장기 조치:

  1. 근본 원인 조사:
    • 코드에 nfStop() 호출이 누락되었는지 확인
    • 통합 구현 검증
    • 통합 실패에 대한 오류 로그 검토
  2. 통합 문제 수정:
    • 모든 적절한 위치에 nfStop() 호출 추가
    • 오류 처리에 키 반환이 포함되도록 보장
  3. 타임아웃 설정 최적화:
    • 실제 처리 시간 + 버퍼를 기반으로 타임아웃 설정
    • 예: 처리 시간이 평균 5초인 경우, 타임아웃을 6-7초로 설정
명시적 종료 누락

처리 완료율이 지속적으로 70% 미만이라면 중대한 통합 문제입니다. 타임아웃이 단편적으로 문제를 완화할 수는 있지만 근본 원인을 수정해야 합니다.

시나리오 3: 처리 시간 증가

증상:

  • 처리 시간: 점진적으로 증가
  • 대기자 수: 증가할 수도 있고 증가하지 않을 수도 있음

의미: 서버 부하가 증가하거나 성능이 저하되고 있습니다. 서버 스트레스의 간접 지표입니다.

즉시 조치:

  1. 서버 리소스 확인 (APM 또는 서버 모니터링을 통한 CPU, 메모리)
  2. 서버가 과부하 상태인 경우: 즉시 진입 허용 수를 40-50% 감소
  3. 서버 리소스가 여유 있는 경우: 다른 문제일 수 있음 (네트워크, 데이터베이스 등) - 조사
  4. 처리 시간 트렌드 모니터링 - 계속 증가하면 진입 허용 수를 더 감소

예시:

현재 상황:
- 진입 허용 수: 100 TPS
- 처리 시간: 2초에서 5초로 증가
- 서버 CPU: 90% (과부하)

조치: 즉시 진입 허용 수를 50-60 TPS로 감소
모니터링: 처리 시간이 안정화되어야 함

장기 조치:

  1. 성능 최적화:
    • 느린 구성 요소를 식별하기 위해 애플리케이션 프로파일링
    • 데이터베이스 쿼리 최적화
    • 필요시 서버 리소스 확장
  2. 진입 허용 수 계획:
    • 처리 시간 임계값을 기반으로 최적의 진입 허용 수 결정
    • 처리 시간이 임계값을 초과하는 경우 알림 설정

타임아웃 최적화

타임아웃 설정은 명시적 종료가 발생하지 않을 때 NetFUNNEL이 키를 자동으로 반환하기 전에 대기하는 시간을 결정합니다.

기본 범위: 6-20초 (최소값-최대값)

작동 방식:

  • NetFUNNEL은 처음에 최대 값을 사용합니다
  • nfStop()이 호출되지 않으면 타임아웃 후 키가 자동으로 반환됩니다

최적 타임아웃 설정:

  1. 시간에 따른 처리 시간 모니터링하여 일반적인 범위 식별
  2. 최소값을 일반적인 최소 처리 시간으로 설정
  3. 최대값을 일반적인 최대 처리 시간 + 20-30% 버퍼로 설정
  4. 예: 처리 시간이 8-12초인 경우, 타임아웃을 8-15초로 설정
  5. 처리 완료율이 낮은 경우 (<70%), 진입 허용 수를 더 빠르게 해제하기 위해 타임아웃 감소
타임아웃 vs 처리 시간

처리 시간이 정기적으로 타임아웃을 초과하면 사용자가 서비스 완료 전에 강제로 종료됩니다. 항상 안전 버퍼를 포함하여 타임아웃을 일반적인 처리 시간보다 높게 설정하세요.

중요 참고사항

진입 허용 수 조정:

  • 증가: 10-20% 점진적으로 증가, 5-10분 동안 모니터링
  • 감소: 서버 보호 시 40-50% 공격적으로 감소

처리 시간:

  • NetFUNNEL은 서버 CPU/메모리를 직접 모니터링하지 않습니다
  • 처리 시간은 서버 부하의 간접 지표입니다
  • 항상 서버 모니터링 도구(APM 등)와 교차 참조하세요