MaxScaleでMySQLのコネクションをプールする
PR

MaxScaleでMySQLのコネクションをプールする

データベース ソフトウェア
記事内に広告が含まれています。
スポンサーリンク
スポンサーリンク
スポンサーリンク

MySQLでconnection poolingを行いたい

JavaでJdbc使えば、connection poolingなんて普通でしょ?
LL言語でMySQLとの接続数を減らせないかということで、Database Proxy, Database Router, MaxScale | MariaDBを試してみた。効果あり。

MariaDB MaxScale | MariaDB
With MariaDB MaxScale, database and application processes are fully decoupled, enabling admin processes to run without a...

データベース

スポンサーリンク

テスト環境

MaxScaleでコネクションを減らせるのか、テスト環境を作って試してみる。Docker便利だ。公式イメージを使って手短に用意する。

GitHub - hiroaki0404/maxscale-sample: Connection pooling test of maxscale for MySQL
Connection pooling test of maxscale for MySQL. Contribute to hiroaki0404/maxscale-sample development by creating an acco...

テストデータは テストデータ・ジェネレータ を使ってみた。画面に表示されたデータをGoogleスプレッドシートに貼って、csv出力してから bulk insert のsqlに手直しして、DBに投入。テーブル構造はmaxscale-sample/rdb/sql at master · hiroaki0404/maxscale-sampleを参照。

テスト用のWebアプリも手抜き。pythonってほとんど使った事ないけど、このテストではLL言語でアプリを書きたかったので、試してみた。

スポンサーリンク

テスト実施

docker-compose upとすれば、DB, MaxScale, Webアプリが立ち上がる。DBコンテナにnet-toolsを入れて、netstatでコネクションをみながら、Webアプリに対してApache Benchでアクセスしてみる。すると、同時アクセス数が増えてもDBのコネクション数は増えていない。

結論というには雑だけど

雑なテストだけど、同時アクセス数を100にしてもmysql側のコネクションは増えない(2のままだった)ので、効果はあった。

「コネクションプーリング」と言っても、実は2つのことを指しているので(コネクションプーリングの話 – naoyaのはてなダイアリー参照)、「接続数を減らす効果があるか」という点に絞り、環境を作って試してみた。AWS LambdaとRDBは相性が悪いと言われているが、間にこういったプロキシーを挟めば、なんとかできるのではないだろうか?失敗事例すら見かけないのが不安だが。

コメント

タイトルとURLをコピーしました