티스토리 뷰

[배경지식 및 용어]

pem 키

  • "Privacy Enhanced Mail"
  • Apache 및 기타 웹 서버 플랫폼에서 사용되는 디지털 인증서 및 키에 대한 일반적인 컨테이너 형식

Bastion

  • bastion host는 네트워크 특별히 설계된 공격을 견딜 수 있도록 구성에서 특수 목적 컴퓨터
  • 컴퓨터는 일반적으로 단일 응용 프로그램 (예 : 프록시 서버) 을 호스팅하며 다른 모든 서비스는 컴퓨터에 대한 위협을 줄이기 위해 제거되거나 제한됨

ARP

  • 주소 결정 프로토콜(Address Resolution Protocol, ARP)은 네트워크 상에서 IP 주소를 물리적 네트워크 주소로 대응(bind)시키기 위해 사용되는 프로토콜

OOM-killer

  • 하나의 메모리 사용이 높은 프로세스를 죽이는 프로세서

노드

  • IP를 가지고 통신할 수 있는 대상(하나의 인스턴스 또는 네트워크 장비)

TCP(Transmission Control Protocol)

  • 전송을 제어하는 프로토콜
  • 3 handshaking으로 연결, 4 handshaking으로 연결 해제

ICMP(Internet Control Message Protocol)

  • ping 체크를 할 때 사용
  • TCP/IP에서 IP 패킷을 처리할 때 발생하는 문제를 알려주는 프로토콜

(top 명령어로 보는) 가상 메모리

  • VIRT: 프로세스가 확보한 가상 메모리 영역의 크기
  • RES: 실제 물리 메모리 영역의 크기
  • active/s : TCP 연결이 CLOSED 상태에서 SYN-SENT 상태로 직접 전환 된 초당 횟수 즉, 서버에서 다른 외부 장비로 TCP 연결한 횟수. (active 는 요청을 보내기 시작한 것과 관련)
  • passive/s : TCP 연결이 초당 LISTEN 상태에서 SYN-RCVD 상태로 직접 전환 한 횟수 즉, 서버에 새롭게 접근한 클라이언트 수. (passive 는 요청을 받기 시작한 것과 관련)

사용률 5가지

  • 주로 CPU utilization, Available memory, RX / TX 패킷량, Disk 사용률, IOPS 등을 확인

Web Server: 대표적인 예시 - NginX

  • Nginx는 웹 서버 소프트웨어로, 가벼움과 높은 성능을 목표로 함
  • 웹 서버, 리버스 프록시 및 메일 프록시 기능
  • Nginx는 요청에 응답하기 위해 비동기 이벤트 기반 구조
  • 아파치 HTTP 서버의 스레드/프로세스 기반 구조를 가지는 것과는 대조적 => 서버에 많은 부하가 생길 경우의 성능을 예측하기 쉽게 해줌

WAS: 대표적인 예시 - 톰캣 서버

  • 톰캣은 WAS(Web Application Server)
  • 웹 서버는 정적인 내용을 처리한다면, 웹 어플리케이션 서버는 동적인 내용을 처리

프로세스를 죽일 때

  • kill 의 다양한 옵션들이 있는데 -2 사용을 권장
    • the program to gracefully exit and run the shutdown hooks.
    • 포그라운드에서 ctrl + c (작업취소)를 누르는 것과 같은 효과
  • -9
    • did not run the shutdown hook
    • signal handler를 구현한 프로그램이라도 cleanup 작업을 하지 못하고 종료 될 수 있음

hypervisor

  • 가상머신(VM)을 생성하고 구동하는 소프트웨어. 가상머신모니터라고도 함

기타 상식

  • 캐시가 잘 안되서 swap 이 높아지는 경우가 많음
  • 소켓도 하나의 파일
  • 서버의 상태(입장): 터미널

도커

관련 명령어

  • -i: 표준 입력을 받도록 설정하는 것(파이프라이닝이나 키보드 입력)
  • -t: 가상 터미널 설정 (-t 하나만은 의미가 없다. 터미널은 있지만 입력은 못하는 상황)
  • ⇒ -it: 가상 터미널로 표준 입력 가능

도커 상식

  • 이미지는 파일들의 집합
  • 컨테이너는 이 파일들의 집합 위에서 실행된 특별한 프로세스

[수업]

Stat 형태

  • 요약: sar, vmstat → 대략적으로만 활용(평균의 오차 가능성)
  • 이벤트 기록: 패킷캡처, 시스템콜 기록 등 순차적 이벤트 기록(부하가 커서 잘 안 쓴다)
  • 스냅샷: ps, top등 순간 상태 기록

네트워크 상태

  • Time-wait: 장애상태는 아니다. 패킷 유실 상황.
  • Close-wait: 장애로 발전할 수 있는 상태(부하가 높은 상태), 서버가 정상적 연결 해제하지 못한 상황. close() 함수 호출까지 대기상태인 상황.
    => 해결) 할당 프로세스 종료, 또는 네트워크 재시작이 해결방안이다.
  • 연결을 재사용하기 위한 장치 → connection pool: 클라이언트 측, keep-alive: 서버측

USE 방법론

  1. 접속로그로 느린 응답 확인
  2. vmstat 등으로 사용률 파악
  3. ps로 스냅샷찍어 용의자 파악

1.Error

  • 에러가 발생했는지 → 로그로 확인(2가지 - 서버에서 남기는 시스템로그, 애플리케이션 로그)
  • 시스템로그
    • 주로 /var/log/syslog를 확인
    • 그외 cron(cron이 실행된 것들, crontab 작업들의 정상수행여부), boot.log(각 데몬의 시작, 종료, 실패), dmesg(부팅시 시스템 로그) 등
    • 보통 logrotate 설정으로 자동 압축, 삭제 됨
tail -f /var/log/syslog

2. Utilization

  • 얼만큼 자원을 사용하는지를 파악
    • top:  서버 리소스 사용률 파악 가능, swap 이 발생한다는 것은 물리 메로리가 부족하다는 증거(RES가 큰 프로세스 확인 필요)
    • vmstat:  OS 커널에서 정보 취득 가능
    • iostat: OS 커널에서 취득한 디스크 사용률 파악 가능
    • free: 메모리 사용량 확인 가능
  • 네트워크 사용량을 파악
    • CPU utilization
    • Available memory
    • RX(Receive)/TX(Transmit) 패킷량 → 송수신된 패킷량
    • Disk 사용률
    • IOPS(Input/Output Operations Per Second): HDD, SSD, SAN 같은 컴퓨터 저장장치를 벤치마크 하는데 사용되는 성능단위

3. Saturation

  • 얼마나 많은 부하가 몰리는지를 파악
  • vmstat
    • r: CPU 동작 프로세스 수
  • free
    • buffers: Block I/O의 버퍼캐시 사용량의미
    • cache: 파일시스템에서 사용되는 page cache량
  • iostat
    • await: I/O 처리 평균시간. 보통 하드웨어 상 문제가 있거나 디스크가 모두 사용중일 때 이슈 발생

스레드 덤프

  • 프로세스에 속한 모든 스레드들의 상태를 기록한 것
    ⇒ 활용) 1. 사용자수가 안 많은데, CPU 사용량이 떨어지지 않을 때 2. 특정 애플리케이션을 수행했는데 응답이 없을 때

스레드상에서 나타나는 문제 파악

  • 애플리케이션의 Thread 상에서 나타나는 대부분의 문제는 Lock으로 인해 발생
    1. Blocked 상태인 스레드가 있는지
    2. 한 task가 너무 오래 thread를 점유하진 않은지
    3. CPU 사용률이 너무 높지 않은지

[과제]

과제 질문에 대한 내 생각이므로 상당히 사실과 다를 수 있다!

1.CPU 사용률 100%는 장애를 의미하지 않아요. 그럼에도 파악하는 이유는 무엇일까요?

  • cpu 사용률이 100 퍼센트가 되면 더이상의 여유공간이 없다는 것을 의미합니다. 이것은 조금이라도 사용량이 늘어나게 되면 cpu 사용에서 문제가 발생할 수 있음을 의미하기 때문에 장애로 이어질 가능성이 매우 커지기 때문에 파악합니다.

2.메모리가 고갈되면 어떤 상황이 발생할까요?

  • 메모리가 고갈되면 디스크를 사용하게 됩니다. 메모리의 확장 개념으로 디스크의 스왑영역을 활용합니다. 이때, 스왑영역에 있는 정보를 읽고 쓰는데는 IO 작업이 필요하고 메모리 외부의 자원을 이용하는 것이기 때문에 시간이 상대적으로 오래 걸립니다.

3.디스크가 꽉 차면 어떤 현상이 발생할까요? 그리고 어떤 파일들부터 지우면 좋을까요?

  • 디스크가 꽉차면 더이상 파일이 저장되지 않아요. 캐시파일이 있다면 캐시파일 먼저 지우면 좋을 것 같아요. 불필요한 기록 파일 등을 지우면 현재 필요한 공간을 확보할 수 있어요.

4. Reverse Proxy를 별도로 구성함으로써 얻는 이점을 설명해주세요.

  • 인터넷과 서버 사이에 존재하는 서버이다.
  • 클라이언트가 요청한 내용을 캐싱
  • 클라이언트 입장에서 서버는 실서버가 아닌 리버스프록시 서버 (실제 서버의 IP가 노출되지 않음)
  • 로드 밸런싱을 통해 부하분산이 가능(서버간의 부하를 나누는 역할을 할 수 있다)
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함