新LDAPベンチマークツール: lb

Sun, Dec 6, 2015

OpenLDAP と仲間たち Advent Calendar 2015 6日目。

かつてLDAPのベンチマークといえばSLAMDが主流でした、しかしSLAMDは既に開発プロジェクトが消滅しメンテナンスされていません。

そこで今回はlbという新しいLDAPのベンチマークツールを紹介します。

lbはGolangで書かれていて軽量スレッドのGoroutineを使って並列処理を行っています。

SLAMDはWebインターフェースで操作するので、様々な条件のベンチマークを実行するために何度もWebインターフェースをクリックする必要がありました。

lbはApache Benchによく似たインターフェースのコマンドラインツールですので、簡単にベンチマークを自動化できます。

RIP SLAMD

lbのインストール

依存パッケージのインストール

  • Debian/Ubuntuの人
# apt-get install build-essential golang libldap2-dev
  • RHEL7/CentOS7の人
# yum groupinstall -y "Development Tools"
# yum install -y golang openldap-devel

環境変数の設定

$ 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