★ 프로젝트 + 트러블 슈팅 ★46 2022.12.09 TIL (tomcat 서버설정) server.tomcat.connection-timeout 연결을 수락한 후 요청 URI 라인이 표시될 때까지 커넥터가 대기하는 시간입니다. server.tomcat.max-connections / 기본값 : 8192 서버가 주어진 시간에 수락하고 처리하는 최대 연결 수입니다. 제한에 도달하면 운영 체제는 "acceptCount" 속성을 기반으로 연결을 계속 수락할 수 있습니다. server.tomcat.threads.max / 기본값 : 200 작업자 스레드의 최대 양입니다. server.tomcat.threads.min-spare / 기본값 : 10 작업자 스레드의 최소량. 위 내용으로 서버 튜닝을 진행할 수 있다. 자세히 이용하는 방법은 아직 모르는 관계로, 공부가 더 필요하다.. server: p.. 2022. 12. 9. 2022.12.09 TIL (DB max-connections) 금일, 대규모 트래픽 상황을 가정하여 약 7,000건의 요청을 1초동안 요청하는 것으로 제이미터 부하테스트를 진행해보았으나 계속 에러율이 30~50%에 달하게 되었다. 문제가 무엇일지에 대해 계속 고민해보며 아래에 있는 사항들을 진행해보았다. > EC2 서버 Scale-up > EC2 서버 Auto-Scaling + ALB (Application Load Balancing) 그런데도 에러가 20~30% 발생한다.. 혹시몰라 약 3,000건 요청으로 낮은 성능의 EC2(ubuntu t2.micro) 1대를 체크해보니, CPU부하%는 30%에 불과했으나, 에러율은 이전과 마찬가지로 20~30%가 발생했다. 뭔가 더 근본적인 이유가 있는 상황이였다. 그래서 더 파 본 결과, 아래와 같은 현상을 발견하였다. >.. 2022. 12. 9. [JAVA] Spring @Scheduled 스케줄링 사용하기 스프링에서 스케줄링을 사용하기 위해서는 Main 클래스에 @EnableScheduling 어노테이션을 붙여줘야 한다. @SpringBootApplication @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 5초마다 현재 시간을 출력하는 코드를 작성해 보면 아래와 같다. @Component public class TestScheduler { @Scheduled(cron = "0/5 * * * * *") public void test() { System.out.println("now: " + .. 2022. 11. 24. Gradle build 오류처리 인텔리제이에서 build를 계속 시도중인데 계속 오류 메세지가 노출되었다. 이전에 작동이 정상적으로 됐던 것들이나, 테스트의 문제일지도 모르니 다시 진행해봐도 테스트는 문제가 없었다. 그러던 와중, 파일경로의 한글이 깨져있는 것을 발견하고 구글링을 한 결과 이것 또한 문제가 될 여지가 충분히 보였다. 그래서 파일경로에 한글이 없게끔 다시 파일을 재작성한 뒤 실행해본 결과, 문제없이 build가 완료되었다. 이것 때문에 귀한 시간을 버렸지만.. 배워두었으니 다음번에도 두번 헤매는 일은 없을 것이다. 늘 그랬듯, 좋은 경험이였다. 2022. 11. 21. 동시성 제어문제 트러블슈팅 2 프로젝트를 진행하던 중, 상품 판매에 따른 재고데이터에 동시성 문제가 발현되어 이슈를 처리하게 되었다. [이슈 정보] https://github.com/OnNaNOn/OMG/issues/22 주문기능 동작 시, 재고관리 동시성 문제해결 예정 #22 · Issue #22 · OnNaNOn/OMG github.com 해당 상황을 처리하기 위해 Synchronized, 비관적/낙관적 잠금, 분산 DB환경, Redisson 등등 여러가지를 고려해본 결과, 우선 당장은 비관적잠금을 사용할 예정이나, 대규모 접근이 이뤄질 경우 성능(속도)는 필수적으로 일어날 것으로 여겨져 이를 해결하기 위해 최종적으론 Redis의 Redisson을 활용하기로 결정하였다. (추후 서버를 추가증설하였을 경우, Synchronized .. 2022. 11. 18. 동시성 제어문제 트러블슈팅 1 프로젝트를 진행하던 중, 동시성 문제가 발생하였다. 내용은 아래와 같다. [참고자료] https://isntyet.github.io/jpa/JPA-%EB%B9%84%EA%B4%80%EC%A0%81-%EC%9E%A0%EA%B8%88(Pessimistic-Lock)/ Like기능 동시성 문제발생 Like기능 1회 클릭 시, 상품에 대한 좋아요 완료. 다시 클릭할 시 좋아요 취소. 문제상황 빠르게 클릭할 시, 동시성 문제가 발생하여 다시 취소가 되지않는 현상이 발생하였음. 트랜잭션끼리 충돌하여 문제가 발생한 것으로 파악되었음. 해결방법 Transactional이 완료되기 이전까지 다른 작업이 간섭하지 못하도록 제어해야할 필요성이 있었음. 이에 DB에서 제공하는 락기능을 활용하여, 비관적 잠금(Pessimist.. 2022. 11. 9. 이전 1 ··· 4 5 6 7 8 다음