Directory server 389 stuck



  • i've got a problem. Recently i installed kolab groupware on linux mint 18.2 based on ubuntu 16.04. Because we use multiple domains, i configured the server to support multiple domains for email. Now the 389 directory server crashes every day. It depends on the load the server receives. I've tried to configure the 389 directory with the /etc/dirsrv/
    <IRC-Source_92738> slapd-mail/dse.ldif file. There i edited the maxdescriptors value and tried to debug without success. I hope you guys can help me!



  • We have recently had similar issues.

    To check your current values:

     for i in $(pgrep ns-slapd); do
       echo -ne "pid: $i ";  
       grep 'Max open files' /proc/$i/limits; 
     done
    

    As far as I understand, nsslapd-maxdescriptors will set the soft limit, and the configuration in /etc/sysconfig/dirsrv.systemd will set the hard limit.

    Here is my Ansible script for CentOS7 that I use, and dirsrv has behaved since then:

    - name: set LimitNOFILE
      lineinfile:
        path: /etc/sysconfig/dirsrv.systemd
        regexp: '^LimitNOFILE=.*'
        line: 'LimitNOFILE=10240'
    
    - name: restart dirsrv
      systemd:
        name: dirsrv.target
        daemon_reload: yes
        state: restarted
    
    - name: set nsslapd-idletimeout
      shell: |
        cd /root
        echo "dn: cn=config" > idletimeout.ldif
        echo "changeType: modify" >> idletimeout.ldif
        echo "replace: nsslapd-idletimeout" >> idletimeout.ldif
        echo "nsslapd-idletimeout: 300" >> idletimeout.ldif
        pwd=`cat /etc/kolab/kolab.conf | grep "^bind_pw" | cut -d " " -f 3`
        ldapmodify -x -h localhost -D "cn=Directory Manager" -w "$pwd" -f idletimeout.ldif
        rm idletimeout.ldif
    
    - name: set nsslapd-maxdescriptors
      shell: |
        systemctl stop dirsrv.target
        sleep 3
        path=$(find /etc/dirsrv -type d -name slapd-*)
        sed -i "s/nsslapd-maxdescriptors:.*/nsslapd-maxdescriptors: 8192/g" $path/dse.ldif
        systemctl start dirsrv.target
    

Log in to reply