7. [최적화4] 불필요한 서비스 비활성화 및 최적화 결과
2025. 1. 25. 01:08ㆍTest/Artillery
728x90
불필요 비활성화 이유
- 불필요한 서비스인
multipathd
,polkitd
,snapd
는 기본적으로 서버에서 실행되지만, 특정 환경에서는 반드시 필요하지 않은 경우가 많음 - 이러한 서비스들은 CPU와 메모리 자원을 소모하기 때문에 비활성화하여 서버 성능을 최적화할 수 있
- 특히, t2.micro와 같은 리소스가 제한적인 환경에서는 작은 자원 절약도 큰 영향을 미칠 수 있
서비스별 역할과 비활성화 이유
multipathd
(Device Mapper Multipath Daemon)- 역할
multipathd
는 스토리지 장치의 중복 경로(Multipath I/O)를 관리하는 데 사용- 서버가 SAN(Storage Area Network)과 같은 복잡한 스토리지 아키텍처를 사용하는 경우 필수
- 비활성화 이유
- 대부분의 애플리케이션 서버나 웹 서버는 단일 디스크나 단순 스토리지 환경 사용
- 복잡한 스토리지 경로를 관리하지 않기 때문에 불필요하며, 리소스만 소모
- 역할
polkitd
(PolicyKit Daemon)- 역할
polkitd
는 권한 인증을 관리하며, 사용자가 루트 권한 없이 특정 시스템 작업을 수행할 수 있도록 지원- GUI 기반 데스크톱 환경에서 주로 사용
- 비활성화 이유
- 서버 환경(특히 CLI 기반)에서는 권한 인증이 대부분 수동으로 이루어지며,
polkitd
불필요 - 메모리를 절약하기 위해 비활성화
- 서버 환경(특히 CLI 기반)에서는 권한 인증이 대부분 수동으로 이루어지며,
- 역할
snapd
(Snappy Daemon)- 역할
snapd
는 Snap 패키지를 관리하고 자동 업데이트를 수행- Snap은 Ubuntu 기반 시스템에서 소프트웨어 배포를 간소화하기 위해 사용
- 비활성화 이유
- Snap 패키지를 사용하지 않는 경우,
snapd
불필요 - 자동 업데이트를 비활성화하면 CPU 사용량과 네트워크 대역폭 감소 가능
- Snap 패키지를 사용하지 않는 경우,
- 역할
적용 방법
# 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
)
에러 발생
- 서비스(
snapd
,multipathd
)를 비활성화하려는 시도 중 관련된 소켓 활성화 상태 때문에 발생 - 시스템에서 소켓 활성화는 특정 서비스가 중단되어도 필요할 때 소켓을 통해 자동 시작할 수 있도록 설계된 메커니즘
- 관련 소켓도 비활성화 필요
상세 원인
snapd
와 관련된 소켓 활성화snapd.service
는 비활성화되었지만,snapd.socket
이 여전히 활성화 상태- 소켓은 Snap 관련 요청이 발생할 때
snapd
서비스 재시작 가능
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
서비스와 소켓 상태 확인
- 위 명령어를 실행한 뒤 서비스와 소켓이 제대로 비활성화되었는지 확인
서비스 상태 확인
sudo systemctl status snapd sudo systemctl status multipathd
결과가
inactive
또는disabled
로 표시돼야함소켓 상태 확인
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). |
비활성화 결과와 효과
- CPU 및 메모리 자원 확보
snapd
와multipathd
관련 프로세스 및 소켓이 중단되어 리소스 점유율 감소
- 불필요한 자동 시작 방지
- 소켓이 비활성화되면 관련 서비스가 필요 시 자동 시작하지 않아 완전한 비활성화 보장
분석
긍정적인 변화
- WebSocket 에러 감소
- 에러가 55건에서 33건으로 감소하며 안정성이 개선
- 최대 응답 시간 단축
- 최적화 이후, 최대 응답 시간이 15.3ms에서 1.9ms로 크게 단축
- 평균 및 99th Percentile 응답 시간 개선
- 대부분의 요청 처리 시간이 더 짧아짐
추가 개선이 필요한 점
- 세션 길이 증가
- 평균 세션 길이가 증가했지만, 이는 처리량이 늘어난 결과일 가능성
- WebSocket 에러 33건 분석 필요
- 여전히 존재하는 에러의 원인을 파악하고 추가 최적화 필요
- 서버 모니터링과 반복적인 테스트를 통해 지속적인 개선 도모
기대 효과
- 리소스 분배 최적화
- CPU와 메모리 점유율을 줄여, 애플리케이션에 더 많은 자원을 할당 가능
- 특히 리소스가 제한적인 t2.micro 환경에서 효율성 향상
- WebSocket 응답 시간이 단축되었으며, 오류 발생률이 줄어드는 등 성능 개선 효과를 확인
- 성능 개선
- 불필요한 서비스로 인한 컨텍스트 스위칭(Context Switching)이 감소하여, 애플리케이션 응답 속도개선
- 99th Percentile 응답 시간이 1.7초로 단축되었으며, 이는 사용자 경험의 질적 향상을 의미
- CPU와 메모리의 여유 자원이 증가해, 향후 서버 확장성 및 안정성 확보
- 보안 강화
- 사용하지 않는 서비스가 실행되지 않음으로써, Attack Surface 감소
결론
multipathd
,polkitd
,snapd
는 일반적인 웹 서버 및 애플리케이션 서버 운영 환경에서 필요하지 않은 경우가 많음- 이들을 비활성화하면 CPU와 메모리 사용량을 줄이고, 서버 성능을 개선할 수 있음
- 단, 스토리지 관리가 필요한 환경이나 Snap 패키지를 사용하는 경우, 필요성을 검토한 후 비활성화 여부를 결정해야 함
- 결과를 봤을 때 최적화에 필수적일 만큼 큰 결과를 가져오지 않아, 추후 최적화 시도시에는 낮은 우선순위로 할 예정
'Test > Artillery' 카테고리의 다른 글
6. [최적화3] ulimit와 PAM 설정을 통한 테스트 환경 최적화 (0) | 2025.01.24 |
---|---|
5. [최적화2] Nginx 및 WebSocket 서버 설정 최적화 (0) | 2025.01.24 |
4. [최적화 1] Node.js 프로세스 최적화 (0) | 2025.01.24 |
3. AWS EC2 t2.micro 환경에서 WebSocket 타임아웃 문제 (0) | 2025.01.16 |
2. Artillery를 활용한 Socket.IO 기반 채팅 서비스 부하 테스트: Local vs EC2 환경 성능 비교 및 분석 (0) | 2025.01.14 |