前提・実現したいこと
C#でMySQLConnector/NETを使ってMySQLサーバーへの接続をしたいと思っています。
発生している問題・エラーメッセージ
openメソッドに7秒前後の時間がかかり、製作しているソフトウェアとしては致命的な問題になっています。
エラー等は発生していません。
該当のソースコード
string sendCommand = "host=接続先のIPv4; userid=ここでは伏せます; password=ここでは伏せます; SslMode=none;"; MySqlConnection mysqlConnention = new MySqlConnection(sendCommand); mysqlConnention.Open(); //ここを実行すると7秒前後時間がかかります mysqlConnention.Close();
試したこと
・接続先サーバを変える
・接続するユーザーやデータベースの明示的指定や変更
・接続先サーバの再起動(OSそのものも行いました)
・sendCommandのパラメーター指定の変更
Interactive=true; AllowBatch=false; CacheServerProperties=true;
上記については関係がありそうだったので(個別・合わせて)いくつかのパターンを試しました
・パッケージ(MySql.Data.MySqlClient)の再インストール
補足情報(FW/ツールのバージョンなど)
コマンドラインからMySQLサーバーへの接続自体は成功しており、当ソースでも接続自体は成功しているので、エラー等は発生していません。
パケットキャプチャしてみる限り、ServerGreetingを受信した後にソース側がLoginRequestを送信するまでに時間がかかっています。
ServerGreetingパケットに「7秒前後待つようなフラグが設定されているのか」と思い、正常時(スムーズに接続できるODBC版)とのパケットをビット単位で目視比較しましたが差分は見られませんでした。
また、10%ぐらいの確率でミリ秒単位での接続になる時もありますが、発生条件などが分かっていません。
ODBC版でも試したのですがそちらは今のところ100%スムーズに接続ができます。
またネットワークが不安定ということもありません。
使っているVisualStudioは2017Community、インストールしたMySqlClientは8.0.11になります。
接続先サーバはUbuntu 16.04上の5.7.22のものと、Windows10 Pro上の10.1.28のもので試しました。
(Windows10の方はxamppで構築したものになります)
C#を始めて半年ほどの初学者になりますので説明不足・誤認識などはあるかと思いますが、こんなに時間がかかるものなのでしょうか?
恐れ入りますがご助言いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー