Поиск и устранение распространенных проблем

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

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

Необходимые порты

С менеджером заданий

BASE_PORT.  The 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. В окне Редактора реестров выберите Edit > New > DWORD Value.

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

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

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

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

  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

С графическим интерфейсом пользователя Admin Center

Диагностировать некоторые проблемы связи можно с помощью Admin Center.

Если вы не можете успешно добавить узлы в список, указав имя узла, можно использовать их IP-адреса (см. раздел «Добавление узлов»). Если вы подозреваете какие-либо проблемы с связью, в GUI Admin Center нажмите Test Connectivity (см. «Тестирование подключения»). Эта проверка проверяет, что узлы могут идентифицировать друг друга и позволяют их процессам взаимодействовать друг с другом.

Проверьте сетевые коммуникации для обнаружения кластеров

Если вы хотите использовать возможности кластера обнаружения в Parallel Computing Toolbox, ваша сеть должна быть сконфигурирована как минимум с одним из следующих:

DNS SRV- Записи

При использовании DNS для обнаружения кластеров требуется запись DNS SRV для каждой области. Можно иметь несколько записей SRV DNS для нескольких планировщиков заданий MATLAB. Используйте следующую общую форму для каждой записи SRV DNS.

_mdcs._tcp.<domain> <TTL> IN SRV <priority> <weight> <port> <hostname>.

Создайте запись SRV DNS для сервера планировщика заданий MATLAB с помощью следующих частей.

  • <domain> - имя области (например company.com или university.edu), который ищет клиентская машина.

  • <TTL> указывает, как долго (в секундах) может быть кэширована запись DNS. 3600 рекомендуется.

  • IN SRV требуется как показано, что указывает на то, что это служебная запись.

  • <priority> и <weight> указать приоритет и значения веса. Если вы создаете несколько записей SRV DNS, вы можете задать их приоритет с этими полями. Значение 0 рекомендуется для каждого. Нижняя <priority> есть, более высокий приоритет у хоста. Когда две записи имеют одинаковые <priority>, запись с наивысшей <weight> используется сначала. Используйте <weight> значение для задания выборов сервера.

  • <port> - порт, на котором вы соединяетесь с сервером планировщика заданий MATLAB. Порт по умолчанию 27350. Если вы меняете порт для сервера MATLAB Job Scheduler, измените <port> соответственно.

  • <hostname> - полное доменное имя для хоста, обслуживающего планировщик заданий MATLAB. Машинный mjs-1 на область company.com имеет полное доменное имя mjs-1.company.com.

Допустимая запись SRV DNS для company.com сеть, выполняющая планировщик заданий MATLAB на компьютере mjs-1 может выглядеть следующим образом:

_mdcs._tcp.company.com 3600 IN SRV 0 0 27350 mjs-1.company.com.

Примечание

Если для определения местоположения кластера требуется несколько областей, используйте запись DNS SRV для каждой области. Если сеть, к которой пользователи обращаются через VPN, имеет различные записи DNS SRV во внутренней сети, убедитесь, что для каждой области существует запись DNS SRV.

Используйте стандартную процедуру для системы DNS для создания соответствующих записей SRV DNS. Можно использовать стандартные утилиты, такие как nslookup команда, чтобы убедиться, что ваша сеть сконфигурирована с необходимыми записями SRV DNS. Чтобы изучить записи DNS SRV планировщика заданий MATLAB для company.com область, используйте следующую команду.

nslookup -type=SRV _mdcs._tcp.company.com 

Передача

Чтобы использовать многоадресную рассылку, это необходимо в главном узле, на котором работает планировщик заданий MATLAB, и в клиентской системе.

Многоадресная передача, в отличие от TCP/IP или UDP, является протоколом, основанным на подписке, где ряд машин в сети указывают сети на их интерес к конкретным пакетам, исходящим где-то в этой сети. В отличие от этого, пакеты UDP и TCP всегда привязаны к одной машине, обычно обозначенной ее IP-адресом.

Основными инструментами для исследования этого типа пакетов являются:

  • tcpdump для операционных систем UNIX

  • winpcap и ethereal для Microsoft® Операционные системы Windows

  • 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;