반응형

2024/07 4

[개발관련] ssh 리모트 터널링과 로컬 터널링

들어가며ssh 터널링 명령어를 정리해보았습니다.-L(로컬)옵션과 -R(리모트)옵션의 한 글자 차이이지만 상당히 다르게 동작하며 사용의 목적도 달라집니다.ssh -L localhost:12345:192.168.0.1:22 mabb@121.10.10.10 -p22022ssh -R localhost:12345:192.168.0.1:22 mabb@121.10.10.10 -p22022  1. 로컬 터널링ssh 명령어를 실행하는 현재 서버가 121.10.10.10 서버의 입장이 되게 합니다. 현재 서버에서 localhost:12345를  121.10.10.10 서버가 접근할 수 있는 192.168.0.1:22로 터널링 해줍니다. ssh 포트로 터널을 만들어 원격지의 다른 포트나, 다른 서버(포트)에 직접 연결하는 ..

개발/개발관련 2024.07.25

[개발관련] Java_ 대량의 CSV Insert, 그리고 OutOfMemoryError 발생!

들어가며약 1.3MB 정도 되는 CSV 파일 (약 4000줄) 5천 개를 데이터베이스에 적재하려고 시도하였습니다.  OutOfMemory가 발생하였습니다. 1 record 당 1 instance로 List에 담았기 때문입니다. 객체 2,000만 개를 만들고 List에 담아 GC도 되지 않는 코드를 작성해 버린 것입니다. 1) CSV 한 줄 씩 읽고 객체 만들어 List에 add 하기2) 2000만 길이의 List (이 단계에서 OOM 발생!)3) 2,000만 길이의 Batch쿼리 4) 한 방에 Insert 시도 Heap GC 상태 확인PID를 찾는 동안 잠시 대기를 시켜줍니다. PID가 39205입니다.  35394는 PPID로 인텔리제이입니다.인텔리제이의 부모는 MAC에서의 1번 프로세스인 launch..

개발/개발관련 2024.07.07

[개발관련] @ForceInline 테스트

들어가며Properties.java를 들여다보던 중 Objects의 requiredNonNull 메서드에 붙어있는 @ForceInline 어노테이션을 살펴보게 되었습니다. 메서드 인라인을 강제하는 어노테이션 정도로 이해하였고, 이것이 성능을 위한 조치인 지 잘 이해가 되지 않았습니다. 문의를 해보니 스택트레이스 출력 때문인 것 같다는 의견이 있었습니다. 그래서 검증을 해보고자 테스트해보았습니다.메서드가 인라인화 되어 메서드의 본문이 참조되니까 스택트레이스에는 해당 메서드를 호출한 스택 상위의 메서드까지만 스택 트레이스가 출력될 것으로 예상하였습니다. 문제의 @ForceInline 어노테이션이 붙어있는 requireNonNull 메서드입니다. 1. 어노테이션을 붙이지 않고 예외를 던져 스택 트레이스를 확인..

개발/개발관련 2024.07.03
반응형