Skip to content

mroonga/windows-resource-leak-test

Repository files navigation

README

確認済みの再現環境

Windows:

  • Windows Server 2012 R2
  • Windows 10

MariaDB + Mroonga:

確認方法

Windowsを用意します。たとえばWindows 10など再現が確認されていない環境でも大丈夫です。その環境では再現しないことがわかるというのも重要な情報です。

上述の再現が確認されているMariaDB + Mroongaのどれかをダウンロードして、展開します。

このリポジトリーをcloneします。次のファイルを個別にダウンロードしてもよいです。

テスト用クエリー実行スクリプトquery.ps1ではC:\Administrator\windows-resource-leak-test\以下にこのリポジトリーの内容があることを仮定しているので、別の場所にclone・ダウンロードした場合はquery.ps1を書き換えてください。

このリポジトリー内にあるmy.iniを使ってmysqld.exeを起動します。

> cd ...\mariadb-10.1.29-with-mroonga-7.09-winx64
> bin\mysqld.exe --defaults-file=C:\Users\Administrator\windows-resource-leak-test\my.ini

別のターミナルでテスト用のデータベースを作ります。

> cd ...\mariadb-10.1.29-with-mroonga-7.09-winx64
> bin\mysql.exe -u root -e 'create database mroonga_test'

このリポジトリー内のテストデータxxxxxxxx_dat_static_page2.sqlをテスト用のデータベースにロードします。

> cd ...\mariadb-10.1.29-with-mroonga-7.09-winx64
> bin\mysql.exe -u root mroonga_test < C:\Users\Administrator\windows-resource-leak-test\xxxxxxxx_dat_static_page2.sql

このリポジトリー内のテストスクリプトquery.ps1を実行します。セキュリティーのため、PowerShellスクリプトはデフォルトでは実行できないようになっています。管理者権限でSet-ExecutionPolicy Unrestrictedを実行して制限を緩める必要があります。

> cd C:\Users\Administrator\windows-resource-leak-test
> Set-ExecutionPolicy Unrestricted
> .\query.ps1

このスクリプトを実行し続け、約52万クエリー発行程度で以下のどれかの問題が発生するはずです。

  • mysqld.exeが次のようなエラーログを出力する

    2018-01-18 21:12:52 3620 [ERROR] Error in accept: システムのバッファー領域が不足しているか、またはキューがいっぱいなため、ソケット操作を実行できませんでした。
    
  • mysqld.exeが停止する

  • mysqld.exeは停止しないが、接続を受け付けない

なお、ターミナルを複数立ち上げて同時に実行すると問題発生までの時間が短くなります。

補足情報

  • 再現する環境と再現しない環境があることを確認済みです。再現するかどうかの違いがどこからくるかわかっていないので、それを知りたいです。

  • ストレージエンジンをMroongaからMyISAMに変更するとすでに再現している環境でも再現しなくなります。

License

MySql.Data.dll: GPLv2

Extracted from MySQL Connector/Net.

Others: Public domain

About

Test tools for resource leak on Windows

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published