MySQL SSL接続時のパフォーマンスを計測してみた
「Ubuntu 10.10のMySQLとSSL通信でJDBC接続する」でMySQLのSSL通信を試してみたので、次にSSL通信時にパフォーマンスがどれほど落ちるのか調査してみました。
ドキュメントには30%から50%パフォーマンスが落ちるとかかれています。
計測環境
計測ツールは標準のmysqlslapを使用。
マシンは、MySQLがインストールされているホストとmysqlslapを実行するホストの2台を用意しました。
ちなみにサーバーはどちらもNIFTYクラウドのSmall1。
計測したMySQLのバージョンは5.0.77、設定はCentOS 5.3にyumでインストールしたデフォルトのままです。
リモートからの接続の許可と接続確認
テストなので全ホストからアクセス可能に設定。
http://rfs.jp/server/mysql/02/02.html
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'password' WITH GRANT OPTION;
mysqlクライアントで接続確認
cacert.pem、client-cert.pem、client-key.pemをクライアントホストにコピーしておく
$ mysql -h <host_name> -uroot -p --ssl-ca=cacert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
mysqlslapもSSL接続オプションは同様のものを指定します。
http://dev.mysql.com/doc/refman/5.1/ja/secure-using-ssl.html
計測
公式ドキュメントのmysqlslapの説明:
http://dev.mysql.com/doc/refman/5.1-olh/ja/mysqlslap.html
書き込みはIO待ちが影響しそうなので読み込みのみで計測。
SSLあり
$ mysqlslap -h 10.100.xxx.yyy -uroot -p --ssl-ca=cacert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem --concurrency=10 --iterations=10 --number-of-queries=10000 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql --auto-generate-sql-load-type=read Enter password: Benchmark Average number of seconds to run all queries: 4.136 seconds Minimum number of seconds to run all queries: 4.057 seconds Maximum number of seconds to run all queries: 4.341 seconds Number of clients running queries: 10 Average number of queries per client: 1000
read only SSLなし
$ mysqlslap -h 10.100.xxx.yyy -uroot -p --concurrency=10 --iterations=10 --number-of-queries=10000 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql --auto-generate-sql-load-type=readEnter password: Benchmark Average number of seconds to run all queries: 4.174 seconds Minimum number of seconds to run all queries: 3.982 seconds Maximum number of seconds to run all queries: 4.404 seconds Number of clients running queries: 10 Average number of queries per client: 1000
ほぼ、影響なし。ローカル同士で計った場合もほぼ同じだったのでSSL接続にしてもほとんどオーバーヘッドが無いってことでしょうか。
mysqlslapの動作についてもう少し調べて見ないとこの結果が妥当かは判断つかないな。