Bug 1109378

Summary: Environment variables are not passed when DS is started via service
Product: Red Hat Enterprise Linux 7 Reporter: Noriko Hosoi <nhosoi>
Component: 389-ds-baseAssignee: Noriko Hosoi <nhosoi>
Status: CLOSED ERRATA QA Contact: Viktor Ashirov <vashirov>
Severity: unspecified Docs Contact:
Priority: low    
Version: 7.1CC: nkinder, rmeggins
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: 389-ds-base-1.3.3.1-1.el7 Doc Type: Bug Fix
Doc Text:
Environment variables (except TERM and LANG) are ignored if a program is started via service. For tuning to prevent the memory fragmentation, mallopt environment variables (SLAPD_MXFAST, MALLOC_TRIM_THRESHOLD_ and MALLOC_MMAP_THRESHOLD_) are needed. To control them explicitly and to provide the same instructions to the service, the environment variables are made to be configurable via the Directory Server's configuration parameter.
Story Points: ---
Clone Of: 1109377 Environment:
Last Closed: 2015-03-05 09:35:31 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1109377, 1110550    
Bug Blocks:    

Description Noriko Hosoi 2014-06-13 18:48:22 UTC
+++ This bug was initially created as a clone of Bug #1109377 +++

This bug is created as a clone of upstream ticket:
https://fedorahosted.org/389/ticket/47693

Environment variables (except TERM and LANG) are ignored if a program is started via service.

If it is started with systemctl, it takes this COMMAND and the values are correctly passed to the server.
systemctl set-environment SLAPD_MXFAST=0 MALLOC_TRIM_THRESHOLD_=4096

But to control them explicitly and to provide the same instructions to the service and systemctl, it'd be good to have some variables (proposing SLAPD_MXFAST, MALLOC_TRIM_THRESHOLD_, and MALLOC_MMAP_THRESHOLD_) configurable.

Comment 1 Noriko Hosoi 2014-06-18 00:01:26 UTC
Steps to Reproduce:
1. setup 2 way mmr
2. add then delete 1 million entries
3. add 250000 entries

Set these config parameters in cn=config
nsslapd-malloc-mxfast: 0
nsslapd-malloc-trim-threshold: 4069
nsslapd-malloc-mmap-threshold: 33554432

Restart the server.

Repeat these searches for 1 hour.
ldapsearch 'objectclass=nsTombstone'
ldapsearch 'objectclass=*'

If the server's process size is sane, the fix is verified.

Comment 3 Sankar Ramalingam 2015-01-21 14:39:07 UTC
Added and Deleted about 50000+ entries with these config parameters setting in cn=config. It took more than 6-8hrs to complete adding/deleting 50000+ entries.
nsslapd-malloc-mxfast: 0
nsslapd-malloc-trim-threshold: 4069
nsslapd-malloc-mmap-threshold: 33554432

And then, ran ldapsearch using "objectClass=nsTombstone" and objectClass=*.

There are no issues with memory observed. Also, there are no failures or memory issues reported from the reliab15 execution for 389-ds-base-1.3.3.1-10.

Hence, marking the bug as Verified.

Comment 5 errata-xmlrpc 2015-03-05 09:35:31 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHSA-2015-0416.html