🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

1262閲覧

外部サーバからAWS RDSへ接続する際の遅延について

aina2464

総合スコア12

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2019/10/04 07:34

編集2019/10/08 00:40

タイトル通りです。

テストでクエリーを200回投げたところ平均3秒以上で返ってきています。
これはあまりにも遅すぎますので何か設定を間違えたのかと色々調べて見ているのですが解決に至らずにおります。

RDS設定内容です
クラス:db.r5.large
ストレージタイプ:汎用(SSD)
ストレージ: 30GiB
ストレージの自動スケーリング: 無効
マルチAZ: なし
Public Accessibilty: Yes

php

1<?php 2$php_start = microtime(true); 3 4//$link = mysqli_connect('localhost','user','password','db_name'); 5$link = mysqli_connect('myexampledb.a1b2c3d4wxyz.ap-northeast-1.rds.amazonaws.com','user','password','db_name'); 6 7if (mysqli_connect_errno()) {die(mysqli_connect_error());} 8mysqli_set_charset($link, "utf8"); 9 10echo microtime(true) - $php_start.'<br>'; 11echo 'START<br><br><br>'; 12 13for($i=1;$i<=200;$i++){ 14 $start = microtime(true); 15 $sql = "select * from `table` where `user_id` = '200' limit 1;"; 16 $res = mysqli_query($link, $sql); 17 echo microtime(true) - $start.'<br>'; 18} 19 20echo '<br><br>'; 21echo microtime(true) - $php_start.'<br>'; 22?>

同AZのEC2からRDSへも1秒以上かかっておりますので、もっと早くなるにはどうしたら良いのでしょうか?
外部サーバのlocalhostのDBへ接続するときは当たり前ですがとても早く、0.5秒もかからないほどでした。
インフラ、AWS初心者のため色々ご教授頂ければ幸いです。

よろしくお願いいたします。

######補足
外部サーバからのtracert(traceroute)結果です
イメージ説明
EC2からのtraceroute結果です。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

リージョンがus-west2(オレゴン)のようなので、単純に通信のレイテンシのせいで自分の端末に結果が帰ってくるのに時間がかかってるのではないでしょうか。
東京リージョンで試してみてください。

投稿2019/10/04 08:42

yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aina2464

2019/10/04 08:51

ご回答ありがとうございます。 上記はサンプルホストですが、テストの方ではap-northeast-1のホストになっております。
yu_1985

2019/10/04 09:02

使用しているクエリは記載のものと同一でしょうか? ローカルでは結果が早く返ってくるということであれば、DBの性能上の問題か、通信経路の問題かをまず切り分けたいです。
aina2464

2019/10/04 09:15

クエリのテーブル名だけを変更しています。 恐れ入ります、記述間違いがありました。 ローカルのDBとありますが、外部サーバのlocalhostのDBという意味です。外部サーバではwindowsサーバにxamppを入れて使用しています。 外部サーバのmysqlはmy-small.iniをつかっております。
yu_1985

2019/10/04 10:47

RDSのディスク空き容量は十分ありますか? また、CloudWatchでRDSを見たときに何か過剰にリソースを使っているものはありますか?
aina2464

2019/10/07 00:01

ディスク容量も十分ありcloudwatchには気になるものがありませんでした。 通信経路の部分が気になりますが、確認するのであればどこを見たら良いのでしょうか?
aina2464

2019/10/07 05:30

tracerouteの結果の画像を添付しましたが、いかがでしょうか?
yu_1985

2019/10/07 07:35

前者の方はやたらとホップが多いような気がしますね…。 自分の環境で適当にパブリックアクセス可能なRDSを作ってみたらそこまであちこちを経由しなかったのですが、なにか特別なルート設定でもしてるんでしょうかね? ネットワーク構成がなにか特別なことはありますか?
aina2464

2019/10/07 08:47

思い当たるものがないのですが… 下記AWSで行った設定です。 ・VPCを東京リージョンで作成 ・サブネットを6つ作成(App用(AZ:1-a)、DB用×2(AZ:1-a,1-c)、ELB用(AZ:1-a)、あまり×2(AZ:1-c)) ・インターネットゲートウェイを作成 ・インターネットゲートウェイをVPCに関連付ける ・ルートテーブルを作成 ・ルートテーブルのルート送信先に「0.0.0.0/0」を追加 ・ルートテーブルのサブネット関連付けにApp用,DB用×2,ELB用を設定 ・セキュリティグループを設定 特別な事をしていないつもりですが、何か設定を間違えていますかね?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問