yoku0825様
とても分かり易い説明ありがとうございます。
- mysqld, クライアントのホストはそれぞれ過負荷になったりパケロスが発生していなかったか
→WEBサーバ及びDBサーバのリソースをモニタリングしておりますが、
どちらも過負荷に陥っているようには見えませんでした。
また、WEBサーバ側はパケットロスは発生しておりませんでした。
mysqld側については、クラウドベンダー側に問い合わせを行いたいと思います。
- 中間にプロキシやソフトウェアルーターをはさんでいる場合、そこが高負荷になっていないか
→プロキシやソフトウェアルータははさんではいないです。
上記を確認した上で、サーバのインスタンスサイズのアップを検討したいと思います。
進展がありましたら、ご報告させて頂きます。
yoku0825といいます。
"Lost connection to MySQL server at 'reading initial communication packet'" は
コネクションを確立するシーケンスの最初のパケットの読み取りに失敗(読み取ったパケットが0バイト)の場合に発生します。
通常、クライアントからmysqldの3306(などの)ポートを叩くと、
mysqldからバージョン番号や認証のためのダイジェストなどを詰めたグリーティングメッセージが返ってくるのですが、
3306を叩いてもそれが返ってこなかったために起こります。
3306を叩くことができなかった場合や、叩いた後に返ってきても不正だった場合は違うエラーメッセージになるので、
「接続を開始しようとはしたが返事がない ~~ただのしかばねのようだ~~ 」という状況になります。
余談ですが、検索した時にファイアウォールやhost.allowなどが解決策として出てくるのは、
クライアントより下のレイヤー(OS周りなど)で戻りのパケットがドロップされていると
クライアントからはパケットが読み取れないのでこのエラーに到達するためです。
「エラー発生直後に再接続処理を行うと正常に接続が行える」ことから、
OSやNWのレイヤーで設定が間違っている可能性は低いとは思いますので、
- mysqld, クライアントのホストはそれぞれ過負荷になったりパケロスが発生していなかったか
- 中間にプロキシやソフトウェアルーターをはさんでいる場合、そこが高負荷になっていないか
あたりが確認ポイントかなぁと思います。
- WEBサーバーのインスタンスサイズを1ランク上げる
- 再発しなくなればWEBサーバーのスペック不足
- 再発するならDBサーバーのインスタンスサイズを1ランク上げる
- 再発しなくなればDBサーバーのスペック不足
- まだ再発するならもう一度WEBサーバーのインスタスサイズを上げるところから
- 上記を十分繰り返しても再発する場合、中間の何かがおかしい可能性が高い
- VPCを作り直してみるとかそういうやつです
みたいな切り分けになるかなと思います。
ご参考までに。
yoku0825,
2018年12月11日(火) 12:03 田中正志 <m.tanaka056245@gmail.com>:
>
> 御世話になります。
> 田中と申します。
>
> 次のような構成でシステムを運用しております。
> ■WEBサーバ
> ・CentOS6.9
> ・Apache 2.2.15
> ・php 5.3.3
>
> ■DBサーバ
> ・某社PaaSサービスを利用
> ・MySQL 5.6.22
>
> PaaSのMySQLを利用しているため、こちらのメーリングリストに質問を投稿しても良いものが悩みましたが、エラーの原因究明が手詰まり状態のため投稿させていただきました。
>
> 普段はWEBサーバからDBサーバへは正常に接続が行えておりますが、
> 稀に下記エラーが発生して接続エラーになることがあります。
>
> [2013] Lost connection to MySQL server at 'reading initial communication packet', system error: 0
>
> エラー発生直後に再接続処理を行うと正常に接続が行えます。
> エラーについて調べてみたところ、ファイアウォールやhost.allowなどの設定漏れとの情報が多く見られましたが、
> 平常時は問題なく接続が行えているため、そのあたりの設定に問題はないと考えております。
> 他に有益な情報を見つけることができませんでした。
> また、PaaS提供会社からはインフラ基盤等には異常はないとの回答をいただいております。
>
> 原因として何が考えられるのか御知恵をお貸しいただけますと幸いです。
> 宜しくお願いいたします。
>