2016-09-25 9 views
0

私は現在、単純で直進的でなければならない何かをしようとしています - データベースサーバに接続し、クエリを実行し、ユーザーに返します。これは私がそれを行うために使用しているコードです:コードから呼び出されたときにのみ、極端に遅いmysql接続の確立

MySqlDataReader reader = MySqlHeaper.ExecuteReader(connectionString, $"SELECT * FROM table WHERE insertDateTime > '{DateTime.Now.AddSeconds(-1800).ToString("yyyy-MM-ddTHH:mm:ss")}'"; 

私もMySqlCommandMySqlConnectionオブジェクトのペアでこれを試してみましたが、いずれかの方法は、結果は同じである - それは、MySQLに接続するためには約7100msを取りますサーバ。私はそれがServerFaultにあるはずの問題のように聞こえるが、私のテストはそうでないことを私に知らせる。コマンドラインMySqlクライアントを使用して、同じ資格情報を使用してデータベースサーバーに接続し、まったく同じクエリを実行すると、接続が確立され、データが何もない状態に戻ります。私はそれは、サーバの設定だかない場合は、この段階では知っているが、ここで私がこれまで試した何ていない:

  • は、サーバ
  • にskip_name_resolve設定を設定するMySQLサーバ
  • を再起動を再起動します1サーバーからすべてを許可するようにサーバー(mysqlのコマンドラインクライアントとMySQLのワークベンチ)
  • オープニングRDSインスタンス上のすべてのAWS IAMの権限を照会する代替手段を使用して接続
  • に名前の逆引き参照を防止するために、

何も任意の違いを作っているように見えるので、私はこのひどいパフォーマンスを説明するために途方に暮れてよ。それはまた、私が接続を開くときだけ起こっている。クエリを実行する、挿入する、あなたは何が雷を速くしていますか?誰かが持っている可能性のある提案が最も役立ちます。

答えて

0

IAMのアクセス許可がパフォーマンスに影響することは期待しません。私は彼らが成功するか、成功しないと期待します。

私はより多くの情報を得るために、いくつかの診断プロトコルを実行します。

1)次のクエリを実行して、スタックが初期化されている問題であるかどうかを確認します。後続のクエリは高速ですか? 2)単なるID照会である照会を試してください。どんな種類のIOも必要としないもの。 3)別のプラットフォーム(RubyやPHPなどのスクリプト言語かもしれません)からクエリを試してください

これらの質問に答えると、絞り込むのに役立ちます。

+0

私たちのテストでは、認証中に起こっていると判断しました。低速接続時間の大半のアクティブセッションクエリを見ると、ユーザーは「認証されていないユーザー」であり、クエリは「接続しています」 – Adrian

関連する問題