OpenLDAP と仲間たち Advent Calendar 2015 6日目。
かつてLDAPのベンチマークといえばSLAMDが主流でした、しかしSLAMDは既に開発プロジェクトが消滅しメンテナンスされていません。
そこで今回はlbという新しいLDAPのベンチマークツールを紹介します。
lbはGolangで書かれていて軽量スレッドのGoroutineを使って並列処理を行っています。
SLAMDはWebインターフェースで操作するので、様々な条件のベンチマークを実行するために何度もWebインターフェースをクリックする必要がありました。
lbはApache Benchによく似たインターフェースのコマンドラインツールですので、簡単にベンチマークを自動化できます。
lbのインストール
依存パッケージのインストール
- Debian/Ubuntuの人
# apt-get install golang
- RHEL7/CentOS7の人
# yum install -y golang
※旧バージョンではOpenLDAP開発環境が必要でしたが最新版では必要ありません。
環境変数の設定
$ export GOPATH=~/go
$ export PATH=$GOPATH/bin:$PATH
ビルド&インストール
$ go get github.com/hamano/lb
使い方
セットアップ
- ベースエントリの投入
$ lb setup base -b 'dc=example,dc=com' ldap://localhost/
- 1000個のエントリを投入
$ lb setup person --cn 'user%d' --last 1000 ldap://localhost/
BINDベンチマーク
$ lb bind -c 10 -n 1000 -D 'cn=user%d,dc=example,dc=com' -w secret --last 10 ldap://localhost/
このベンチマークでは以下のDNでランダムにBINDリクエストを行います。
cn=user1,dc=example,dc=com
...
cn=user1000,dc=example,dc=com
SEARCHベンチマーク
$ lb search -c 10 -n 1000 -a "(cn=user%d)" --last 1000 -s sub ldap://localhost/
このベンチマークでは以下のようなランダムなサーチフィルターで検索を行います。
(cn=user1)
...
(cn=user1000)
ADDベンチマーク
$ lb add -c 10 -n 1000 ldap://localhost/
このベンチマークでは以下のような1000個のエントリーを10並行で投入します。
dn: cn=${THREADID}-${COUNT},dc=example,dc=com
cn: ${THREADID}-${COUNT}
sn: sn
userPassword: secret
–uuidオプションをつけることでcnにUUIDを指定できます。
MODIFYベンチマーク
$ lb modify -c 10 -n 1000 --attr sn --value modified ldap://localhost/
このベンチマークは以下のようなランダムなDNに対してのSN属性を変更するベンチマークを実行します。
cn=0-0,dc=example,dc=com
...
cn=9-999,dc=example,dc=com