Strategy ONE

核心转储文件问题

如果核心文件生成在目标文件夹下,则核心转储功能正常,例如, /<path_to_the_location>/core,服务器崩溃期间。下面概述了在 Linux 操作系统 (OS) 上验证此功能的步骤。

  1. 通过执行获取 Intelligence 服务器的进程 ID ps -ef | grep -i mstrsvr。以下示例中,进程 ID 为 6837。
  2. 复制
    $ 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
  3. 通过运行 sudo kill -6 <server_process_id> 命令。

  4. 验证目标文件夹下是否生成核心文件。例如, /<path_to_the_location>/core。核心文件大小应该非零。

如果没有按照上述步骤生成核心文件,则应该找出根本原因。下面概述了可能的原因和解决步骤。

Linux 操作系统配置无效或缺失

软件要求和建议 正确的操作系统配置来启用核心转储。应用设置后,请确保重新启动 Intelligence 服务器。

Intelligence Server 注册为服务时缺少配置

您的 Linux 机器可能需要重新启动才能应用操作系统级核心转储配置。如果重启后核心转储仍然被禁用,则默认用户配置文件可能已禁用在 init 阶段(机器重启期间)启动的进程的核心文件的创建。要解决此问题,请执行以下步骤。

  1. 使用 root 允许,打开 /etc/init.d/mstr-<InstallName>-iserver-CastorServer 初始化脚本。通常, <InstallName> 形式为 user@timestamp。找到以下几行。

    复制
    start ()
    {
  2. 在找到的行下方,添加以下命令以允许 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 的官方解释

  1. 如果您已按照 启用核心转储,请注释掉或删除以下几行 /etc/sysctl.conf

    复制
    kernel.core_pattern = /<path_to_the_location>/core/core.%e.%p.%h.%t
    fs.suid_dumpable = 2
  2. 为未经 RedHat 签名或打包的 Intelligence 服务器启用核心转储收集。通过将以下行应用到 /etc/abrt/abrt-action-save-package-data.conf

    复制
    OpenGPGCheck = no
    ProcessUnpackaged = yes
  3. 配置保存核心文件的文件夹,通过添加以下参数 /etc/abrt/abrt.conf。默认情况下,该参数被注释掉,其值为 /var/spool/abrt

    复制
    DumpLocation =/Your_desired/Path_to_generate/the_core_file
  4. 重新启动 ABRT 服务以应用上述设置。确保以如下方式运行这些命令 root

    复制
    # service abrtd restart
    # service abrt-ccpp start
  5. 通过执行以下命令触发核心转储并验证是否可以创建核心文件。从 /IntelligenceServer 文件夹并记下创建的核心文件的位置。

    复制
    # gcore -o <file> <pid>

几个重要说明:

  1. 确保 DumpLocation 存在并且可以被 ABRT 进程写入。
  2. 如果您自定义 DumpLocation,确保它与为指定的文件夹不同 WatchCrashdumpArchiveDir,这是 abrt.conf 文件。
  3. 如果核心文件被截断或仍未被转储,您可以查看系统消息日志 /var/log/messages 调查核心转储失败的原因。