[교내 공지사항 알림 서비스] 개발일기 6편 [스레드를 이용한 성능 최적화]

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

 

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

 

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

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

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

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

 

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

 

오늘의 개발일기 끝!