Как устранить ошибку IPC в наборе инструментов интеграции веб-служб Open VMS (WSIT) - PullRequest
0 голосов
/ 12 марта 2019

Я унаследовал «технологический» стек, с которым у меня очень мало опыта, и я надеюсь на помощь в решении проблемы.Использование OpenVMS Integration Toolkit для вызова службы OpenVMS из веб-браузера. Я получаю следующую ошибку:

'com.hp.wsi.WsiConnectionException: ОШИБКА: ошибка при приеме EndPointLocate:% WSI-F-FAILED_IPC_INIT,Неожиданный сбой при инициализации контекста IPC '

Включение отладки IPC показывает следующее:

 (wsi$$protocol_init) Initialized (once only), OK
 (wsi$$protocol_list_new) OK
 (_set_srv_context) pctx=0x00f617f8, WSI$_SRV_THREADS=1, OK
 (_set_srv_context) pctx=0x00f617f8, WSI$_SRV_STACKSIZE=2000000, OK
 (_set_srv_context) pctx=0x00f617f8, WSI$_SRV_INIT_F=0x00080328, OK
 (_set_srv_context) pctx=0x00f617f8, WSI$_SRV_TRANSCEIVE_F=0x00080348, OK
 (_set_srv_context) pctx=0x00f617f8, WSI$_SRV_DISCONNECT_F=0x00080368, OK
 (wsi$$error_set) iError=0x0001004a (65610) (IPC,ERROR,9)
 (wsi$$error_set) osError=0x0000045c (1116)
 (wsi$$error_set) "I/O failure: SYS$ICC_OPEN_ASSOC() failed"
 (_icc_init_assoc_locked) sys$icc_open_assoc(ICC$PID_00003E97_WSI) failed, st=1116

Успешное соединение показывает:

 (wsi$$protocol_init) Initialized (once only), OK
 (wsi$$protocol_list_new) OK
 (_set_srv_context) pctx=0x00f617f8, WSI$_SRV_THREADS=1, OK
 (_set_srv_context) pctx=0x00f617f8, WSI$_SRV_STACKSIZE=2000000, OK
 (_set_srv_context) pctx=0x00f617f8, WSI$_SRV_INIT_F=0x00080328, OK
 (_set_srv_context) pctx=0x00f617f8, WSI$_SRV_TRANSCEIVE_F=0x00080348, OK
 (_set_srv_context) pctx=0x00f617f8, WSI$_SRV_DISCONNECT_F=0x00080368, OK
 (_icc_init_assoc_locked) sys$icc_open_assoc(ICC$PID_000071BF_WSI), assoc=0x00010001, OK
 (wsi$$protocol_binding_compose_d) ProtSeq="wsi_icc"
 (wsi$$protocol_binding_compose_d) NetAddr="SVF"
 (wsi$$protocol_binding_compose_d) EndPoint="ICC$PID_000071BF_WSI"

Я предполагаю, что этопроблема с ресурсами, но не знаю, что нужно изменить.

Любая помощь очень ценится.

TIA

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Gustogusto был на месте - существует общесистемное ограничение OpenVMS на количество разрешенных ассоциаций, и при достижении лимита в 512 ассоциаций (соединений) выдается ошибка 0x0000045c (подробности см. Ниже). На данный момент нет решения этой проблемы. Возможный обходной путь может состоять в том, чтобы сконфигурировать эту машину в кластер, поскольку нет никаких ограничений на ассоциации в настройке всего кластера. Другой возможный обходной путь может заключаться в периодической остановке / перезапуске программного обеспечения WSIT.

Журналы IPC подчеркивают, что вызов SYS $ ICC_OPEN_ASSOC () завершается с ошибкой 0x0000045c.

SYS $ ICC_OPEN_ASSOC () открывает «связь» с внутрикластерной связью, чтобы он мог принимать входящие соединения.

Есть способ проверить этот лимит через SDA. Команды:

$ анализ / система SDA> ICC SHOW ASSOCIATIONS отобразит все открытые ассоциации ICC.

Пример вывода:

ICC Ассоциации

            --- ICCPAB Summary Page ---

ICCPAB Addr   Extended Process name     State  Conn Association Name
-----------  ---PID--- --------------- ------- ---- ----------------
 896771C0     00000433 WSI$MANAGER     Open       0 WSI$MANAGER_REPTAR
 896AB440     00000442 MATH_0442       Open       0 ICC$PID_00000442
 896AA2C0     00000442 MATH_0442       Open       0 ICC$PID_00000442_WSI
 896B1080     00000443 STOCK_0443      Open       0 ICC$PID_00000443
 896AA140     00000443 STOCK_0443      Open       0 ICC$PID_00000443_WSI

Затем я создал этот COM-файл для оповещения о приближении лимита, чтобы позволить сборщикам мусора очистить потерянные процессы:

$ SET NOON
$ SET NOVERIFY
$ SUBMIT/QUE='<batch que name here>'/AFTER="+00:10"/LOG=ICC.LOG ICC.COM
$ ANALYSE/SYSTEM
SET OUTPUT/SINGLE HPESUPPORT-ICC.TXT
ICC SHOW ASSOCIATIONS
EXIT
$ pipe sear HPESUPPORT-ICC.TXT "ws1_","open"/mat=and/stats/out=ICC.TXT|search sy
s$input "records matched"/out=t.t
$ OPEN/READ INFILE T.T
$ READ/END_OF_FILE=EOF INFILE Temp
$ CLOSE INFILE
$ TEMP = F$EXTRACT(30, 3, TEMP)
$ IF TEMP .GE. 500
$ THEN
$    mail/subject="ICC limit alert" ICC.TXT "email address here"
$ ENDIF
$ EOF:
$ PURGE/KEEP = 144 icc.log
$ PURGE/KEEP = 144 hpesupport-icc.txt
$ PURGE/KEEP = 144 t.t
$ !+
$ ! Show connection count chronologically.
$ !-
$ !type t.t;*/out=p.t
$ !sort/key=(pos:30,siz=3) p.t sys$output
$ !+
$ ! List connections in user name sequence.
$ !-
$ !sear hpesupport-icc.txt "Process Name:     WS1_"/format=dump/out=p.t
$ !sort/key=(pos:42,siz=12) P.t sys$output
$ EXIT

Теперь выясним, почему процессы теряются, поскольку это предотвратит столь быстрое достижение предела.

0 голосов
/ 30 марта 2019

Похоже, вы получаете SS$_SSFAIL (1116) ошибку от sys$icc_open_assoc, то есть от ICC (внутрикластерная связь):

SS$_SSFAIL  Transport association name table is full, systemwide.

Возможно, какой-то процесс незавершите работу, поэтому ресурсы не освобождаются.

Цитирование из документа:

SYS$ICC_OPEN_ASSOC

... Пространство имен ассоциации является контролируемым ресурсом,Информацию об управлении этим ресурсом см. В Руководстве HP OpenVMS System Manager .

Попытка открыть ассоциацию с именем, не авторизованным, как описано в Руководстве HP OpenVMS System Manager. завершится с ошибкой SS $ _NOPRIV, возвращенной вызывающей стороне.Помимо создания записей в пространстве имен локальной ассоциации системы, вызов $ ICC_OPEN_ASSOC может также сделать запись в простом общекластерном реестре активных ассоциаций.

Доступ к ассоциации можно получить только из режима, в котором онабыл открыт.Внутренние режимы не могут использовать ассоциацию по умолчанию.

Приложение может открыть любое количество ассоциаций в соответствии с доступной квотой процесса BYTLM.В настоящее время существует общесистемный лимит в 512 открытых ассоциаций.В кластере нет ограничений.

...