云数据库 GAUSSDB-内存:max_stack_depth

时间:2024-11-13 14:45:18

max_stack_depth

参数说明:设置 GaussDB 执行堆栈的最大安全深度。之所以需要这个安全界限,是因为在服务器里,并非所有程序都检查了堆栈深度,而是只在可能递规的过程,比如表达式计算之类的过程中才进行检查。

参数类型:整型

参数单位:kB

取值范围:100 ~ 2147483647

默认值:

  • (ulimit -s的设置)- 640 KB的值大于等于2MB时,此参数的默认值为2MB。
  • (ulimit -s的设置)- 640 KB的值小于2MB时,此参数的默认值为(ulimit -s的设置)- 640 KB。

设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。例如,不带单位取值1024,表示max_stack_depth为1024kB;带单位取值1MB,表示max_stack_depth为1MB。取值如果要带单位,必须为kB、MB、GB。

设置建议:

  • 数据库需要预留640KB堆栈深度,因此,此参数的最佳设置是等于操作系统内核允许的最大值(即ulimit -s的设置)- 640KB。
  • 数据库未运行前设置的该参数值大于(ulimit -s的设置)- 640 KB时会导致数据库启动失败;数据库运行阶段设置该参数值大于(ulimit -s的设置)- 640 KB时该值不生效。
  • 因为并非所有的操作都能够被检测到,所以建议用户在此设置一个明确的值。
  • 默认值最大为2MB,这个值相对比较小,不容易导致系统崩溃。

设置不当的风险与影响:

  • (ulimit -s的设置)-640KB小于此参数取值范围的最小值时,会导致数据库启动失败。
  • 如果设置此参数的值大于实际的内核限制,则一个正在运行的递归函数可能会导致一个独立的服务器进程崩溃。
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-10-0263.html