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.

Reply via email to