본문 바로가기

AWS

(PostgreSQL) PostgreSQL autovacuum을 튜닝할 때 유용한 Tip 💡 이번 글에서는 Working with PostgreSQL autovacuum on Amazon RDS을 정리한 내용을 다루고자 한다. Autovacuum은 자동으로 VACUUM과 ANALYZE 명령문을 실행한다. Autovacuum은 추가/수정/삭제된 튜플이 많은 테이블을 찾는다. 그리고 데이터베이스에서 더 이상 사용되지 않는 데이터를 정리하여 저장공간을 확보한다. 기본적으로 AWS RDS PostgreSQL에서 Autovacuum이 활성화되어있다. 그리고 autovacuum과 관련된 설정들을 적절한 값을 기본값으로 설정해준다. 이 기본값들은 일반적인 기준으로 설정한 값이다. 때문에 시스템 특성에 맞는 적절한 값으로 설정값을 튜닝하면 성능상 이점을 얻을 수 있다. 해당 포스팅에서는 autovacuum 튜..
(PostgreSQL) AWS PostgreSQL RDS에 Transaction ID Wraparound 알럿 설정하기 본 글에서는 Amazon RDS for PostgreSQL에서 transaction ID의 상태를 모니터링하는 방법과 주요 문제를 해결하는 일반적인 방법에 대해서 설명하고자 한다. 이 글은 AWS Database blog에 포스팅된 Implement an Early Warning System for Transaction ID Wraparound in Amazon RDS for PostgreSQL 을 번역하여 정리한 글이다. transaction ID란? PostgreSQL은 vacuum 없이 21억여 개의 트랜잭션까지 처리할 수 있다. 만약 vacuum 없이 처리된 트랜잭션의 수가 2^31 - 10,000,000에 도달하게 되면, Postgresql은 베큠이 필요하다는 로그를 남기기 시작한다. 그리고 (..
(AWS) S3 SELECT - S3 파일에 쿼리 날려서 필요한 데이터만 다운받기 AWS S3 SELECT란? AWS s3 / glacier에 저장된 데이터에 쿼리를 날려서, 필요한 데이터만 다운받을 수 있게 해주는 기능이다. 2018년 3월 기준, glacier select는 모든 리전에서 사용할 수 있지만, s3 select는 아직 프리뷰 상태이다. 프리뷰버전에서는 CSV와 JSON 포맷만 지원한다. 그리고 압축 포맷으로는 GZIP만 지원한다. 샘플 코드 import boto3 from s3select import ResponseHandler class PrintingResponseHandler(ResponseHandler): def handle_records(self, record_data): print(record_data.decode('utf-8')) handler = Pri..
[beanstalk]eb cli으로 배포 시, 주의할점 1년간 빈스톡을 사용하면서, 배포할 때 주의해야했던 점들을 정리하고자 한다. 1. 빈스톡은 local git code를 배포한다. remote에 있는 git code를 땡겨다가 배포하는게 아니다. 그래서 배포하기 직전에, 최신 master code를 로컬로 땡겨온 다음에 배포해야한다. 2. 빈스톡에 있는 모든 인스턴스는 같은 애플리케이션 버전이여야한다. 터미널로 eb deploy 명령문을 실행해서 배포를 하던 도중, 실수를 한게 있어서 나도 모르게 command + c 버튼을 눌러서, 배포를 강제종료했던 적이 있다. 그런데 배포 강제 종료는 일을 더 꼬이게 만든다. 빈스톡에서는 모든 인스턴스의 버전이 같아야한다. 예를 들어 모든 인스턴스가 같은 버전으로 배포되기 전에, 배포를 중단시켜 버리면 최신 버전으..
[beanstalk]애플리케이션 버전 관리 Beanstalk Application Version 빈스톡은 배포 이력을 애플리케이션 버전으로 관리한다. 그래서 새로운 코드를 배포하면, 새로운 애플리케이션 버전이 생성된다. 애플리케이션 버전은 AWS Console 페이지에서 확인할 수 있다. 애플리케이션 버전으로 배포된 코드 이력을 확인할 수 있고, 롤백도 쉽게 할 수 있다. 나는 배포를 할 때, 애플리케이션의 Description을 추가해주고 있다. Description을 관리해줘야, 이 당시에 어떤 기능이 배포되었는지 이해하기가 쉽다. eb deploy -m "신규 기능 설명" 이런식으로 배포할 때, message 옵션을 넣어주면, 이 값이 application의 Description으로 추가된다. 참고 자료 AWS Elastic Beanstal..
[beanstalk]eb deploy timeout 옵션 현상 EB CLI 명령문으로 로컬에서 코드를 배포할 때, 시간이 오래걸리면 배포 로그가 터미널에 안보이는 현상이 발생한다. ( 이 때, timeout과 관련된 에러가 떠서 당황스러울 수 있다. 그런데 뒷단에서 배포가 잘 진행되고 있기 때문에, 당황할 필요는 없다. 그냥 배포 로그만 안보일 뿐이다. ) 방법 배포할 때, 아래처럼 timeout 옵션을 주는게 좋다. eb deploy -m "이슈번호-브랜치명" --timeout 100000
[RUBY]루비로 AWS Athena 사용하기 Gemaws-sdk gem 안에 athena 서비스를 사용할 수 있는 함수도 포함되어 있다. 함수 사용하는 방법 처음에 aws-sdk를 사용할 때는, 아테나에 쿼리를 보내면 바로 결과값을 리턴해주는 기능이 있을거라고 기대했다.마치 jdbc를 사용하듯이 사용할 수 있을줄 알았다. 그런데 약간 개념이 달랐다.참고링크 : ATHENA RUBY SDK 사용법 이렇게 클라이언트를 만들고client = Aws::Athena::Client.new(region: 'us-east-1') 이렇게 쿼리를 날리면, 이 때 날린 쿼리의 아이디가 담긴 객체가 리턴된다resp = client.start_query_execution({ query_string: "SELECT * FROM impressions WHERE year='2..