개발일기 6편 [스레드를 이용한 성능 최적화]

오늘은 기존 이메일 발송시간이 너무 오래 걸리는 문제를 해결하는 과정을 기록하도록 하겠다.

 

기존 코드에서는 30명의 사용자에게 메일을 보내는데 1분 30초정도가 걸렸다. (49:24 ~ 50:55)

etc-image-0

 

메일 발송이 Blocking I/O 방식으로 실행되므로 동시에 작업시키기 위해 쓰레드의 개수를 10개로 늘렸다. 

그랬더니 약 10초만에 30개의 메일 발송에 성공하였다. 대략 스레드의 개수배만큼 빨라진 것이다!  (43:27 ~ 43:37)

각각의 스레드는 독립적으로 작동하므로 순서가 꼬일 가능성이 매우 높다.

하지만 보내는 순서는 딱히 상관이 없으니 스레드를 사용하는 것이 문제가 없다고 판단하여 멀티스레딩 방식을 사용하여 메일 발송을 하는 것으로 결정하였다.

etc-image-1

 

하지만 배포 서버의 CPU 개수나 메모리에 따라 스레드 수를 조정해야 할 필요가 있다. 일단 10개로 세팅해놓고 메일 발송시간에 CPU 사용량을 보고 미세 조정해보기로 생각하였다. (현재 서버의 CPU는 4개, 메모리는 8기가다)

 

오늘의 개발일기 끝!