본문 바로가기
반응형

전체글474

NodeJS 와 PostgreSQL Connection Pool Database에 관해 기본적인 id/pw 외에 해야할 설정들이 여러개 있는데요. 그 중 실제 서비스 운영에 가장 중요한 설정 중 하나가 이전 글인 쿼리 타임아웃 과 함께 커넥션 풀 (Connection Pool) 설정입니다. 이 커넥션풀 설정이 왜 필요한지, 어떻게 해야할지 등등을 알아보겠습니다. 1. 실험 환경 실험의 경우 아래 환경에서 진행합니다. Node 16 PostgreSQL 14 (by Docker) 간단하게 아래와 같이 Node와 PG를 사용한 코드를 하나 만들어둡니다. 실험을 위해 lint 등을 빼고 빠르게 구성했습니다. app.js const express = require('express'); const pg = require('pg'); const app = express() con.. 2022. 1. 21.
[Ulysses] 에디터내 이미지 크기 조절 최근에 메모앱으로 Ulysses 를 써보고 있습니다. 에버노트에서 완전히 이주하게 되면 메모앱 정착기도 정리해보겠습니다. 처음 Ulysses를 작성할때 메모 작성과 폴더 관리가 원하던 의도 그대로 표현이 되어서 마음에 들었습니다. 다만 이미지 리사이즈가 별도로 되지 않아서 잠깐 고민을 했었는데요. Ulysses 에서는 이미지별로 사이즈 조절은 없고, 전체 설정으로 이미지들의 크기를 일괄 관리하는 기능만 존재합니다. 그래서 아래와 같이 기본 이미지 등록을 하면 굉장히 작은 사이즈로 이미지가 보이게 되는데요. 가독성 문제도 있어서 이미지 사이즈 크기를 조절해봅니다. 먼저 환경설정 (Command + ,) 으로 이동하신뒤 일반 (General) -> 이미지 미리보기 에서 사이즈 조절을 하시면 됩니다. 기본값이.. 2022. 1. 18.
NOT IN 쿼리 성능 개선하기 (PostgreSQL) 일반적으로 모든 RDBMS에서 부정조건 (not in, != 등) 은 인덱스를 선택하지 못한다. 이는 부정조건이 그 조건 외 나머지 모두를 뜻하기 때문인데, 지정된 대상을 빨리 찾는것이 인덱스임을 고려하면 그것 외 나머지라는 것 자체가 전체를 읽어야만 알 수 있는 정보이기 때문이다. 이럴때 가장 효율적인 해결 방법은 not in 을 없애는 것이다. 가장 대표적으로는 left outer join 이 있다. as-is) 아래의 쿼리는 현재 거의 2초에 가까운 시간이 소요되는 쿼리이다. select id from courses WHERE ("status"::text = 'publish' AND "published_date" < now() AND "exposure" AND "deleted_at" IS NULL).. 2022. 1. 17.
NodeJS 와 PostgreSQL Query Timeout 작은 서비스를 운영할때는 문제가 없던 서비스가 데이터가 적재되면 될수록 점점 슬로우 쿼리가 등장하게 됩니다. 이때 쿼리 시간을 제한하지 않으면, 5분/10분씩 수행되는 쿼리가 운영 환경에서 실행하게 되기도 하는데요. 이런 쿼리가 트래픽에 맞춰 여러개 요청이 온다면 결국 Node에서 사용가능한 Connection Pool이 가득차 더이상 쿼리 질의를 못하거나, 심한 경우 데이터베이스의 장애로 서비스가 사용불가능하게 되기도 합니다. 그래서 적정시간 이상으로 쿼리가 수행되면 강제로 종료하고, 다시 요청하도록 하는것이 일반적인 방식인데요. 해당 상황과 PostgreSQL에서의 옵션에 대해 소개드립니다. 1. 실험 환경 실험의 경우 아래 환경에서 진행합니다. Node 16 PostgreSQL 14 (by Dock.. 2022. 1. 14.
PostgreSQL (Aurora) 10 vs 11 버전 성능 비교 PostgreSQL은 버전별로 굉장히 많은 개선이 있다. 2022년 1월 13일 현재, AWS RDS Aurora는 PostgreSQL 버전을 10, 11, 12, 13까지 지원하고 있다. 실제 PostgreSQL은 14까지 나와있으며, 현재 Aurora가 아닌 RDS는 14 RC1 까지 준비되었다. 10 버전이 이미 출시된지 4년 이상 지났고, 현재까지 메이저 14버전까지 출시되면서 성능/자원관리/기능등 여러 개선이 있었다. 특히나 인덱스가 10.x에서 비효율적으로 작동하는 부분이 굉장히 크기 때문에 이를 버전 업그레이드를 통해 성능개선 효과를 볼 필요가 있다. 10 vs 11 비교 PostgreSQL의 10 ~ 14버전 간 여러 기능 비교 중, 인덱스 & 제약조건에 관한 비교를 본다. PostgreS.. 2022. 1. 13.
Mac 업데이트 이후 Docker 실행 안될 경우 어느날 Mac 업데이트 이후부터, docker-compose 실행이 안되기 시작했습니다. 아래와 같은 에러가 발생했는데요. 전체 에러로그는 다음과 같습니다. Traceback (most recent call last): File "docker/api/client.py", line 268, in _raise_for_status File "requests/models.py", line 941, in raise_for_status requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url: http+docker://localhost/version During handling of the above exception, anothe.. 2022. 1. 9.

728x90