Thread
-
선착순 이벤트와 같이 동시에 많이 요청이 오는 것에 대한 테스트를 하고 싶은 경우 테스트 코드에서 여러 개의 thread를 실행시켜 진행할 수 있다.실행시키는 건 thread를 이용해서 동시에 많은 요청을 줄 수 있는데 “여러 스레드를 동시에 실행시키고, 모두 끝날 때까지 기다리는” 상황에 대한 처리는 어떻게 할지 알아보자. thread를 이용해서 동시에 많은 요청을 주는 부분도 threadpool을 사용하는 방법 등 더 효율적으로 실행하는 방법도 같이 알아보자. CountDownLatchthread 간의 동기화를 도와주는 일회성 도구카운트 값을 정해두고, 다른 thread들이 countDown()을 호출해 카운터를 0으로 만들면 await()로 기다리던 thread들이 동시에 깨어난다CountDown..
[Java] 동시성 테스트(CountDownLatch Thread ExecutorService)선착순 이벤트와 같이 동시에 많이 요청이 오는 것에 대한 테스트를 하고 싶은 경우 테스트 코드에서 여러 개의 thread를 실행시켜 진행할 수 있다.실행시키는 건 thread를 이용해서 동시에 많은 요청을 줄 수 있는데 “여러 스레드를 동시에 실행시키고, 모두 끝날 때까지 기다리는” 상황에 대한 처리는 어떻게 할지 알아보자. thread를 이용해서 동시에 많은 요청을 주는 부분도 threadpool을 사용하는 방법 등 더 효율적으로 실행하는 방법도 같이 알아보자. CountDownLatchthread 간의 동기화를 도와주는 일회성 도구카운트 값을 정해두고, 다른 thread들이 countDown()을 호출해 카운터를 0으로 만들면 await()로 기다리던 thread들이 동시에 깨어난다CountDown..
2025.11.16 -
spring application에서는 다양한 상황에 thread를 사용한다.이전 포스팅 중에 tomcat connector 관련 설정 내역들을 정리한 내역이 있다. 여기에 설정한 내역들이 적절한 값인지 확인하기 위해서 모니터링을 진행할 수 있도록 설정해 보자. 설정 추가 tomcat의 connector thread 정보를 /actuator 조회를 위해서는 추가적인 설정이 필요 server: tomcat: mbeanregistry: enabled: trueTomcat 자체는 JMX(MBean)를 통해 여러 메트릭 정보를 제공할 수 있다(예: active thread 수, request 처리 수, 에러 수 등)하지만 Spring Boot는 기본적으로 Tomcat의 MBean 등록을 성능과..
[Tomcat] connection thread metric 모니터링spring application에서는 다양한 상황에 thread를 사용한다.이전 포스팅 중에 tomcat connector 관련 설정 내역들을 정리한 내역이 있다. 여기에 설정한 내역들이 적절한 값인지 확인하기 위해서 모니터링을 진행할 수 있도록 설정해 보자. 설정 추가 tomcat의 connector thread 정보를 /actuator 조회를 위해서는 추가적인 설정이 필요 server: tomcat: mbeanregistry: enabled: trueTomcat 자체는 JMX(MBean)를 통해 여러 메트릭 정보를 제공할 수 있다(예: active thread 수, request 처리 수, 에러 수 등)하지만 Spring Boot는 기본적으로 Tomcat의 MBean 등록을 성능과..
2025.04.12 -
기존에 잘 동작하던 서비스의 java version을 upgrade시키고 난 이후에 에러가 발생하게 되었다. java 8 -> java 11 에러 내역 버전 업 이후에 thread 개수가 너무 많이 증가하여 out of memory 발생 Caused by: java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached at java.base/java.lang.Thread.start0(Native Method) at java.base/java.lang.Thread.start(Unknown Source) at java.base/java.util.concurren..
[Java] ForkJoinPool 에러 발생 in Java11기존에 잘 동작하던 서비스의 java version을 upgrade시키고 난 이후에 에러가 발생하게 되었다. java 8 -> java 11 에러 내역 버전 업 이후에 thread 개수가 너무 많이 증가하여 out of memory 발생 Caused by: java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached at java.base/java.lang.Thread.start0(Native Method) at java.base/java.lang.Thread.start(Unknown Source) at java.base/java.util.concurren..
2024.03.11 -
Spring-Kafka를 이용하여 Consumer를 구현하게 되면, 보통 @KafkaListener를 많이 사용한다. @KafkaListener( topics = "testTopic1", groupId = "test-consumer-group1", concurrency = "1" ) public void test(Message message) { //... } @KafkaListener의 설정 중에 concurrency라는 설정을 알아보자. 해당 설정은 consumer의 thread 개수를 지정하는 값이다. 그렇다면, 하나의 consumer에서 동시에 여러 message를 처리할 수 있도록 thread를 늘리면 좋을 것이라는 생각이 드는데, thread 개수를 늘린다고 무조건 처리량이 좋아지는 것은 아니..
[Kafka] Spring Kafka Listener Concurrency 설정Spring-Kafka를 이용하여 Consumer를 구현하게 되면, 보통 @KafkaListener를 많이 사용한다. @KafkaListener( topics = "testTopic1", groupId = "test-consumer-group1", concurrency = "1" ) public void test(Message message) { //... } @KafkaListener의 설정 중에 concurrency라는 설정을 알아보자. 해당 설정은 consumer의 thread 개수를 지정하는 값이다. 그렇다면, 하나의 consumer에서 동시에 여러 message를 처리할 수 있도록 thread를 늘리면 좋을 것이라는 생각이 드는데, thread 개수를 늘린다고 무조건 처리량이 좋아지는 것은 아니..
2024.02.28