7. [최적화4] 불필요한 서비스 비활성화 및 최적화 결과

2025. 1. 25. 01:08Test/Artillery

728x90

불필요 비활성화 이유

  • 불필요한 서비스multipathd, polkitd, snapd는 기본적으로 서버에서 실행되지만, 특정 환경에서는 반드시 필요하지 않은 경우가 많음
  • 이러한 서비스들은 CPU와 메모리 자원을 소모하기 때문에 비활성화하여 서버 성능을 최적화할 수 있
  • 특히, t2.micro와 같은 리소스가 제한적인 환경에서는 작은 자원 절약도 큰 영향을 미칠 수 있

서비스별 역할과 비활성화 이유

  1. multipathd (Device Mapper Multipath Daemon)
    • 역할
      • multipathd스토리지 장치의 중복 경로(Multipath I/O)를 관리하는 데 사용
      • 서버가 SAN(Storage Area Network)과 같은 복잡한 스토리지 아키텍처를 사용하는 경우 필수
    • 비활성화 이유
      • 대부분의 애플리케이션 서버나 웹 서버는 단일 디스크나 단순 스토리지 환경 사용
      • 복잡한 스토리지 경로를 관리하지 않기 때문에 불필요하며, 리소스만 소모
  2. polkitd (PolicyKit Daemon)
    • 역할
      • polkitd권한 인증을 관리하며, 사용자가 루트 권한 없이 특정 시스템 작업을 수행할 수 있도록 지원
      • GUI 기반 데스크톱 환경에서 주로 사용
    • 비활성화 이유
      • 서버 환경(특히 CLI 기반)에서는 권한 인증이 대부분 수동으로 이루어지며, polkitd 불필요
      • 메모리를 절약하기 위해 비활성화
  3. snapd (Snappy Daemon)
    • 역할
      • snapdSnap 패키지를 관리하고 자동 업데이트를 수행
      • Snap은 Ubuntu 기반 시스템에서 소프트웨어 배포를 간소화하기 위해 사용
    • 비활성화 이유
      • Snap 패키지를 사용하지 않는 경우, snapd불필요
      • 자동 업데이트를 비활성화하면 CPU 사용량과 네트워크 대역폭 감소 가능

적용 방법

# snapd 서비스 비활성화
sudo systemctl stop snapd
sudo systemctl disable snapd

# polkitd 서비스 비활성화
sudo systemctl stop polkit
sudo systemctl disable polkit

# multipathd 서비스 비활성화
sudo systemctl stop multipathd
sudo systemctl disable multipathd
  • 비활성화 명령어는 서비스를 중지(stop)한 후, 부팅 시 자동으로 시작되지 않도록 설정(disable)

에러 발생

스크린샷 2025-01-25 00.08.48.png

  • 서비스(snapd, multipathd)를 비활성화하려는 시도 중 관련된 소켓 활성화 상태 때문에 발생
  • 시스템에서 소켓 활성화는 특정 서비스가 중단되어도 필요할 때 소켓을 통해 자동 시작할 수 있도록 설계된 메커니즘
  • 관련 소켓도 비활성화 필요

상세 원인

  1. snapd와 관련된 소켓 활성화
    • snapd.service는 비활성화되었지만, snapd.socket이 여전히 활성화 상태
    • 소켓은 Snap 관련 요청이 발생할 때 snapd 서비스 재시작 가능
  2. multipathd와 관련된 소켓 활성화
    • multipathd.service는 중지되었지만, *multipathd.socket이 남아 있어 동일한 동작 수행

문제 해결 방법

  • 관련된 소켓도 함께 비활성화해야 서비스를 완전히 비활성화 가능
  • 아래 명령어를 사용해 소켓을 비활성화하고 중지
# snapd 관련 소켓 비활성화
sudo systemctl stop snapd.socket
sudo systemctl disable snapd.socket

# multipathd 관련 소켓 비활성화
sudo systemctl stop multipathd.socket
sudo systemctl disable multipathd.socket

서비스와 소켓 상태 확인

  • 위 명령어를 실행한 뒤 서비스와 소켓이 제대로 비활성화되었는지 확인
  1. 서비스 상태 확인

     sudo systemctl status snapd
     sudo systemctl status multipathd

    결과가 inactive 또는 disabled로 표시돼야함

  2. 소켓 상태 확인

     sudo systemctl status snapd.socket
     sudo systemctl status multipathd.socket

    결과가 inactive 또는 disabled로 표시돼야 함


테스트 결과 비교

항목 이전 최적화 후 최신 최적화 후 변화
총 실행 시간 3분 16초 3분 19초 약간 증가 (+3초).
WebSocket 에러 55 33 감소 (-22).
Socket.io Emits 806 813 약간 증가 (+7).
Emit Rate 4/sec 4/sec 변화 없음.
최소 응답 시간 0.1ms 0.1ms 변화 없음.
최대 응답 시간 15.3ms 1.9ms 크게 개선 (-13.4ms).
평균 응답 시간 0.4ms 0.3ms 개선 (-0.1ms).
중앙값 응답 시간 0.3ms 0.3ms 변화 없음.
95th Percentile 응답 시간 0.5ms 0.5ms 변화 없음.
99th Percentile 응답 시간 1.1ms 1ms 개선 (-0.1ms).
완료된 가상 사용자 수 806 813 약간 증가 (+7).
생성된 가상 사용자 수 930 930 변화 없음.
실패한 가상 사용자 수 124 117 감소 (-7).
세션 길이 (최소) 2309.7ms 2349.9ms 약간 증가 (+40.2ms).
세션 길이 (최대) 50664.7ms 52424.1ms 약간 증가 (+1759.4ms).
세션 길이 (평균) 25372.5ms 26965.6ms 약간 증가 (+1593.1ms).
세션 길이 (중앙값) 30040.3ms 31266.3ms 증가 (+1226ms).
세션 길이 (95th Percentile) 49528.8ms 51550.2ms 약간 증가 (+2021.4ms).
세션 길이 (99th Percentile) 50529.4ms 52591.6ms 약간 증가 (+2062.2ms).

비활성화 결과와 효과

  1. CPU 및 메모리 자원 확보
    • snapdmultipathd 관련 프로세스 및 소켓이 중단되어 리소스 점유율 감소
  2. 불필요한 자동 시작 방지
    • 소켓이 비활성화되면 관련 서비스가 필요 시 자동 시작하지 않아 완전한 비활성화 보장

분석

긍정적인 변화

  1. WebSocket 에러 감소
    • 에러가 55건에서 33건으로 감소하며 안정성이 개선
  2. 최대 응답 시간 단축
    • 최적화 이후, 최대 응답 시간이 15.3ms에서 1.9ms로 크게 단축
  3. 평균 및 99th Percentile 응답 시간 개선
    • 대부분의 요청 처리 시간이 더 짧아짐

추가 개선이 필요한 점

  1. 세션 길이 증가
    • 평균 세션 길이가 증가했지만, 이는 처리량이 늘어난 결과일 가능성
  2. WebSocket 에러 33건 분석 필요
    • 여전히 존재하는 에러의 원인을 파악하고 추가 최적화 필요
    • 서버 모니터링과 반복적인 테스트를 통해 지속적인 개선 도모

기대 효과

  1. 리소스 분배 최적화
    • CPU메모리 점유율을 줄여, 애플리케이션에 더 많은 자원을 할당 가능
    • 특히 리소스가 제한적인 t2.micro 환경에서 효율성 향상
    • WebSocket 응답 시간이 단축되었으며, 오류 발생률이 줄어드는 등 성능 개선 효과를 확인
  2. 성능 개선
    • 불필요한 서비스로 인한 컨텍스트 스위칭(Context Switching)이 감소하여, 애플리케이션 응답 속도개선
    • 99th Percentile 응답 시간이 1.7초로 단축되었으며, 이는 사용자 경험의 질적 향상을 의미
    • CPU와 메모리의 여유 자원이 증가해, 향후 서버 확장성 및 안정성 확보
  3. 보안 강화
    • 사용하지 않는 서비스가 실행되지 않음으로써, Attack Surface 감소

결론

  • multipathd, polkitd, snapd는 일반적인 웹 서버 및 애플리케이션 서버 운영 환경에서 필요하지 않은 경우가 많음
  • 이들을 비활성화하면 CPU와 메모리 사용량을 줄이고, 서버 성능을 개선할 수 있음
  • 단, 스토리지 관리가 필요한 환경이나 Snap 패키지를 사용하는 경우, 필요성을 검토한 후 비활성화 여부를 결정해야 함
  • 결과를 봤을 때 최적화에 필수적일 만큼 큰 결과를 가져오지 않아, 추후 최적화 시도시에는 낮은 우선순위로 할 예정