Почему Solaris SMF выдает «Тайм-аут метода или выхода службы», даже если метод завершается со статусом 0 - PullRequest
0 голосов
/ 19 ноября 2010

Я действительно новичок в Solaris SMF и писал SMF для Weblogic Nodemanager.Я выполнил следующие шаги: http://www.camelrichard.org/controlling-weblogic-node-manager-solaris-smf-non-root

Чтобы проверить, перезапускает ли SMF службу, когда она уничтожается, я посылаю ему сигнал уничтожения с другого терминала, но он не перезапускается.Вот что говорит файл журнала:

[ Nov 19 10:17:39 Stopping because process received fatal signal from outside the service. ]
Killed
+ set +x
[ Nov 19 10:17:39 Executing stop method ("/usr/local/Oracle/Middleware/wlserver_10.3/server/bin/killNodeManager.sh") ]
Trying to find the PID of the nodeManager process
Cannot find the PID, NodeManager is not running - cannot kill
[ Nov 19 10:17:39 Method "stop" exited with status 0 ]
[ Nov 19 10:18:40 Method or service exit timed out.  Killing contract 100 ]

Чего я не вижу, так это если вы посмотрите на последние две строки, первая говорит, что метод завершен, а вторая говорит, что метод истек.Я нахожу это странным.Кто-нибудь знает, что здесь происходит?соответствующие части smf ниже:

<service_bundle type='manifest' name='nodemanager'>
<service name='application/management/nodemanager' type='service' version='1'>

   <single_instance />

   <dependency
      name='multi-user-server'
      grouping='require_all'
      restart_on='error'
      type='service'>
      <service_fmri value='svc:/milestone/multi-user-server' />
   </dependency>

   <exec_method
      type='method'
      name='start'
      exec='/usr/local/Oracle/Middleware/wlserver_10.3/server/bin/startNodeManager2.sh'
      timeout_seconds='120' >
<!-- Trying as root for now :
      <method_context>
         <method_credential user='weblogic' group='weblogic' />
      </method_context>
-->
   </exec_method>

 <exec_method
  type='method'
  name='stop'
  exec='/usr/local/Oracle/Middleware/wlserver_10.3/server/bin/killNodeManager.sh'
  timeout_seconds='60' />

Ответы [ 2 ]

0 голосов
/ 18 сентября 2012

ЭТО похоже на killNodeManager.sh произошла внутренняя ошибка.Не удалось найти PID процесса, который предполагается остановить.Таким образом, он вышел очень быстро, в течение 1 секунды с начала.Однако контракт № 100, связанный с этой услугой, все еще действовал с точки зрения SMF.После 60 секунд, отведенных на выполнение метода «stop», SMF увидел, что контракт все еще в силе, и у него не было другого выбора, кроме как попытаться уничтожить весь контракт.Он обоснованно предположил, что метод «стоп» не сделал свою работу.Следовательно, вы видите последнее сообщение в журнале, и сервис переходит в режим обслуживания после разрыва контракта.

Надеюсь, это поможет!

0 голосов
/ 31 марта 2011

Причина первого сообщения:

Метод "stop" завершен со статусом 0

Это из-за того, что выполняется в сценарии вашего метода, который будет в usr/local/Oracle/Middleware/wlserver_10.3/server/bin/startNodeManager2.sh

Обычно работающие методы возвращают макрос SMF_EXIT_OK Я не уверен, почему появляется второе сообщение.Должно быть что-то связанное с 'killNodeManager.sh'

...