ablog

不器用で落着きのない技術者のメモ

2021-01-01から1年間の記事一覧

redis-rb の接続モードによる ElastiCache(Redis) フェイルオーバー時の復旧時間を計測してみた

ElastiCache(Redis) に redis-rb からアクセスし、接続モード(cluster or host)によるフェイルオーバー時のリカバリ時間を計測してみた。 検証結果 $ CONN_OPT=host bash exec_redis-rb_sample.sh > redis-rb_sample_cluster_`date '+%Y-%m-%d-%H%M%S'`.lo…

ハイフンを含む文字列を grep する

ハイフンを含む文字列を grep しようとすると "invalid option" と怒られた。オプションに "--" を指定するといける。 $ grep -A 4 -- '-- query id:' query_perf.log 参考 逆引きUNIXコマンド/grepでハイフン付のキーワードを検索する方法 - Linuxと過ごす

最近の生活習慣

生活リズム 6:00起床、22:00就寝 飲み物 飲み物は水(お茶ではなく) コーヒー(起床90分経つまでは飲まない、1日3杯まで) お湯(寝る前) 食事 1日2食(10:00〜18:00以外の時間帯は食べない) 昼:無塩ミックスナッツ(20-30g)、ゆで卵、サラダ 夜:焼き…

SOSP21 で best paper 賞を受賞した S3 の論文を読んでみる

AWS

SOSP21 で best paper 賞を受賞した S3 の論文 "Using Lightweight Formal Methods to Validate a Key-Value Storage Node in Amazon S3" を読んでみる。 Abstract This paper reports our experience applying lightweight formal methods to validate the …

psql で select 結果を変数にセットして、その後の select のフィルタ条件に変数を埋め込む

psql から Amazon Redshift でクエリ実行後に pg_last_query_id() で直前のクエリIDを取得して、stl_query や svl_query_summary からクエリIDでフィルタして性能情報を取得したかったんだけど、psql だとクエリ実行後に \gset を実行するとカラム名が変数名…

Teradata の Query Grid とは

Teradata QueryGridの説明 Teradata QueryGrid™ 2.xは、1つ以上のデータ ソースにわたって、シームレスで高性能なデータ アクセス、処理、および移動を提供するデータ分析ファブリックです。Teradata QueryGridは、次のコネクタをサポートします。 Teradata …

AWS DMS タスク停止時に PostgreSQL の WAL が溜り続けないようにする

AWS

AWS DMS のソースが PostgreSQL で CDC を使う場合、DMS タスクを停止すると、PostgreSQL の WAL が溜まってストレージ使用量が増える。 レプリケーションスロットを削除すると、WAL が削除されるようになる。 SELECT * FROM pg_replication_slots; SELECT p…

bash の変数展開を使って FQDN のホスト名の部分だけ取得する

bash の変数展開を使って、FQDN のホスト名(最初のドットより前)の部分だけ取得してみたメモ test.sh #!/usr/bin/bash PG_HOST=${PG_HOST:-redshift-cluster-2.foobar.ap-northeast-1.redshift.amazonaws.com} INSTANCE_IDENTIFIER=${PG_HOST%%.*} echo ${…

Teradata の BYNET とは

What is the BYNET?The BYNET is the system interconnect that allows the various components of the Vantage database to communicate. This is important because Vantage is composed of many self-contained virtual processors with no inherent conn…

Teradata の AMP とは

アクセスモジュールプロセッサ(AMP)-仮想プロセッサ(vproc)と呼ばれるAMPは、実際にデータを保存および取得するものです。 AMPは、Parsing Engineからデータと実行計画を受け取り、データ型の変換、集約、フィルター、並べ替えを実行し、それらに関連付…

Teradata の AWT とは

AWTs are the smallest unit of work in Teradata. These are the tasks or execution threads inside of each AMP that get the database work done, such as executing a query step once the step is dispatched to the AMP. Each AMP has up to 80 AMP w…

Teradata のスロットルについて

スロットル スロットルはTeradata Asterシステムで一度に実行されるクエリー数を制限します。スロットルを作成するときに述語を指定します。述語には有効なSQL WHERE句を指定する必要があります。既存のUDF、SQL演算子、ワークロードの管理属性、およびANDや…

Teradata のプロファイルについて

プロファイルについて プロファイルを作成すると、同じようなニーズを持つユーザーのグループに対してリソース パラメータを定義することができ、ユーザーごとに個別にリソース パラメータを定義せずに済みます。次に、CREATE USER文またはMODIFY USER文にプ…

AWS DMS のチューニング

AWS

AWS DMS タスクでターゲットレイテンシーが高い場合のトラブルシューティング Best practices for AWS Database Migration Service - AWS Database Migration Service Debugging Your AWS DMS Migrations: What to Do When Things Go Wrong? (Part 3) | AWS …

CloudWatch アラームを AWS Chatbot 経由で Slack に通知する

AWS

CloudWatch アラームを AWS Chatbot から Slack に連携して通知してみた。 CloudWatch アラームは Redshift への接続数 > 5 というシンプルなものにした SNS トピックは KMS カスタマー管理型キーで暗号化した(マネージドキーは Cloudwatch からアクセスで…

CloudWatch アラームから SNS への通知で KMS から AccessDeniedException と怒られる

AWS

事象 CloudWatch アラームから SNS への通知で KMS から AccessDeniedException と怒られる アクション arn:aws:sns:ap-northeast-1:123456789012:cloudwatch-test-sns の実行に失敗しました。エラーが発生しました: "null (Service: AWSKMS; Status Code: 4…

Amazon Redshift でクエリの単体性能を計測するスクリプト

AWS

yoheia/aws/redshift/redshift_measuring_query_exec_time at master · yoheia/yoheia · GitHub

Amazon Redshift のクエリモニタリングルールで一時ディスク使用量の多いクエリーを中止する

Amazon Redshift の WLM クエリモニタリングルールで、一時ディスクを1MB以上使っているクエリを中止してみた。 以下の例では 1MB 以一時ディスクを使用したクエリを中止している。 実行結果 [ec2-user@ip-172-31-0-222 ~]$ export LC_ALL=C [ec2-user@ip-17…

PostgreSQL の timestamp without timezone の最大値

PostgreSQL 12.4 の timestamp without timezone の最大値は AD 294276 年。 $ psql "host=aurora-postgres124.cluster-********.ap-northeast-1.rds.amazonaws.com user=awsuser dbname=postgres port=5432" psql (13.4, server 12.4) SSL connection (prot…

Amazon Redshift のクエリモニタリングルールで長時間実行クエリーを中止する

Amazon Redshift の WLM クエリモニタリングルールで、一定時間以上実行されているクエリを中止してみた。 以下の例では 10 秒以上要したクエリを中止している。 実行結果 [ec2-user@ip-172-31-0-222 ~]$ export LC_ALL=C [ec2-user@ip-172-31-0-222 ~]$ cat…

PostgreSQL のシーケンスのキャッシュサイズによる tps を比較

PostgreSQL のシーケンスのキャッシュサイズによる tps を比較してみた。pgbench で同時多重(500)でシーケンスにアクセスし、キャッシュサイズが 1 だと 9,601、20 だと 12,714 とキャッシュサイズが大きいほうがスループットは高い。とりあえず流してみた…

Invalid Action: The action s3:CreateMultipartUpload does not exist

AWS

事象 S3 バケットポリシーのアクションで s3:CreateMultipartUpload を許可すると "Invalid Action: The action s3:CreateMultipartUpload does not exist. " というエラーが出る。 原因 Create Multipart Upload に必要な権限は s3:PutObject。 s3:CreateMu…

Laravel からクラスターモード有効な ElastiCache(Redis) へのアクセスでタイムアウトが発生する

AWS

事象 Laravel からクラスターモード有効な ElastiCache(Redis) へのアクセスでタイムアウトが発生する 解決策 Laravel の database.php を以下の通り設定 'redis' => [ 'client' => env('REDIS_CLIENT', 'predis'), 'options' => [ 'cluster' => env('REDIS_…

Aurora PostgreSQL に RDS Proxy 経由で同時多重でクエリを発行中に Reader インスタンスを削除してみる

AWS

Aurora PostgreSQL に RDS Proxy 経由で同時多重でクエリを発行中に Reader インスタンスを削除すると、クエリでエラーが発生するか確認してみた。 To Do pgbench で -d オプション付きで試す。 検証手順 psql で接続する $ psql -h apg117-2-test-read-only…

RDS Proxy 経由で Aurora の Reader エンドポイントに同時多重でクエリを発行して均等分散することを確認した

AWS

Aurora PostgreSQL の Reader エンドポイントでクエリが均等分散しない場合 - ablog について RDS Proxy 経由だとどうだろうと思って検証してみたら、概ね均等分散してくれてた。 検証手順 psql で接続する $ psql -h apg117-2-test-read-only.endpoint.prox…

pcp_detach_node -g で既存セッションに影響なくバックエンドのDBを切り離せるか確認した

確認したいこと pcp_detach_node -g で既存セッションに影響なくバックエンドのDBを切り離せるか デタッチ実行後に新規にクエリに振分けられ、セッションがなくなるまでデタッチされない pcp_detach_node だと強制的にデタッチされるが既存セッションに影響…

PostgreSQL の Transaction ID(XID)について

aws.amazon.com cs.wingarc.com qiita.com tihiro.hatenablog.com www.postgresql.jp

Pgpool-II に PostgreSQL をデタッチ/アタッチする

Pgpool-II に PostgreSQL をデタッチ/アタッチしてみたメモ。 状態を確認する $ psql "host=localhost dbname=postgres port=9999 user=awsuser" psql (9.2.24, server 12.4) WARNING: psql version 9.2, server version 12.0. Some psql features might no…

Aurora のクラスターパラメータグループの特定のパラメータ値をリセットする

AWS CLI でリセットすることができる 以下はパラメータグループ "aurora-postgresql11-custom-cluster" の "log_min_duration_statement" をリセットする例 $ aws rds reset-db-cluster-parameter-group --db-cluster-parameter-group-name aurora-postgresq…

EC2のネットワーク帯域のベースラインの調べ方

AWS

以下のようにドキュメントに記載されている。 General purpose instances - Amazon Elastic Compute Cloud 参考 † これらのインスタンスでは、ネットワーク I/O クレジットメカニズムを使用しながら、帯域幅の平均使用率に基づき、ネットワーク帯域幅をイン…