В этом разделе приведены совет при решении проблем, с которыми вы можете столкнуться с программным обеспечением MATLAB® Parallel Server™.
При запуске работника MATLAB проблема лицензирования может привести к сообщению
License checkout failed. No such FEATURE exists. License Manager Error -5
Существует много причин, почему вы можете получить эту ошибку:
Это сообщение обычно указывает, что вы пытаетесь использовать продукт, для которого вам не лицензируют. Посмотрите на свой файл license.dat
, расположенный в рамках вашей установки MATLAB, чтобы видеть, разрешают ли вам использовать этот продукт.
Если вам лицензируют для этого продукта, эта ошибка может быть результатом наличия дополнительных возвратов каретки или вкладок в вашем файле лицензии. Чтобы избежать этого, гарантируйте, что каждая строка начинается или с #
, SERVER
, DAEMON
или с INCREMENT
.
После фиксации вашего файла license.dat
перезапустите сетевой менеджер лицензий, и MATLAB должен работать правильно.
Эта ошибка может также быть результатом неправильной системной даты. Если ваша системная дата будет то перед датой, которой была сделана ваша лицензия, вы получите эту ошибку.
Если вы получаете эту ошибку при запуске рабочего с программного обеспечения MATLAB Parallel Server:
Можно вызывать команду startworker
от установки, которая не имеет доступа к лицензии рабочего. Например, запуск рабочего от клиентской установки продукта Parallel Computing Toolbox™ вызывает следующую ошибку:
The mjs service on the host hostname returned the following error: Problem starting the MATLAB worker. The cause of this problem is: ============================================================== Most likely, the MATLAB worker failed to start due to a licensing problem, or MATLAB crashed during startup. Check the worker log file /tmp/mjs_user/node_node_worker_05-11-01_16-52-03_953.log for more detailed information. The mjs log file /tmp/mjs_user/mjs-service.log may also contain some additional information. ===============================================================
В файлах журнала рабочего вы видите следующую информацию:
License checkout failed. License Manager Error -15 MATLAB is unable to connect to the license server. Check that the license manager has been started, and that the MATLAB client machine can communicate with the license server. Troubleshoot this issue by visiting: https://www.mathworks.com/support/lme/R2009a/15 Diagnostic Information: Feature: MATLAB_Distrib_Comp_Engine License path: /apps/matlab/etc/license.dat FLEXnet Licensing error: -15,570. System Error: 115
Если вы установили только продукт Parallel Computing Toolbox, и вы пытаетесь запустить рабочего на той же машине, вы получите эту ошибку, потому что продукт MATLAB Parallel Server не установлен, и поэтому рабочий не может получить лицензию.
Если количество потоков, созданных серверными службами на машине, запускающей операционную систему UNIX® (Linux® или Macintosh), превышает ограничение, установленное значением maxproc
, сервисы приводят к сбою и генерируют ошибку из памяти. Проверяйте свое значение maxproc
на операционной системе UNIX с командой limit
. (Различные версии программного обеспечения UNIX могут иметь различные имена для этого свойства.)
Много сетей сконфигурированы, чтобы не позволить LocalSystem
иметь доступ к UNC или сопоставленным сетевым ресурсам. В этом случае запустите mjs процесс при различном пользователе с правами войти в систему как сервис. Смотрите Набор Пользователь.
BASE_PORT. Файл mjs_def
задает и описывает порты, требуемые менеджером по заданию и всеми рабочими. Смотрите следующий файл в установке MATLAB, используемой для каждого кластерного процесса:
(на операционных системах UNIX)matlabroot/toolbox/distcomp/bin/mjs_def.sh
(на операционных системах Windows®)matlabroot\toolbox\distcomp\bin\mjs_def.bat
Передача Заданий. На машинах рабочего, запускающих операционную систему UNIX, количество портов, требуемых MPICH для выполнения связывающихся заданий, колеблется от BASE_PORT + 1000
до BASE_PORT + 2000
.
Прежде чем рабочие процессы запускаются, можно управлять областью значений портов, используемых рабочими для передачи заданий путем определения переменной окружения MPICH_PORT_RANGE
со значением minport:maxport
.
С функцией pctconfig
вы задаете порты, используемые клиентом. Если порты по умолчанию не могут использоваться, эта функция позволяет вам конфигурировать порты отдельно для связи с планировщиком задания и связи с pmode или параллельным пулом.
Если вы используете менеджера по заданию на кластере узлов рабочие операционные системы Windows, необходимо убедиться, что большое количество эфемерных портов TCP доступно на менеджере по заданию машина. По умолчанию максимальный допустимый эфемерный номер порта TCP на операционной системе Windows 5000, но передачи больших наборов данных могут перестать работать, если эта установка не увеличена. В частности, если ваш кластер имеет 32 или больше рабочих, необходимо увеличить максимальный допустимый эфемерный номер порта TCP с помощью следующей процедуры:
Запустите редактор реестра.
Найдите следующий подключ в реестре и нажмите Parameters:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
На окне Registry Editor выберите Edit> New> DWORD Value.
В списке записей справа, поменяйте новое имя значения на MaxUserPort
и нажмите Enter.
Щелкните правой кнопкой по записи MaxUserPort
, называют и выбирают Modify.
В Редактировании диалоговое окно Значения DWORD введите 65534
в поле Value data. Выберите Decimal
для значения Base. Нажмите OK.
Этот параметр управляет максимальным номером порта, который используется, когда программа запрашивает любой доступный порт пользователя от системы. Как правило, эфемерные (недолгие) порты выделяются между значениями 1 024 и 5000 включительно. Это действие позволяет выделение для номеров портов до 65 534.
Выйдите из редактора реестра.
Перезагрузите свою машину.
Если рабочий не может установить связь с ее Планировщиком Задания MATLAB, или если клиентский сеанс не может подтвердить профиль, который использует тот планировщик, эта сила указывают на коммуникационные проблемы между узлами.
Во-первых, убедитесь, что рассматриваемые машины уславливаются о своих разрешениях IP. IP-адрес для конкретного хоста должен быть тем же самым для себя, как это с точки зрения другого хоста. Например, если процесс на hostB
не может соединиться с одним на hostA
, узнать IP-адрес hostA
для себя, то смотрите то, что IP-адрес для hostA
от hostB
. Они должны быть тем же самым.
Если машины могут идентифицировать друг друга, команда nodestatus
может быть полезна для диагностирования проблем между их процессами. Используйте функцию, чтобы определить, какие процессы MATLAB Parallel Server работают на локальном хосте, и которые доступны от удаленных хостов. Если рабочий на hostA
не может указать с его менеджером по заданию на hostB
, запустить nodestatus
на обоих хостах, чтобы видеть то, что каждый видит на hostB
.
На hostB
выполнитесь:
nodestatus -remotehost hostB
Затем на hostA
, запустите точно ту же команду:
nodestatus -remotehost hostB
Результатами должно быть то же самое, показав тот же список менеджеров по заданию и рабочих.
Если вывод указывает на проблемы, запустите команду снова с более высоким информационным уровнем, чтобы получить более подробную информацию:
nodestatus -remotehost hostB -infolevel 3
Можно диагностировать некоторые коммуникационные проблемы с помощью Центра Администратора.
Если вы не можете успешно добавить хосты листинга путем определения имени хоста, можно использовать их IP-адреса вместо этого (см., Добавляют Хосты). Если вы подозреваете, что любые коммуникационные проблемы, в графический интерфейсе пользователя Центра Администратора нажимают Test Connectivity (см. Тестовую Возможность соединения). Это тестирование проверяет, что узлы могут идентифицировать друг друга и позволить их процессам связываться друг с другом.
Если вы хотите использовать обнаружить кластерные возможности в Parallel Computing Toolbox, ваша сеть должна быть сконфигурирована с по крайней мере одним из следующего:
Используя DNS для кластерного открытия требует, чтобы у вас был DNS запись SRV следующей общей формы:
_mdcs._tcp.domainname.com SSSS IN SRV PPPP WWWW MJS_PORT MJS_FQDN_HOSTNAME
Части этой записи:
_mdcs._tcp.
, который запись должна запустить с этого текста, сопровождаемого вашим доменным именем (как company.com
или university.edu
), который ищет клиентская машина.
SSSS указывает, сколько времени (в секундах) запись DNS может кэшироваться; 3600 рекомендуется.
IN SRV
требуется как показано, указывая, что это - служебная книжка.
PPPP
и WWWW
указывают на приоритет и ожидают значения. Они не используются, таким образом, 0 рекомендуется для каждого.
MJS_PORT
является портом, на котором вы соединяетесь с сервером Планировщика Задания MATLAB. Значение по умолчанию 27350, но если вы изменяете его для сервера, необходимо изменить его здесь соответственно.
MJS_FQDN_HOSTNAME
является полностью определенным доменным именем для хоста, служащего Планировщику Задания MATLAB. Например, mjs-1.company.com
.
Допустимый DNS запись SRV для сети company.com
, запускающей Планировщик Задания MATLAB на машине mjs-1
, может выглядеть так:
_mdcs._tcp.company.com 3600 IN SRV 0 0 27350 mjs-1.company.com
Для вашей сети создайте соответствующий DNS запись SRV использование стандартной процедуры для вашей системы DNS. Затем можно проверить, что сеть сконфигурирована с необходимым DNS записи SRV при помощи стандартных утилит, таких как команда nslookup
. Например, эта системная команда указывает на существование применимого DNS записи SRV:
nslookup -type=SRV _mdcs._tcp.company.com
Чтобы использовать многоадресную передачу, это требуется на главном узле, запускающем Планировщик Задания MATLAB и в клиентской системе.
Многоадресно передайте, в отличие от TCP/IP или UDP, основанный на подписке протокол, где много машин в сети указывают к сети на свой интерес к конкретным пакетам, происходящим где-нибудь в той сети. В отличие от этого, и UDP и пакеты TCP всегда направляются в одну машину, обычно обозначаемую ее IP-адресом.
Основные инструменты для исследования этого типа пакета:
tcpdump
для операционных систем UNIX
winpcap
и ethereal
для операционных систем Windows Microsoft®
Класс Java® включен с продуктами параллельных вычислений.
Класс Java называется com.mathworks.toolbox.distcomp.test.MulticastTester
. И его статический основной метод и его конструктор берут два входных параметра: многоадресная группа, чтобы присоединиться и номер порта, чтобы использовать.
Этот класс Java имеет много простых методов попытаться соединить заданную многоадресную группу. Если класс успешно соединил группу, он имеет методы, чтобы отправить сообщения группе, прислушаться к сообщениям от группы и отобразить то, что он получает. Можно использовать этот класс и от вызова командной строки до программного обеспечения Java и в MATLAB.
От приглашения оболочки (принимающий, что java
находится на вашем пути), ввести
java -cp distcomp.jar com.mathworks.toolbox.distcomp.test.MulticastTester
Необходимо видеть вывод что-то вроде этого:
0 : host1name : 0 1 : host2name : 0
Следующий пример показывает, как использовать класс Java в MATLAB.
Запустите MATLAB на двух машинах (например, host1name
и host2name
), на который вы хотите протестировать многоадресную передачу. В каждом сеансе работы с MATLAB введите следующие команды:
m = com.mathworks.toolbox.distcomp.test.MulticastTester('239.1.1.1', 9999); m.startSendingThread; m.startListeningThread;
Эти инструкции заставляют каждый сеанс работы с MATLAB выпускать поток многоадресных тестовых пакетов и прислушиваться к тестовым пакетам. Если многоадресно переданный работает между машинами, вы видите поток строк как следующее:
0 : host1name : 0 1 : host2name : 0 2 : host2name : 1 3 : host2name : 2
Номер слева в каждом векторе символов является номером строки для полученного пакета. Текст в центре является хостом, из которого получен пакет. Номер справа является пакетным номером, отправленным передающим хостом. Нормально для хоста сообщить о тестовом пакете от себя.
Если или машина не получает поток тестовых пакетов, или если удаленный хост не включен ни в один поток, то многоадресно переданная коммуникация не действует правильно.
Чтобы отключить тестовый поток, выполните следующее в обоих сеансах работы с MATLAB:
m.stopSendingThread; m.stopListeningThread;