레이블이 cpu인 게시물을 표시합니다. 모든 게시물 표시
레이블이 cpu인 게시물을 표시합니다. 모든 게시물 표시

golang chi 사용시 높은 CPU 사용율

# golang chi 웹프레임워크 기반 웹서버 성능 테스트를 했다.
# 참고로 jplot 까지 보려면 iterm2(tmux 사용하지 않고)에서 실행해야 한다.
echo 'GET https://localhost/version' | \
vegeta attack -rate=2000/1s -workers=100 -duration 60s --insecure | vegeta encode | \
jaggr @count=rps \
      hist\[100,200,300,400,500\]:code \
      p25,p50,p95:latency \
      sum:bytes_in \
      sum:bytes_out | \
jplot rps+code.hist.100+code.hist.200+code.hist.300+code.hist.400+code.hist.500 \
      latency.p95+latency.p50+latency.p25 \
      bytes_in.sum+bytes_out.sum

# 아주 간단한 정보 요청에 대해 너무 많은 CPU 가 사용되고 있었다.

# 특이한 점은 content-type: application/json 헤더를 설정한 api에서 발생한다.

# 스트레스 테스트 돌리는 중에 30초동안 프로파일링 덤프 받고
curl -k 'https://localhost/debug/pprof/profile?seconds=30' -o z.out 
# 로컬 브라우저로 띄워 보기
go tool pprof -http=:9999 z.out
# view -> top 을 보면 compress 부분이 보인다.

# 코드에 보니 다음과 같이 chi middleware compress 를 사용한다.
import "github.com/go-chi/chi/middleware"
... 생략 ...
r := chi.NewRouter()
r.Use(middleware.DefaultCompress)

# middleware.DefaultCompress 를 활성화하면 json 과 같은 몇몇 디폴트 content-type 에 대해 압축을 시도하게 되고 이때 많은 CPU 를 사용한다.
w.Header().Set("Content-Type", application/json; charset=UTF-8) 

# middleware.DefaultCompress 제거후 cpu 사용률이 1/4 이상 줄었다.

CPU 온도 문제

PC 를 1시간정도 사용하면 cpu 쿨러 팬소리가 커지는 문제가 발생했다.
cpuz bench 로 cpu stress 를 10초 정도 돌려봤다.


coretemp 로 온도를 보니 아래와 같이 금방 뜨거워 졌고 팬소리도 심하게 난다.

쿨러 분리해 보니 먼지는 써멀그리스(thermal grease) 가 거의 없었다.


써멀그리스는 인터넷으로 3천원으로 싼거 구입(금색이다~ㅋ)


점이나 x 모양으로 조금 발라야 하는데 무심코 쭉 눌러 버렸다.
그래도 크게 문제는 없는것 같다.


PC를 1시간 정도 하다가 cpuz 로 stress test 수행
100% 부하 상태인데 70도 정도 유지한다.
써멀 그리스 새로 바르기전과 20도 정도 차이가 났다.


결론: 써멀그리스는 효과가 확실히 있음.