https://bugs.openldap.org/show_bug.cgi?id=9533
Issue ID: 9533
Summary: OpenLdap hangs when creating many databases
Product: OpenLDAP
Version: 2.4.57
Hardware: All
OS: All
Status: UNCONFIRMED
Severity: normal
Priority: ---
Component: slapd
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
I initialize openldap cluster with config:
```
dn: cn=config
objectClass: olcGlobal
cn: config
olcPidFile: /run/openldap/slapd.pid
olcArgsFile: /run/openldap/slapd.args
olcServerID: 1 ldaps://ldap.ldap01.xxx.ru:637
olcServerID: 2 ldaps://ldap.ldap02.xxx.ru:637
olcServerID: 3 ldaps://ldap.ldap03.xxx.ru:637
olcTLSCACertificateFile: /etc/openldap/ssl/ca.pem
olcTLSCertificateKeyFile: /etc/openldap/ssl/private.key
olcTLSCertificateFile: /etc/openldap/ssl/server.crt
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/openldap
olcModuleload: back_mdb.so
olcModuleload: syncprov.so
dn: cn=schema,cn=config
objectClass: olcSchemaConfig
cn: schema
include: file:///etc/openldap/schema/core.ldif
include: file:///etc/openldap/schema/cosine.ldif
include: file:///etc/openldap/schema/inetorgperson.ldif
include: file:///etc/openldap/schema/nis.ldif
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcAccess: {0}to * by
dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage
olcRootPW: Ohtheis7ur9Qua6e
olcSyncRepl:
rid=001
provider=ldaps://ldap.ldap01.xxx.ru:637
binddn=cn=config
bindmethod=simple
credentials=Ohtheis7ur9Qua6e
searchbase=cn=config
type=refreshAndPersist
retry="5 5 300 5"
timeout=1
olcSyncRepl:
rid=002
provider=ldaps://ldap.ldap02.xxx.ru:637
binddn=cn=config
bindmethod=simple
credentials=Ohtheis7ur9Qua6e
searchbase=cn=config
type=refreshAndPersist
retry="5 5 300 5"
timeout=1
olcSyncRepl:
rid=003
provider=ldaps://ldap.ldap03.xxx.ru:637
binddn=cn=config
bindmethod=simple
credentials=Ohtheis7ur9Qua6e
searchbase=cn=config
type=refreshAndPersist
retry="5 5 300 5"
timeout=1
olcMirrorMode: TRUE
dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
```
Then I try to create many bases in a loop:
My base template:
```
/etc/openldap/conf.d # cat > newdb.ldiff.template <<EOF!
dn: olcDatabase={#DITID#}mdb,cn=config
changetype: add
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {#DITID#}mdb
olcSuffix: dc=devmail,dc=srv,dc=local
olcDbMaxSize: 1073741824
olcRootDN: cn=admin,dc=devmail,dc=srv,dc=local
olcRootPW: 123
olcDbDirectory: /var/lib/openldap/openldap-data/
olcDbIndex: objectClass eq
olcSyncRepl:
rid=001
provider=ldaps://ldap.ldap01.xxx.local:637
binddn=cn=admin,dc=devmail,dc=srv,dc=local
bindmethod=simple
credentials=123
searchbase=dc=devmail,dc=srv,dc=local
type=refreshAndPersist
retry="5 5 300 5"
timeout=1
olcSyncRepl:
rid=002
provider=ldaps://ldap.ldap02.xxx.local:637
binddn=cn=admin,dc=devmail,dc=srv,dc=local
bindmethod=simple
credentials=123
searchbase=dc=devmail,dc=srv,dc=local
type=refreshAndPersist
retry="5 5 300 5"
timeout=1
olcSyncRepl:
rid=003
provider=ldaps://ldap.ldap03.xxx.local:637
binddn=cn=admin,dc=devmail,dc=srv,dc=local
bindmethod=simple
credentials=123
searchbase=dc=devmail,dc=srv,dc=local
type=refreshAndPersist
retry="5 5 300 5"
timeout=1
olcMirrorMode: TRUE
dn: olcOverlay=syncprov,olcDatabase={#DITID#}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
EOF!
```
For example 100 dbs
```
for I in $(seq 1 100);do
sed -e "s/devmail/devmail${I}/g" -e "s/#DITID#/${I}/g"
./newdb.ldiff.template > newdb${I}.ldiff
ldapmodify -H ldapi://%2Fvar%2Frun%2Fopenldap%2Fldapi -Y EXTERNAL -f
./newdb${I}.ldiff
done
```
As a result my cluster first slows down and then nodes hang up. Logs show
nothing, no activity. Connect via ldapmodify or other cli utilities just hangs.
In such a situation rebooting a single node of the cluster helps, until the
cluster becomes unresponsive once again.
Please tell me what could be the problem? Could my cluster configuration be
incorrect?
The problem manifests itself only in situation where I have many databases,
e.g. more than 10. With one-two dbs all works as expected. I have also tried
using different in-built database backends, to no avail.
--
You are receiving this mail because:
You are on the CC list for the issue.