본문 바로가기

당신이 감동할 때.

(400)
OOM 맞고 나서 알아본 apache poi xlsx 레거시 코드에서 csv 를 생성해주는 코드(csv 다운로드 기능)가 여러 이유로 아직도 쓰이고 있다. 로직은 xlsx 를 생성하고 이 xlsx 로부터 데이터를 읽으며 csv 를 쓰는 로직이었다. 오래된 코드(무려 2013년!)이고, 다 퇴사를 해버린데다 히스토리 관리가 잘 안 돼있어서 왜 xlsx 를 먼저 생성하는지 정확한 이유를 찾진 못했지만, 이미 xlsx 다운로드 기능을 먼저 만들어놔서 그것을 활용하는 게 더 낫다고 판단이 됐었나 보다. 그러던 중, 어제 약 23,000 rows 에 대한 csv 다운로드 요청이 OOM 을 유발하며 서버가 죽는 현상이 발견되었다. (컬럼수도 493개였음) xlsx 를 생성할 때 Workbook 의 인스턴스 타입을 XSSFWorkbook 으로 되어있었는데, 해당 인스턴..
이탈젯 필그림 점화플러그 셀프 교체 나에게는 2015년식(? 2014년식인지 헷갈린다..) 이탈젯 필그림 125 라는 스쿠터가 있다. 한때, 베스파와 동일 디자인 라이센스를 획득(공유)하여 다른 재질이지만 베스파와 거의 똑같은 외형의 스쿠터로 잠깐 국내에 알려졌던 것 같긴 한데, 내가 구매할 당시에는 디자인 라이센스가 없어졌나 그래서 다른 디자인의 필그림이 출시되었다. 지금은 양평이 집이지만, 서울에 있을 때는 거의 매일 타고 다닐 정도로 없으면 안 되는 소중한 존재였다. 지금도 직장인 서울 강남에 주로 주차를 해두며 서울 시내를 돌아다닐 때 아주 유용하게 잘 타고 다니고 있다. 다만, 관리를 잘 못해주고 있는 것이 사실... 작년 겨울에, 계속 차를 타고 다니며 이 필그림의 배터리의 - 극을 미리 빼놓지 못해, 결국 방전까지 시킨 뒤, ..
Mysql GTID-based Replication 오류 Skip 하기 뚜렷이 어떤 SQL 에러가 발생한 지 확인 가능하고, 그걸 Skip 해도 된다는 확신이 있으면 이 방법이 가장 쉽고 빠르다. 1. 문제가 된 gtid 트랜잭션 번호 찾기 2. 문제가 된 gtid 트랜잭션 건너 띄도록 빈(empty) 트랜잭션 주입 mysql> SET GTID_NEXT="c85b621b-8fd3-11e8-862c-020051680009:66194695"; Query OK, 0 rows affected (0.00 sec) mysql> begin; Query OK, 0 rows affected (0.00 sec) mysql> commit; Query OK, 0 rows affected (0.01 sec) mysql> SET GTID_NEXT="AUTOMATIC"; Query OK, 0 rows..
볼링 치고 싶다 최근 몸이 너무 안 좋아져서 쉬는 데 집중 하느라 운동을 못하고 있다. 원래도 몇년동안 운동을 안 하다가, 2019년 들어서는 건강 관리를 좀 하려고 노력하고 있었는데 또 요즘 너무 피곤하다. ㅜㅜ 약 3주전 195점을 기록하고 나서 볼링을 한 번도 못쳤는데 다시 치러가면 또 100점도 못넘기겠지? 조금씩이라도 자주 꾸준히 치는 게 실력 향상에 도움이 될텐데.. 이제 가을도 됐으니 아내랑 테니스도 쳐야하는데, 얼른 몸이 회복됐으면 좋겠다. 역시 건강이 제일인 것 같다. 건강해야 일도 하고 돈도 벌고 운동도 하지. ​
부동액엔 지하수를 넣으면 안 된다. 이틀 전, 늦은 밤 아내가 차를 운행 중 이상한 경고음이 자꾸 낸다고 해서 멈춰세우고 집에서 쉬고 있는 나에게 전화를 걸었다. 내 차를 갖고 현장에 도착하긴 했지만 너무 늦은 밤이어서 원인을 확인하거나 할 겨를이 없었다. 다만, 차 계기판에서 뜨는 메시지는 "High coolant temperature" 였다. 본넷을 열고 부동액 쪽을 봤는데, 부동액 색이 브라운색(커피색?)처럼 보여서 "아, 오래 됐구나. 부동액(냉각수) 교체할 때가 된 것이군"이란 생각으로 아내에게는 "일단 집으로 돌아가서 내일까지 기다리면 엔진과 부동액이 식을테니 시동이 다시 걸릴 거야. 시동이 걸리면 가까운 센터에 가서 부동액 교환을 하자." 라고 얘기하고 집으로 돌아왔다. 다음 날, 아침 일찍 차를 찾으러 갔다. 차 시동을 걸어..
Apache poi 이용하여 excel 에 아주 많은 이미지 넣을 때 급격히 느려지는 현상 우회하는 야매 방법 5000개 가량의 이미지가 apache poi 로 생성되는 엑셀 파일에 삽입되어야 하는 needs 가 있었는데, apache poi 라이브러리에서 병목 구간이 있어 이를 찾아내고 우회하는 방법을 정리해두면 나중에 급할 때 이런식으로라도 문제를 해결할 수 있음을 확인하기 위해 정리해본다. 몇시간을 날려먹었는지... 옛날 프로젝트라 apache poi 3.15 버전이 dependency 로 import 되어있었다. 프로젝트 빌드 툴은 maven 기반이었다. 디버깅으로 각 메소드 호출이 느려지는 부분을 찾아 들어가보니 `POIXMLDocumentPart` 의 `addRelation` 메소드에서 `findExistingRelation()` 메소드를 호출하는 것이 병목 구간임을 알 수 있었다. private Pa..
CompletableFuture, parallelStream, ExecutorService 사용 시 주의점 좀 자세히 정리를 하고 싶지만, 코드 리뷰 중 오갔던 대화 내용 정도만 정리하기로... This comment has been minimized. Show comment Hide comment Copy link Quote reply Edit Unhide Delete leewin12 3 hours ago 여기선 default forkJoinPool이 사용될 것 같은데, 맞을까요? CustomForkJoinPool과 default ForkJoinPool이 섞여 있는 것 같습니다. Write Preview Select a reply ctrl . The content you are editing has changed. Please try again. 여기선 default forkJoinPool이 사용될 것 같은..
Spring Eureka 관련 정리 On-premise IDC 환경에서 운영중인 서버들을 Cloud 환경으로 이전하기 위해 부딪힌 몇가지 문제가 있었다. 이 문제들을 해결하기 위해 알아본 자료들을 정리해두면 후에 도움이 많이 될 것 같아 정리를 해 봄. 상황 1. 기존에는 VPN 을 통하였기 때문에 내부간 트래픽은 http 로 해도 안전하다고 여겨지고 있었음 2. Loadbalancer 트래픽 마저 VPN 의 트래픽을 점유하고 있었으므로 불필요한 성능 저하 유발 3. Cloud 환경에서는 가능한 VPN 을 타지 않고 `외부 트래픽 + 같은 서브넷 트래픽` 으로만 구성하는 것이 목표 4. Loadbalancer 에서 앱 서버(서비스)에 접근하기 위해서는 plain http 보다 https 로 전송해야 여러 공격으로부터의 최소한의 보안 레벨을..

반응형