[CentOS] persistent change of max_stack_depth

Mon Aug 17 10:34:56 UTC 2015
Michael H <michael at wemoto.com>

Hi All,

>>>>> 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?
>>
>> CentOS7.1
>>
>>>
>>>>> Look at the file /etc/security/limits.conf
>>>>>
>>>>> For documentation, 'man limits.conf'
>>>>>
>>>>> - Thomas
>>>>> _______________________________________________
>>>>> CentOS mailing list
>>>>> CentOS at centos.org
>>>>> http://lists.centos.org/mailman/listinfo/centos
>>>>>
>>>>
>>>> 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
>>
>> I located the service file for postgresql-9.4
>>
>> [root at db1 multi-user.target.wants]# locate postgresql-9.4.service
>> /etc/systemd/system/multi-user.target.wants/postgresql-9.4.service
>> /usr/lib/systemd/system/postgresql-9.4.service
>>
>> I've edited
>> /etc/systemd/system/multi-user.target.wants/postgresql-9.4.service and
>> added
>>
>> LimitSTACK=12288
>>
>> to the [Unit] section of the service file.
>>
>> systemctl daemon-reload
>> systemctl restart postgresql-9.4
>>
>> I'm still getting the same errors when I try to start my service...
>>
>>
>> Aug 17 08:23:58 db1 pg_ctl[16839]: < 2015-08-17 08:23:58.533 BST >LOG:
>> invalid value for parameter "max_stack_depth": 10240
>> Aug 17 08:23:58 db1 pg_ctl[16839]: < 2015-08-17 08:23:58.533 BST
>>  >DETAIL:  "max_stack_depth" must not exceed 7680kB.
>>
>> I have tried moving the 'LimitSTACK=12288' to other sections of the
>> service file, when I do I don't get my error from postgresql I see this
>> in /var/log/messages
>>
>> Aug 17 08:38:47 db1 systemd: Reloading.
>> Aug 17 08:38:47 db1 systemd:
>> [/usr/lib/systemd/system/dm-event.socket:10] Unknown lvalue
>> 'RemoveOnStop' in section 'Socket'
>> Aug 17 08:38:47 db1 systemd:
>> [/usr/lib/systemd/system/lvm2-lvmetad.socket:9] Unknown lvalue
>> 'RemoveOnStop' in section 'Socket'
>> Aug 17 08:38:49 db1 systemd: Starting PostgreSQL 9.4 database server...
>> Aug 17 08:38:49 db1 kernel: postgresql94-ch[3021]: segfault at
>> 7ffcd1a28f30 ip 00007f116054c79e sp 00007ffcd1a28f30 error 6 in
>> libc-2.17.so[7f1160458000+1b6000]
>> Aug 17 08:38:49 db1 systemd: postgresql-9.4.service: control process
>> exited, code=killed status=11
>> Aug 17 08:38:49 db1 systemd: Failed to start PostgreSQL 9.4 database
>> server.
>> Aug 17 08:38:49 db1 systemd: Unit postgresql-9.4.service entered failed
>> state.
>
> Hi All,
>
>
> On the PostgreSQL mailing list I've been pointed to this URL;
> https://ma.ttias.be/increase-open-files-limit-in-mariadb-on-centos-7-with-systemd/
>
>
> I've created a directory (I tried changing the 9.4 to 9-4 also)
>
> /etc/systemd/system/postgresql-9.4.service.d
> /etc/systemd/system/postgresql-9-4.service.d
>
> created a 'limits.conf' file inside this directory containing
> [Service]
> LimitSTACK=12288
>
> and I'm unable to restart the service still...
>
> I see the same errors as above when I run systemctl status
> postgresql-9.4 -l.
>
> any more suggestions?!

I have created a new directory
/etc/systemd/system/postgresql-9.4.service.d

restorecon -Frv /etc/systemd/system/postgresql-9.4.service.d

I created a limits.conf

I have tried to add this with no section -
LimitSTACK=12288

output:
Aug 17 11:18:41 db1 systemd: 
[/usr/lib/systemd/system/dm-event.socket:10] Unknown lvalue 
'RemoveOnStop' in section 'Socket'
Aug 17 11:18:41 db1 systemd: 
[/etc/systemd/system/postgresql-9.4.service.d/limits.conf:1] Assignment 
outside of section. Ignoring.
Aug 17 11:18:41 db1 systemd: 
[/usr/lib/systemd/system/lvm2-lvmetad.socket:9] Unknown lvalue 
'RemoveOnStop' in section 'Socket'


the [Unit] section -
[Unit]
LimitSTACK=12288

output:
Aug 17 11:20:06 db1 systemd: 
[/usr/lib/systemd/system/dm-event.socket:10] Unknown lvalue 
'RemoveOnStop' in section 'Socket' 

Aug 17 11:20:06 db1 systemd: 
[/etc/systemd/system/postgresql-9.4.service.d/limits.conf:2] Unknown 
lvalue 'LimitSTACK' in section 'Unit' 

Aug 17 11:20:06 db1 systemd: 
[/usr/lib/systemd/system/lvm2-lvmetad.socket:9] Unknown lvalue 
'RemoveOnStop' in section 'Socket'


the [Service] section -
[Service]
LimitSTACK=12288

output:
Aug 17 11:21:55 db1 systemd: 
[/usr/lib/systemd/system/dm-event.socket:10] Unknown lvalue 
'RemoveOnStop' in section 'Socket'
Aug 17 11:21:55 db1 systemd: 
[/usr/lib/systemd/system/lvm2-lvmetad.socket:9] Unknown lvalue 
'RemoveOnStop' in section 'Socket'


and the [Install] section -
[Install]
LimitSTACK=12288

output:
Aug 17 11:23:23 db1 systemd: Reloading.
Aug 17 11:23:23 db1 systemd: 
[/usr/lib/systemd/system/dm-event.socket:10] Unknown lvalue 
'RemoveOnStop' in section 'Socket'
Aug 17 11:23:23 db1 systemd: 
[/etc/systemd/system/postgresql-9.4.service.d/limits.conf:2] Unknown 
lvalue 'LimitSTACK' in section 'Install'
Aug 17 11:23:23 db1 systemd: 
[/usr/lib/systemd/system/lvm2-lvmetad.socket:9] Unknown lvalue 
'RemoveOnStop' in section 'Socket'


By the errors I will assume that it should be in the [Service] section.
I couldn't find confirmation of this online...

When I start postgresql-9.4

Aug 17 11:25:15 db1 systemd: Starting PostgreSQL 9.4 database server...
Aug 17 11:25:15 db1 kernel: postgresql94-ch[3762]: segfault at 
7fffe1f35380 ip 00007f9ccebec79e sp 00007fffe1f35380 error 6 in 
libc-2.17.so[7f9cceaf8000+1b6000]
Aug 17 11:25:15 db1 systemd: postgresql-9.4.service: control process 
exited, code=killed status=11

Jason, you mentioned that you have made this change for nfs-secure, I 
tried making the changes directly to the service file but received all 
of the above errors, I followed the instructions at the to of the file, 
created

/etc/systemd/system/postgresql-9.4.service
containing

.include /lib/systemd/system/postgresql-9.4.service
[Service]
LimitSTACK=12288

and I still see the same errors

Aug 17 11:31:39 db1 kernel: postgresql94-ch[3800]: segfault at 
7ffda4ca67d0 ip 00007fe592ef479e sp 00007ffda4ca67d0 error 6 in 
libc-2.17.so[7fe592e00000+1b6000]
Aug 17 11:31:39 db1 systemd: postgresql-9.4.service: control process 
exited, code=killed status=11

Can anybody else make any suggestions?

thanks in advance,

Michael