主要内容

本页采用了机器翻译。点击此处可查看英文原文。

MATLAB Production Server 中隔离可部署存档

MATLAB Production Server 安装的 component-isolation 文件中的 main_config 属性允许您为任意数量的可部署存档提供它们自己的专属工作进程池。

您使用与相应文件名词干匹配的 ECMAScript 正则表达式选择可部署存档(对于名为 myctf.ctf 的文件,词干为 myctf)。对于这些隔离的可部署存档,任何其他存档(无论是隔离的还是非隔离的)都不会使用这个工作进程池。在对现有可部署存档进行热部署更新期间,服务器会重新启动这些隔离池中的工作进程。

此属性可用于启用某些功能。

  • 防止可部署存档消耗所有可用的工作进程

    • 如果您想要分离运行时间较长的存档以防止它们消耗所有可用的工作进程,则可以使用 component-isolation 属性为它们分配自己的工作进程池。

    • 示例

      假设可部署存档名为 long_running_1, long_running_2, short_running_1, short_running_2

      --component-isolation component-match=^long_running_;max-workers=3
      --component-isolation component-match=^short_running_;max-workers=1
      --component-isolation max-isolated-components=4
  • 分离低优先级和高优先级可部署存档

    • 如果您想要优先执行某些组件,则可以使用 component-isolation 属性为它们分配自己的工作进程池,该工作池的 max-workers 值要高于低优先级存档。

      示例

      假设组件名为 high_priority_1, high_priority_2, med_priority_1, med_priority_2, low_priority_3, low_priority_3

      --component-isolation component-match=^high_priority_;max-workers=3
      --component-isolation component-match=^med_priority_;max-workers=2
      --component-isolation component-match=^low_priority_;max-workers=1
      --component-isolation max-isolated-components=6

您还可以使用 component-isolation 功能来避免某些问题。

示例:

  • 第三方软件(例如 MEX 文件)不是同一进程安全的(例如,从同一进程中的两个或更多组件加载的 Python 代码)

  • 不支持热部署的第三方软件。换句话说,在工作工作进程至少使用过一次之后,可部署存档进行热部署时,软件无法正确地销毁或重新初始化。如果组件 CTF 文件中的软件在本机代码中包含静态文件或类范围数据,并且没有针对这些情况正确利用本机代码,就会发生这种情况。这可能是由于不当使用(或未使用)以下软件以及其他原因造成的:

    • Windows:LoadLibraryFreeLibraryDllMain

    • Linux:dlopendlcose__attribute__((constructor))

另请参阅

主题