仮想サーバー上の Windows クライアントからの MySQL アクセスが遅い

仮想サーバー上の Windows クライアントからの MySQL アクセスが遅い

以前働いていたパブのレジ用コンピュータ 3 台に UniCenta オープン ソース POS をインストールしています。

クライアントは、管理用に phpMyAdmin を使用して CentOS 6 と MySQL 5.6.39 を実行する仮想サーバーに接続されます。

アプリケーションはJavaで書かれており、MySQLで実行されます。

数か月前、インストールが非常に遅くなり、画面上のボタンが反応するまでに数秒かかるようになりました。混雑したパブでは、これは深刻な問題です。

最初はこれが問題だと思い、MySQL サーバーのパフォーマンスを微調整するためにサーバーの my.cnf の設定を変更してみましたが、何も変わりませんでした。

問題が解決するかどうか確認するために、UniCenta ソフトウェアを最新バージョンにアップグレードしましたが、まだ解決していません。

OS-X El Capitan を実行している Mac からクライアントを試してみようと思いましたが、速度低下もなく完璧に動作しました。

クライアント コンピューターに異なるバージョンの Java をインストールしてみましたが、効果はありませんでした。

オンラインのいくつかの投稿でこれについて言及されているのを見て、skip_name_resolve をオンに変更しましたが、それでも問題は解決しません。

私は Mac 上の Windows 7 仮想 PC をローカル データベースに対してテストしましたが、速度低下もなく正常に動作しました。したがって、問題はクライアントと仮想サーバーの間のどこかにあります。

Windows クライアントで NetBIOS over TCP/IP を無効にしてみましたが、違いはありませんでした。

問題解決の次のステップは Wireshark トレースだと考えていますが、これを投稿して、Windows 7 TCP/IP スタックや、問題の原因となっている可能性のあるその他のネットワークの問題に関して、他の誰かが賢いアイデアを持っているかどうかを確認しようと思いました。

18-02-2018 さらに、レジと同じ場所にある別の Windows 7 マシンにクライアント ソフトウェアをインストールしたところ、VPS でホストされているデータベースに対して完全に機能しました。

これで、VPS データベースをローカル データベースにコピーできました。3 台のレジ コンピューターはこのローカル データベースに対して完全に正常に動作します。

この問題は、VPS でホストされているデータベースにアクセスするときに特定のコンピューターで発生するようです。

Wireshark ではクライアントとサーバー間の接続に問題が示されないため、トラブルシューティングが困難です。

さらなる更新: 修正方法としては、アプリケーションの自動更新設定を無効にすることが考えられます。この設定では、実行されるたびに大量の更新タスクが実行され、画面が何度も再読み込みされるため、SQL サーバーへのトラフィックが大量に発生します。

このオプションを無効にすると、速度の問題が解決され、アプリケーションは正常に実行され、タイムリーに応答するようになりました。

答え1

答えは、アプリケーションで自動更新設定を無効にすることでした。これは、これによって作成される SQL 接続の数に関係しており、自動更新設定で発生するリクエストの数を処理するために MySQL サーバーのポーリング設定を調整できる可能性があります。

関連情報