Navigation Menu

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows: クエリーを実行し続けるだけで接続できなくなる #190

Closed
kou opened this issue Jan 25, 2018 · 17 comments
Closed

Comments

@kou
Copy link
Member

kou commented Jan 25, 2018

再現手順・再現に必要なデータは https://github.com/mroonga/windows-resource-leak-test にまとめたので、Windowsを持っている人は追試して再現したかどうかをコメントで教えてください。

@kou
Copy link
Member Author

kou commented Jan 26, 2018

@kou
Copy link
Member Author

kou commented Jan 26, 2018

こういうときにどういう情報を取得しておいたらいいか、アイディアがある人はコメントで教えてもらえるとうれしいです。このSQLを実行してこういう値を監視しておくとよい、とか。

@fuku1
Copy link

fuku1 commented Jan 26, 2018

事象の発生元の者です。
本番機、テスト機のwindows server2012r2でも発生しますし、ローカルPCのwindows10でも発生しております。ローカルPCで再現させた際のエラー内容、ログなどを参考情報としてまとめました。
win10検証状況.xlsx
何か気付かれたことがあればコメントお願いします。

@kagami-h
Copy link

win10検証状況.xlsx
だと、PowerShell を 2つ起動させて「.\query.ps1」を同時実行が必要との事でしょうか?

1個で回していたのですが、52万クエリーまでは私の環境だと10時間以上はかかりそうです……。

複数個回すと再現が早いとか、もっと実行速度を早くする方法があればテストしやすいかも知れないですが、どうでしょうか?

@fuku1
Copy link

fuku1 commented Jan 29, 2018

はい。
PowerShellを複数起動させて実行すると、事象発生までが早くなります。
マシンスペック次第で同時起動の数を増やせば早く発生させられます。
あとは複数端末あれば、複数端末から起動するのもありです。

簡易的に作ったデータとクエリのため、時間がかかっている状況です。時間短縮については検討します。

@kagami-h
Copy link

再現しました。
現象としては、ハンドルの開放がなされていないようです。
ハンドル数が 16,711,677 個で接続不可になっていました。

パフォーマンスモニターで、mysqld の「Process\Handle Count:」を監視するか、
タスクマネージャーの詳細で、ハンドルの列を追加して降順で確認できると思います。

netstat -ano では問題ないようでした。

@kagami-h
Copy link

再現した環境:
OS 名: Microsoft Windows 10 Home
OS バージョン: 10.0.16299 N/A ビルド 16299
物理メモリの合計: 16,305 MB

「.\query.ps1」を実行するとハンドル数が上がり、止めても下がらず、mysqld の再起動まで開放されないのが確認できました。

誰か myisam で追試を行い対比して貰えますか?

@fuku1
Copy link

fuku1 commented Jan 29, 2018

コメントありがとうございます。
私の方でも同様に確認してみます。

@fuku1
Copy link

fuku1 commented Jan 29, 2018

まだ途中ですが、Mroongaではハンドル数が増加し続け、
MyISAMではハンドル数がほぼ一定であることが確認できました。

@fuku1
Copy link

fuku1 commented Jan 29, 2018

OS windows server 2012 R2 standard
でも同様にハンドル数が増加し続け、16,711,680で接続が不安定になり、その後mysqld.exeが終了しました。

@kou
Copy link
Member Author

kou commented Jan 29, 2018

ありがとうございます。
たしかに、ハンドル数の増加は私の環境でも確認できました。

ということで、原因を調べることができ、修正できました。
今月のリリースには間に合わなかったのですが、次回は2月9日にリリースする予定なのでそれで確認してもらえると助かります。

長々と再現に協力してもらってありがとうございました。

@kagami-h
Copy link

ご対応いただきましてありがとうございます!

@fuku1
Copy link

fuku1 commented Jan 29, 2018

修正ありがとうございます。
リリース頂いたら確認致します。
非常に困っていたので助かりました。

@kou
Copy link
Member Author

kou commented Feb 10, 2018

@kagami-h
Copy link

開始と同時に数ハンドル増えただけで、増大し続けるのが解消されているのを確認しました。

@fuku1
Copy link

fuku1 commented Feb 13, 2018

ありがとうございます。ハンドル数が増加し続けないことを確認しました。
他の要因も無いか継続実行していますが、72時間クエリを投げ続けても今のところ問題ありません。

@kou
Copy link
Member Author

kou commented Feb 13, 2018

確認ありがとうございます。
大丈夫そうですね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants