私たちのWeb環境は2つのサーバーで構成されています。
通常、これら2つは完全に連携して機能します。ただし、セカンダリNICの専用LAN(各マシンには4つあります)を介して会話させようとすると、状況が不安定になります。 172.16.1.0/24サブネット上に構成された両方のマシンにNIC#2があり、ゲートウェイまたはDNSサーバーはありません(明らかに、これら2つのシステムだけなので)、プライベートIPを配置します各マシンのアドレスを他のホストファイルに挿入します。これを実行すると、両方のマシンのルーティングテーブルに問題がないように見えます。
2つのNICの間に直接ドレープされたクロスケーブルと、ラック内のスイッチの専用VLANを介して、これを試しました。どちらの場合も、断続的な接続の問題が発生します。失敗する接続の割合はかなり少ないですが、重大な問題を引き起こすのに十分であり、メインネットワーク接続に切り替える必要があります。これにより、スイッチ上の他のすべてのトラフィックおよびホストと競合します。
アプリケーションログに表示される完全なエラーメッセージ:
SQLSTATE[HY000] [2013] Lost connection to MySQL server at 'reading initial communication packet', system error: 110
私はこれが正しく機能しない原因となっている本当に愚かなことをしていますか? MySQLをチェックインして、接続に失敗することがある理由を説明できるものはありますか?
私が最初に除外するのは、ネットワークではなくMySQLのパケットサイズです。特にWebサイトでBLOBデータを使用している場合は、 max_allow_packet を十分に大きい値に設定してください。
この同じ問題に関して奇妙なフォーラムを見ました 。フォーラムでは、リモート接続にもかかわらず、バインドアドレスの削除や操作について話し合っています。
これを見て、それが役立つかどうかを確認してください。
ログを確認してください。最近同じ問題が発生しました。単純なクエリでMySQLが接続を失う原因となったのは、破損したinnodb名前空間であることが判明しました。
-トニー
MySQLエラー110は「接続がタイムアウトしました」のようです。接続がMySQLの外部で機能することを確認してください(他のホストにpingを実行し、MySQLポート3306にtelnetしてみてください)。これが機能しない場合は、サーバーのファイアウォール設定を確認してください。ネットワークタイプを「ドメインプロファイル」に設定してみてください。それ以外の場合、Windows Server2008は非常に奇妙な動作をするのが好きです。