[우아한테크코스] 4월 30일 TIL

1 minute read

오늘 한 일

[network] 통신의 흐름

http 요청 오면
핑이 가는지 확인
80 포트 열려있는지 확인

[network] 서버 진단하기

motherboard
disk 쓰고 ram에 적재해서 cpu 실행

[network] 애플리케이션 진단하기

[ubuntu] npm 설치

  • nvm 설치
    sudo apt-get install build-essential libssl-dev
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
    source ~/.bashrc
  • node.js 설치
    nvm install [버전]
    npm install
    npm start
  • (백) 빌드: ./gradlew bootRun, ./gradlew clean build -x test하면 테스트 없이 빌드

이렇게 빌드를 두개 다 하면 curl localhost:8080/lines와 같은 명령어로 실행시켜볼 수 있다.

[network] 애플리케이션 상태 확인

  • Arthas 설치 및 실행
    curl -O https://arthas.aliyun.com/arthas-boot.jar
    java -jar arthas-boot.jar
    원하는 java jar 뜨면 엔터

dashboard: 쓰레드 상태, 메모리와 같은 상황 확인
thread: 쓰레드 상태만 확인
thread --all: 모든 쓰레드 확인
thread -b: 블락된 쓰레드 확인
tt -t [패키지~클래스] [함수]: 함수 도는 것 찍는거 trace [패키지~클래스] [함수]: 함수 어디서 도는지 찍는거

이러면 /home/ubuntu/logs/arthas에 로그 파일 생겨있다.
rsync -avzh [원격경로] [받을경로]: service -> bastion으로 로그 파일 가져오기
scp -i [pem키] ubuntu@[주소]:[주소에 파일경로] .: 서버에서 파일 다운로드(pem키 있는 위치에서)

[network] 로깅

로깅 시 주의점

  • avoid side effects: 로깅으로 인해 애플리케이션이 문제가 생기면 안된다.
  • be concise and descriptive: 로깅에는 데이터와 설명 포함
  • log method arguments and return values: 메소드 입출력 로그를 남기면 디버깅이 필요없다. 앞뒤 코드가 길어지는 것은 aop(관점 지향 프로그래밍)으로 해결
  • delete personal information: 개인정보는 기록하지 않는다.

    로깅 레벨

  • error: 즉시 수정 필요
  • warn: 예상 가능한 문제, 서비스 운영 가능
  • info: 운영에 참고할 사항
  • debug/trace: 개발 단계에서만 사용

  • docker container 중지: docker stop [이름이나 아이디]