如何配置生成core文件?

【TDengine 使用环境】
生产环境 /测试/ Poc/预生产环境

【TDengine 版本】
3.3.7.0

【操作系统以及版本】
centos7.9

【部署方式】容器/非容器部署
docker容器

【集群节点数】

【集群副本数】

【描述业务影响】

【问题复现路径/shan】做过哪些操作出现的问题

【遇到的问题:问题现象及影响】
按照官方提供的操作说明,配置后,当数据库崩溃的时候无法生成core文件,操作步骤如下:

1.修改 /etc/sysctl.conf 文件
打开 /etc/sysctl.conf 文件并添加或修改以下行:
kernel.core_pattern = /var/crash/core.%e.%p.%h.%t
2.创建 /var/crash 目录并设置合适的权限:
Bash
sudo mkdir -p /var/crash
sudo chmod 777 /var/crash
3. 使配置生效
Bash
sudo sysctl -p
4.docker run启动增加 ulimit 限制
Bash
docker run -it --ulimit core=-1 <image_name>
5.在容器内部进行验证
入容器后,可以使用以下命令验证 ulimit 设置是否生效:
Bash
ulimit -c
输出为 unlimited

测试期间数据库多次崩溃,均未生成core文件,是否开源版本无法生成?

【资源配置】

【报错完整截图】(不要大段的粘贴报错代码,论坛直接看报错代码不直观)

方式一:

 1、使用命令 ulimit -c unlimited (不限制core文件大小)来开启 core dump 功能
  2、指定内核转储的文件名和目录:sudo sysctl -w kernel.core_pattern='/corefile/core-%e-%p',  其中/corefile目录是可以自己指定的。
      永久化:echo '/corefile/core\_%e-%p' | sudo tee /proc/sys/kernel/core_pattern
  3、查询sysctl kernel.core_pattern,是否设置成功。

方式二:

1. 修改/etc/profile文件添加参数;
在profile文件中加入ulimit -c unlimited
保存退出,重启服务器,改文件就长久生效,或者#source /etc/profile,不重启服务器,使用source使文件马上生效。
2. 指定生成文件的路径和名字;
执行# vim /etc/sysctl.conf,进入编辑模式,加入下面两行
kernel.core_pattern=/var/core/core_%e_%p
kernel.core_uses_pid=0
在var下创建core目录,用# sysctl –p /etc/sysctl.conf,是修改马上生效。

faq:上面两点都设置好了,但还是没有生成core文件

A、对/corefile目录没有写权限;或该目录所在的磁盘空间不足。