支持多个 MATLAB Runtime 版本
MATLAB® Production Server™ 实例可以托管使用多个版本的 MATLAB Compiler SDK™ 编译的可部署存档。为此,您必须使用 mcr-root 属性配置本地服务器实例以使用多个 MATLAB Runtime 版本。对于部署在云端的服务器环境,部署设置 mcr-root 属性以支持多个 MATLAB Runtime 版本。
注意
MATLAB Production Server 的安装支持最多六个版本的 MATLAB Runtime 版本。
配置服务器以使用多个 MATLAB Runtime 实例
如果您的本地服务器上没有安装 MATLAB Runtime,则必须先安装它。有关详细信息,请参阅 MATLAB Runtime。
注意
配置服务器实例以使用本地文件系统上的 MATLAB Runtime 根。否则,网络分区可能会导致工作进程进程失败。
所有 MATLAB Runtime 安装路径必须属于相同的操作系统和硬件组合。
使用命令行指定多个 MATLAB Runtime 实例
如果您使用命令行管理服务器实例,请将多个 mcr-root 属性添加到 main_config 配置文件以支持多个 MATLAB Runtime 实例。
如果服务器实例正在运行,请停止它。
在文本编辑器中打开服务器实例的配置文件。
配置文件位于
。instanceRoot/config/main_config在配置文件中找到
mcr-root属性的条目。--mcr-root mCRuNsETtOKEN
对于实例支持的每个 MATLAB Runtime 版本,添加
mcr-root属性的实例。按从最新到最旧的顺序排列 MATLAB Runtime 版本。例如,要将实例配置为使用 MATLAB Runtime 的 v98 和 v97 版本,请指定以下内容。
--mcr-root C:\Program Files\MATLAB\MATLAB Runtime\v98 --mcr-root C:\Program Files\MATLAB\MATLAB Compiler Runtime\v97
重新启动服务器实例。
使用仪表板指定多个 MATLAB Runtime 实例
如果您使用仪表板管理服务器实例,请登录仪表板并更新服务器设置以支持多个 MATLAB Runtime 实例。
如果服务器实例正在运行,请停止它。
在 Settings > Core 下,找到 MATLAB Runtime 字段。
对于实例支持的每个版本的 MATLAB Runtime,请指定 MATLAB Runtime 安装路径(以逗号分隔)。按从最新到最旧的顺序排列 MATLAB Runtime 版本。
例如,要将实例配置为使用 MATLAB Runtime 的 v98 和 v97 版本,请指定以下内容。
C:\Program Files\MATLAB\MATLAB Runtime\v98,C:\Program Files\MATLAB\MATLAB Runtime\v97
重新启动服务器实例。
服务器实例如何选择使用哪个 MATLAB Runtime
在将服务器实例配置为使用多个版本的 MATLAB Runtime 来处理服务器请求后,服务器将按照从前到后的顺序扫描配置文件中的 MATLAB Runtime 版本列表,并选择第一个能够处理请求的 MATLAB Runtime 安装。如果 MATLAB Runtime 安装与用于创建包含正在评估的函数的可部署存档的 MATLAB 版本兼容,则它可以处理请求。
注意
由于服务器实例始终选择第一个兼容的 MATLAB Runtime 版本,因此使用相同 MATLAB Runtime 版本的多个实例配置服务器实例不会对性能产生影响。
工作进程管理的变化
配置服务器实例以使用多个 MATLAB Runtime 版本会改变处理请求的工作进程的管理。
当使用单个 MATLAB Runtime 安装时,服务器实例会根据需要启动工作进程,直到 num-workers 属性指定的工作进程数目正在运行。一旦运行,工作进程可以根据 worker-restart-interval 属性或 worker-restart-memory-limit 属性重新启动。工作进程从未完全停下来。
一旦服务器实例开始使用多个 MATLAB Runtime 版本,它就会动态管理工作进程池。服务器实例根据需要启动新的工作进程,直到 num-workers 工作进程运行。工作进程实例分布在不同的 MATLAB Runtime 版本中。一旦 num-workers 工作进程运行,服务器实例就会根据 worker-memory-trigger 属性和 queue-time-trigger 属性将工作进程返回到可用工作进程池中。一旦工作进程返回到池中,服务器就可以分配它,使用任何已配置的 MATLAB Runtime 版本来处理新请求。