[우아한테크코스] 4월 30일 TIL
오늘 한 일
[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 [이름이나 아이디]