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

スポンサーリンク

MySQLでconnection poolingを行いたい

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

MariaDB MaxScale is a next-generation database proxy that manages security, scalability and high availability in scale-out deployments. Learn more today.

データベース

テスト環境

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

maxscale-sample - Connection pooling test of maxscale for MySQL

テストデータは テストデータ・ジェネレータ を使ってみた。画面に表示されたデータを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は相性が悪いと言われているが、間にこういったプロキシーを挟めば、なんとかできるのではないだろうか?失敗事例すら見かけないのが不安だが。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

フォローする

この記事へのコメント

Loading Facebook Comments ...

No Trackbacks.