Strategy ONE
核心转储文件问题
如果核心文件生成在目标文件夹下,则核心转储功能正常,例如, /<path_to_the_location>/core
,服务器崩溃期间。下面概述了在 Linux 操作系统 (OS) 上验证此功能的步骤。
- 通过执行获取 Intelligence 服务器的进程 ID
ps -ef | grep -i mstrsvr
。以下示例中,进程 ID 为 6837。 -
通过运行
sudo kill -6 <server_process_id>
命令。 - 验证目标文件夹下是否生成核心文件。例如,
/<path_to_the_location>/core
。核心文件大小应该非零。
$ ps -ef | grep -i mstrsvr
mstr 6837 1 2 12:15 ? 00:02:37 /opt/mstr/MicroStrategy/install/IntelligenceServer/bin/MSTRSvr -s -w /opt/mstr/MicroStrategy/IntelligenceServer -t status-iserver.xml /opt/mstr/MicroStrategy/install/lib/libMSTRSvr2.so -n CastorServer
mstr 32481 32391 0 14:12 pts/0 00:00:00 grep --color=auto -i mstrsvr
如果没有按照上述步骤生成核心文件,则应该找出根本原因。下面概述了可能的原因和解决步骤。
Linux 操作系统配置无效或缺失
看 软件要求和建议 正确的操作系统配置来启用核心转储。应用设置后,请确保重新启动 Intelligence 服务器。
Intelligence Server 注册为服务时缺少配置
您的 Linux 机器可能需要重新启动才能应用操作系统级核心转储配置。如果重启后核心转储仍然被禁用,则默认用户配置文件可能已禁用在 init 阶段(机器重启期间)启动的进程的核心文件的创建。要解决此问题,请执行以下步骤。
-
使用
root
允许,打开/etc/init.d/mstr-<InstallName>-iserver-CastorServer
初始化脚本。通常,<InstallName>
形式为user@timestamp
。找到以下几行。复制start ()
{ -
在找到的行下方,添加以下命令以允许 Intelligence 服务器作为启用核心文件的服务启动。
复制ulimit -c ulimited
磁盘空间不足
您必须确保写入核心文件的磁盘有足够的可用空间。请注意,核心文件将写入指定的目录 kernel.core_pattern
(看 启用核心转储 详细信息请参见此处),而预期的核心文件大小与 Intelligence 服务器崩溃时的内存占用相同。此外,当您的机器使用网络文件系统 (NFS) 时,请确保支持创建大文件(超过 2GB)。
选择:在 RedHat Enterprise Linux 6 及更新版本中使用 ABRT 处理核心文件
RedHat Linux 6.x 及更新版本附带自动错误报告工具 (ABRT),可自动收集核心转储文件并将其存储到 /var/spool/abrt
文件夹。如果愿意的话,则需要采取额外步骤来确保 Intelligence 服务器的核心转储可以与 ABRT 一起工作。有关详细说明,请参阅 关于 ABRT 的官方解释。
-
如果您已按照 启用核心转储,请注释掉或删除以下几行
/etc/sysctl.conf
。复制kernel.core_pattern = /<path_to_the_location>/core/core.%e.%p.%h.%t
fs.suid_dumpable = 2 -
为未经 RedHat 签名或打包的 Intelligence 服务器启用核心转储收集。通过将以下行应用到
/etc/abrt/abrt-action-save-package-data.conf
:复制OpenGPGCheck = no
ProcessUnpackaged = yes -
配置保存核心文件的文件夹,通过添加以下参数
/etc/abrt/abrt.conf
。默认情况下,该参数被注释掉,其值为/var/spool/abrt
。复制DumpLocation =/Your_desired/Path_to_generate/the_core_file
-
重新启动 ABRT 服务以应用上述设置。确保以如下方式运行这些命令
root
。复制# service abrtd restart
# service abrt-ccpp start -
通过执行以下命令触发核心转储并验证是否可以创建核心文件。从
/IntelligenceServer
文件夹并记下创建的核心文件的位置。复制# gcore -o <file> <pid>
几个重要说明:
- 确保
DumpLocation
存在并且可以被 ABRT 进程写入。 - 如果您自定义
DumpLocation
,确保它与为指定的文件夹不同WatchCrashdumpArchiveDir
,这是abrt.conf
文件。 - 如果核心文件被截断或仍未被转储,您可以查看系统消息日志
/var/log/messages
调查核心转储失败的原因。