쓰레드풀
-
OOM: unable to create new native thread 추적하기JVM 2024. 9. 23. 02:51
1) 서론개인적으로 개발하던 애플리케이션에서 OOM이 발생했습니다. 현상과 문제 되는 코드는 명확하게 발견했는데요. 원인을 찾아나가는 과정 중에 배운 것을 공유합니다.2) OutOfMemoryError 발생JVM 기반 애플리케이션에서 발생했고, 더 이상 요청을 받을 수 없는 상태가 되었습니다.Caused by: java.lang.OutOfMemoryError: unable to create new native thread at java.lang.Thread.start0(Native Method) at java.lang.Thread.start(Thread.java:717) 이유는 명확했습니다. 스레드풀 생성에 singleton pattern이 적용되지 않았습니다. 한번만 초기화되고, 이후에는 초기화된 인스..
-
ExecutorService 그리고 maxThreadPoolJava & Kotlin 2023. 11. 15. 03:24
1) 서론 이번글에서는 병렬처리 및 별도의 쓰레드풀에서 관리하기 위해서 ExecutorService 사용 중 만난 문제에 대해서 정리하려고 합니다. 2) ExeucutorService가 뭔가요? 자바의 ExecutorServcie 인터페이스는 비동기 작업을 위해서 Future를 생성하고 다룰 수 있게 해줍니다. Future 객체의 특징은 연산에 대한 결과를 blocking 되어 기다리지 않습니다. 요청 후 응답이 왔는지 확인했을 때 결과를 응답하는데요. 이러한 과정이 비동기적으로 일어납니다. 하지만 비동기 요청을 위해서는 기존에 수행되던 쓰레드가 아닌, 별도의 쓰레드에서 수행되어야 합니다. 어떻게 별도의 쓰레드를 비동기 작업을 위해 할당할 수 있을까요? 간편하게는 new Thread()를 이용해서, 직접..