[CentOS] persistent change of max_stack_depth

Fri Aug 14 16:30:37 UTC 2015
Thomas Eriksson <thomas.eriksson at slac.stanford.edu>

On Aug 14, 2015 08:45, Jason Warr <jason at warr.net> wrote:
>
> On Fri, 2015-08-14 at 16:31 +0100, Michael H wrote: 
> > Hi Thomas, 
> > 
> > 
> > > Could anybody point me in the right direction for setting the kernel 
> > > parameter, max_stack_depth, to 10240 for database tuning? 
> > > 
> > > I have currently set it by running 'ulimit -s 10240' but this does not 
> > > survive a reboot. 
> > > 
> > > 
> > 
> > Thanks for the response, I've been nosing around that file recently but 
> > noted the first two lines; 
> > 
> > #This file sets the resource limits for the users logged in via PAM. 
> > #It does not affect resource limits of the system services. 
> > 
>
> What CentOS version? 
>
> > > Look at the file /etc/security/limits.conf 
> > > 
> > > For documentation, 'man limits.conf' 
> > > 
> > 
> > I added these two lines to the end of the file 
> > 
> > *               soft    stack   12288 
> > *               hard    stack   12288 
> > 
> > in an attempt to set the stack depth to 12MB so that I can configure 
> > postgresql max_stack_depth = 10MB. 
> > 
> > I rebooted, ulimit -s shows 12288. 
> > 
> > When I restart my service (#It does not affect resource limits of the 
> > system services.) becomes apparent. 
> > 
> > Aug 14 16:22:17 db1 pg_ctl[3177]: < 2015-08-14 16:22:17.839 BST >LOG: 
> > invalid value for parameter "max_stack_depth": 10240 
> > Aug 14 16:22:17 db1 pg_ctl[3177]: < 2015-08-14 16:22:17.839 BST >DETAIL: 
> >   "max_stack_depth" must not exceed 7680kB. 
> > Aug 14 16:22:17 db1 pg_ctl[3177]: < 2015-08-14 16:22:17.839 BST >HINT: 
> > Increase the platform's stack depth limit via "ulimit -s" or local 
> > equivalent. 
> > 
> > So, I then run 'ulimit -s 12288' and still can't restart my service. 
> > 
> > How can I increase stack depth for system processes, not just PAM 
> > authenticated users? 
> > 
>
> If this is CentOS 7 then you may need to put the ulimit directives in the service file. 
>
> An example is I needed to increase the NOFILE limit for nfs-secure on a Fedora 20 machine so I set 
>
> LimitNOFILE=16384 
>
> In /etc/systemd/system/nfs-secure.service 
>
>

Jason is probably on the right track here.

If it's centos 6 stick 'ulimit -s' in the init script
If it's centos 7 use LimitSTACK= in the service file

-Thomas