質問をすることでしか得られない、回答やアドバイスがある。

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

ただいまの
回答率

90.32%

localhostから同LAN上のMySQLサーバーへの接続が急に遅くなる

解決済

回答 1

投稿

  • 評価
  • クリップ 2
  • VIEW 1,183

muna5377

score 10

localhostから同LAN上のMySQLサーバーへの接続が急に遅くなる
お世話になっております。
上記内容にて、現在問題解決と原因究明に困っており、質問させて頂きました。

前提・実現したいこと

WindowsPC の localhost(Apache2.2)環境にて、PHPアプリケーションの開発をしております。

DBサーバーとして利用しているのは、同LAN上に存在するLinux(CentOS)端末にあるMySQLを使用しています。

いつものように、アプリケーションの動作を確認する為にlocalhost接続でいつものように操作しておりましたが
ある日から、DB関連の処理が走る時に、リクエストが帰ってくるまでの時間が極端に遅くなりました。
※とても遅くなるだけで、処理自体は完遂してくれます。

DB処理を行わない、http のみのリクエストはいつも通りの速度でした。

DBサーバーであるLinux端末のreboot, mysqlサービスの再起動を行いましたが特に改善せず。
今までは、特に意識せず普通に使えていただけに、原因がわからず困っています。

現在は下記の「試したこと」の内容で応急処置として改善していますが
今までは、このような設定などを意識せずに普通に使えていたので
「ある日突然遅くなる」という状況が理解できず、経験者の方の意見が頂きたく思います。

また同じような経験がある方で「こんな方法で改善した」という方がいらっしゃったら、教えて頂ければ幸いです。

Linux(LANP)環境の知識・経験にも乏しく
下記のような設定がごく一般的である場合は、ご指摘頂ければ幸いです。

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

試したこと・調べたこと

色々と、Googleを使って調べていたら
【MySQLのDNS逆引き】
というキーワードが引っ掛かり
/etc/sysconfig/network-scripts/ifcfg-ethX
の設定からDNSを使用しないように設定を変更し「networkをrestart」したところ
レスポンス速度としては、以前と同じような形になり改善しました。

しかし、DNSを無効化した影響で sendmail が失敗するようになりました(当たり前ですが)
それでは困るので、DNS無効化を解除した上で、
/etc/hosts 
にMySQLに接続してくるPCipアドレス(ipv4)を追記し「networkをrestart」したところ、
hosts に設定したPCからのレスポンス速度は、一応改善されました。
現在は、上記の内容で応急処置としております。

MySQLのユーザーについて

関係あるかわかりませんが・・・
開発中のため、特に権限設定など行わず
ホスト:%ALL 権限を与えております。

補足情報

どんな情報を提供すれば良いのかすらあやふやです。
ご指摘頂ければ、情報を追加致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+5

--skip-name-resolve オプションをmysqld起動時のオプションに加える。

MySQLと名前解決

MySQLにおいて名前解決は,コネクションの確立・認証のフェーズで利用されます。デフォルト(名前解決が有効)な場合のシーケンスはざっくりと以下のようになります。

  1. IPアドレスがMySQL内の名前解決キャッシュに載っているかどうかを確認する
  2. IPアドレスからホスト名に逆引きをかける(getnameinfo)
  3. 得られたホスト名を正引きし,IPアドレスを得る(getaddrinfo)
  4. 検証に成功した場合,これ以降の「接続元ホスト」はIPアドレスまたはホスト名の
    「検証に成功したどちらか一方」を利用する
  5. ユーザー名,パスワードなどの認証に進む

名前解決が無効(skip-name-resolveオプションが有効)な場合,
上記1,2,3のフェーズがスキップされ,4で検証される対象はIPアドレスのみとなります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/10 14:35

    回答ありがとうございます。
    わかりやすく、MySQLと名前解決のシーケンスを記述下さり、理解が少し深まりました。

    現在のMySQLの設定、特に名前解決に関する所はデフォルトであると認識しているため、1~5までのフェーズが行われていると思われます。
    恐らくIPアドレスからホスト名の逆引きでタイムアウトが起こるまでの時間で、リクエスト時間が増えているのかなと想像するのですが
    タイムアウト自体は、この問題が起こる前からあったと思うのですが、ある日突然おこるようなものなのでしょうか。

    キャンセル

  • 2016/11/10 16:31

    ネットワーク環境は、運用されている場所によりますので発生条件など一般論では言えないです。
    想定するならですが、
    MySQLの動作しているサーバのDNS検索によるものなので、/etc/resolv.confの内容が更新される契機で急にDNSが引けなくなる場合は有ります。特にNetworkManagerのプロセスが起動していると管理者の想定と違った動作をする場合があります。

    キャンセル

  • 2017/03/23 09:12

    お世話になっております。
    期間がずいぶんと空いてしまいましたが、この問題は既に解決しております。

    キャンセル

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

  • ただいまの回答率 90.32%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る