Strategy ONE

权限错误

本节提供有关 Linux 环境中权限错误的故障排除信息。

错误的“nice”值限制

为了提高高 CPU 负载下的性能,Intelligence Server 会优先执行时间关键型作业(例如交互式仪表板执行),而不是后台请求(例如智能下载)。为了实现这样的 工作优先级 机制下,执行交互式作业的线程可以占用更大块的 CPU 时间。等效地,后台请求的线程被分配了较小的 CPU 时间块。

在 Linux 操作系统中,线程的 CPU 块大小由其 nice 值,它具有 与 CPU 时间(和优先级)成反比。为了以正确的优先级执行每个传入的作业或请求,Intelligence Server 从池中选择一个或多个线程,动态地为线程分配正确的 nice 值来执行作业或请求,然后重置 nice 值为默认值 0,然后将线程返回到池中。这种动态 nice 值分配,尤其是重置为 0 增加后台请求线程的 nice 值(降低优先级)后,需要配置 用户级 限制 nice

为了减轻部署的复杂性, MicroStrategy 安装程序会自动配置 nice 值,只要它是由一个 root 用户。否则,如果安装程序由非root 用户 nice 无法配置限制并显示以下消息。

  • 这 MicroStrategy 安装程序将在安装过程结束时显示以下任意消息。

  • 当安装程序从命令行运行时,类似的消息会显示到标准输出。另一方面,如果安装程序以静默模式运行,则会将以下条目添加到 安装日志 文件。

    复制
    3 Jun 2020, 11:35:27 AM:SEVERE: Failed to set MicroStrategy Intelligence priority process settings 
    3 Jun 2020, 11:35:27 AM:SEVERE: Priority process settings for MicroStrategy Intelligence doesn't meet the requirements
    3 Jun 2020, 11:35:27 AM:SEVERE: Root privileges are required to configure the nice limit to 0 or lower
  • 尽管出现上述错误信息,安装完成后Intelligence Server仍然可以启动。为了验证不正确 nice Intelligence Server 运行时的限制,打开 DSSErrors.log 文件并搜索以下条目:

    复制
      ... [Kernel][Error] ... The maximum scheduling priority ("nice") returned by "ulimit - e" has a value of %1. It does not satisfy the job prioritization feature's requirement that expects a value of 20 or higher. Please refer to the man page of "ulimit".
    复制
     ... [Kernel][Info] ... The job prioritization feature is disabled.

要解决此问题,您必须配置最大 nice 限制,可以使用 ulimit -e 命令,直到正确的值 20或更高,则返回。配置并检查 nice 限制,请参考以下步骤:

  1. 如果 Intelligence Server 正在运行,请停止它。
  2. 使用超级用户权限(例如 sudo 命令),创建新的配置文件。 MicroStrategy 建议您使用名称 mstr-priority.conf 在下面 /etc/security/limits.d 文件夹。
  3. 将以下条目添加到配置文件中:

    复制
    mstr  hard  nice  0
    mstr  soft  nice  0
  4. 保存配置文件。
  5. 重新启动现有会话以应用新的限制。使用 SSH 时,您可以简单地断开连接并重新连接到新会话。使用 VNC 时,您可以重新启动服务,例如使用 systemctl restart vncserver@:1.service 命令,然后重新连接到会话。在这两种情况下,请确保 mstr 用户用于重新连接。
  6. 通过执行来验证设置 ulimit -e 并确认返回值是 20, 或更高。
  7. 重启 Intelligence Server。
  8. 检查 DSSErrors.log 确认没有关于 nice 限制,并且作业优先级已启用。

上述设置仅修改最大 nice 价值 mstr 用户,并且不应影响其他用户。您应该注意以下两种特殊情况:

  • 您必须更换 mstr 使用上面步骤中将运行 Intelligence Server 的用户名。默认情况下, MicroStrategy 安装程序创建一个 mstr 用户,但您可以在期间选择另一个用户或 安装后
  • 通过使用以下方式启动的 VNC 会话运行 Intelligence Server 时 systemd,步骤 6 可能不会返回正确的值, 20, 由于此 已知的 Linux 问题。为了解决此问题,请将以下设置添加到 /etc/systemd/user.conf/etc/systemd/system.conf

    复制
    DefaultLimitNICE=20

    要应用设置,请运行 systemctl daemon-reexec 并重新启动 VNC 会话,例如使用 systemctl restart vncserver@:1.service 命令。或者,您可以重新启动机器。

  • 你的 Linux 计算机可能具有其他用户或系统级限制设置,以防止 ulimit -e 返回正确的值 20, 或更高。在这种情况下,请检查特定 Linux 发行版的可用限制设置。