본문 바로가기
728x90
반응형
SMALL

IT/JAVA45

Netty 란 Netty 란? Netty는 TCP, UDP 소켓 서버 개발과 같은 네트워크 프로그래밍을 매우 간단하고 능률적으로 만들어주는 비동기 이벤트 드리븐 자바 네트워크 프레임워크다. ​ ​ 왜 사용할까? 성능이 좋다. - Non-blocking Asynchronous 가 기본 - 적은 thread로 많은 요청 처리 - GC부하를 최소화하는 Zero-copy ByteBuf 지원 ​ 유연하고 쓰기 쉽다 - 각종 network protocol 기본 지원 - 필요한 부분을 쉽게 조립해 쓸 수 있는 구조 - multithread 처리 없이도 사용 가능 ChannelHandler의 메소드는 동시에 불리지 않는다. Channel은 한 스레드에 할당되며 그 스레드에서만 호출 등록된 ChannelFutureListner도 그 .. 2021. 2. 2.
jmap 오류 발생할 경우 - Unable to open socket file, HotSpot VM not loaded 메모리 누수나 모듈의 문제 분석을 위해 thread dump, heap dump 등을 위해 jmap, kill -3 등을 이용하는데 다음과 같은 오류가 발생하는 경우가 있다. Exception in thread "main" com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file .... target process 43121 doesn't respond within 10500ms or HotSpot VM not loaded 열심히 구글링 하면 java process 의 실행 계정과 현재 jmap, jstack 을 실행하는 계정이 다른것이니 sudo -u 계정명 jmap... 하라는 글도 있고 O.S 바이너리 덤프를 뜨고 해당.. 2020. 12. 1.
webclient - bodyToMono 예외 처리 MSA 로 만들다 보니 Rest 형식으로 서로 데이터를 주고 받는 경우가 많은데 webclient 를 이용하여 rest api를 call 할때 404, 500 등의 오류에 대한 처리 방법을 알아 본다. ​ 기존 코드 public User findByIdAndPassword(String id, String pw) { return getWebClient().get() .uri(String.format(URI.FIND_NO_BY_ID_PW.get(), new Object[] {id, encryptParam(pw)})) .exchange() .bodyToMono(User.class); .block(); } 사용자 인증 API 에서는 id 가 없을 경우 404 NOT_FOUND 와 함께 데이터는 null 로 보내.. 2020. 11. 20.
Synchronized 잘 알고 사용하기 multi-thread 환경에서 동기화를 제어해야 하는 경우 Synchronized 키워드를 사용한다. ​ 여러 thread 들이 동시에 접근하는 것을 막는다... 라고 간단히 이해하기 보다는 자세히 뜯어볼 필요가 있다. ​ Thread는 클래스의 멤버변수에 접근할 수 있는데 이 멤버변수는 힙에 올라간다. 즉 여러 Thread가 공유 자원에 접근하는 경우 그리고 그 멤버변수가의 변화가 다른 로직에 영향을 줄 경우 동기화 해줘야 한다. (volatile 이나 Atomic 등을 이용할 수도 있다.) ​ public synchronized void func(String threadName) { // 동기화 필요한 부분 } 위 코드처럼 method에 synchronized 키워드를 붙이면 이 method 가 포.. 2020. 11. 5.
728x90
반응형
LIST