Диагностируйте типичные проблемы

В этом разделе приведены совет при решении задач, с которыми вы можете столкнуться с программным обеспечением 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

Если количество процессов, созданных серверными службами на машине, запускающей операционную систему UNIX® (Linux® или Macintosh), превышает пределы операционной системы, сервисы приводят к сбою и генерируют ошибку из памяти. Рекомендуется, чтобы вы настроили свои системные пределы. Для получения дополнительной информации смотрите Рекомендуемые Системные Пределы для Macintosh и Linux (Parallel Computing Toolbox).

Запустите серверные процессы на Windows Network Installation

Много сетей сконфигурированы, чтобы не позволить LocalSystem иметь доступ к UNC или сопоставленным сетевым ресурсам. В этом случае запустите mjs процесс при различном пользователе с правами войти в систему как сервис. Смотрите Набор Пользователь.

Требуемые порты

С менеджером по заданию

BASE_PORT.  mjs_def файл задает и описывает порты, требуемые менеджером по заданию и всеми рабочими. Смотрите следующий файл в установке MATLAB, используемой для каждого кластерного процесса:

  • matlabroot/toolbox/parallel/bin/mjs_def.sh (на операционных системах UNIX)

  • matlabroot\toolbox\parallel\bin\mjs_def.bat (на операционных системах Windows®)

Передача Заданий.  На машинах рабочего, запускающих операционную систему UNIX, количество портов, требуемых MPICH для выполнения связывающихся заданий, лежит в диапазоне от BASE_PORT + 1000 к BASE_PORT + 2000.

Со сторонним планировщиком

Прежде чем рабочие процессы запускаются, можно управлять областью значений портов, используемых рабочими для передачи заданий путем определения переменной окружения MPICH_PORT_RANGE со значением minport:maxport.

Клиентские порты

С pctconfig (Parallel Computing Toolbox) функционирует, вы задаете порты, используемые клиентом. Если порты по умолчанию не могут использоваться, эта функция позволяет вам конфигурировать порты отдельно для связи с планировщиком задания и связи с параллельным пулом.

Эфемерные порты TCP с менеджером по заданию

Если вы используете менеджера по заданию на кластере узлов рабочие операционные системы Windows, необходимо убедиться, что большое количество эфемерных портов TCP доступно на менеджере по заданию машина. По умолчанию максимальный допустимый эфемерный номер порта TCP на операционной системе Windows 5000, но передачи больших наборов данных могут перестать работать, если эта установка не увеличена. В частности, если ваш кластер имеет 32 или больше рабочих, необходимо увеличить максимальный допустимый эфемерный номер порта TCP с помощью следующей процедуры:

  1. Запустите редактор реестра.

  2. Найдите следующий подключ в реестре и нажмите Parameters:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. На окне Registry Editor выберите Edit> New> DWORD Value.

  4. В списке записей справа, поменяйте новое имя значения на MaxUserPort и нажмите Enter.

  5. Щелкните правой кнопкой по MaxUserPort имя записи и выбирает Modify.

  6. В Редактировании диалоговое окно Значения DWORD введите 65534 в поле Value data. Выберите Decimal для значения Base. Нажмите OK.

    Этот параметр управляет максимальным номером порта, который используется, когда программа запрашивает любой доступный порт пользователя от системы. Как правило, эфемерные (недолгие) порты выделяются между значениями 1 024 и 5000 включительно. Это действие позволяет выделение для номеров портов до 65 534.

  7. Выйдите из редактора реестра.

  8. Перезагрузите свою машину.

Разместите коммуникационные проблемы

Если рабочий не может установить связь с ее Планировщиком Задания MATLAB, или если клиентский сеанс не может подтвердить профиль, который использует тот планировщик, эта сила указывают на коммуникационные проблемы между узлами.

С интерфейсом командной строки

Во-первых, убедитесь, что рассматриваемые машины уславливаются о своих разрешениях IP. IP-адрес для конкретного хоста должен быть тем же самым для себя, как это с точки зрения другого хоста. Например, если процесс на hostB не может соединиться с одним на hostA, узнайте hostA IP-адрес для себя, затем смотрите что 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 запись SRV

Используя 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 рекомендуется для каждого. Однако, если вы создаете несколько DNS записи SRV, можно задать их приоритет с этими полями. Более низкий PPPP более высокий приоритет, который имеет хост. Значение веса (WWWW) обычно используется в качестве механизма выбора сервера. Когда две записи имеют тот же приоритет PPPP, их важность пропорциональна весу WWWW из записи. Если вы не должны делать выбора сервера, значения веса 0 рекомендуется.

  • MJS_PORT порт, на котором вы связываете с сервером Планировщика Задания MATLAB. Значение по умолчанию 27350, но если вы изменяете его для сервера, необходимо изменить его здесь соответственно.

  • MJS_FQDN_HOSTNAME полностью определенное доменное имя для хоста, служащего Планировщику Задания MATLAB. Например, mjs-1.company.com.

Обратите внимание на то, что у вас могут быть несколько DNS записи SRV для нескольких Планировщиков Задания MATLAB.

Допустимый 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.mjs.test.MulticastTester. И его статический основной метод и его конструктор берут два входных параметра: многоадресная группа, чтобы присоединиться и номер порта, чтобы использовать.

Этот класс Java имеет много простых методов попытаться соединить заданную многоадресную группу. Если класс успешно соединил группу, он имеет методы, чтобы отправить сообщения группе, прислушаться к сообщениям от группы и отобразить то, что он получает. Можно использовать этот класс и от вызова командной строки до программного обеспечения Java и в MATLAB.

От приглашения оболочки (принимающий тот java находится на вашем пути), ввести

java -cp distcomp.jar com.mathworks.toolbox.distcomp.mjs.test.MulticastTester

Необходимо видеть выход что-то вроде этого:

0 : host1name : 0
1 : host2name : 0

Следующий пример показывает, как использовать класс Java в MATLAB.

Запустите MATLAB на двух машинах (например, host1name и host2name) на который вы хотите протестировать многоадресную передачу. В каждом сеансе работы с MATLAB введите следующие команды:

m = com.mathworks.toolbox.distcomp.mjs.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;