如何在Open VMS Web服务集成工具包(WSIT)中解决IPC错误

问题描述 投票:0回答:2

我继承了一个“技术”堆栈,我很少有经验,希望能帮助解决问题。使用OpenVMS Web服务集成工具包从Web浏览器调用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

ipc openvms vms wsit
2个回答
0
投票

您似乎从SS$_SSFAIL (1116)获得sys$icc_open_assoc错误,即来自ICC(群集内通信)服务:

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

也许,某些进程不会干净地退出,因此资源不会被释放。

引用文档:

SYS$ICC_OPEN_ASSOC

...关联名称空间是受控资源。有关管理此资源的信息,请参阅“HP OpenVMS系统管理器手册”。

尝试使用未经HP OpenVMS系统管理员手册中所述授权的名称打开关联将失败,并将错误SS $ _NOPRIV返回给调用方。除了在系统的本地关联名称空间中创建条目之外,对$ ICC_OPEN_ASSOC的调用还可以在活动关联的简单群集范围注册表中创建条目。

只能从打开关联的模式访问关联。禁止使用内部模式使用默认关联。

应用程序可以根据可用的进程BYTLM配额打开任意数量的关联。目前,系统范围内有512个开放关联限制。集群范围内没有限制。


0
投票

Gustogusto现场发现 - 在允许的关联数量上存在OpenVMS系统范围限制,当达到512个关联(连接)的限制时,将引发错误0x0000045c(请参阅下面的详细信息)。目前还没有解决此问题的方法。可能的解决方法是将此计算机配置为群集,因为群集范围设置中的关联没有限制。另一种可能的解决方法可能是定期停止/重启WSIT软件。

IPC日志突出显示SYS $ ICC_OPEN_ASSOC()调用失败,错误为0x0000045c。

SYS $ ICC_OPEN_ASSOC()打开与群集内通信的“关联”,以便它可以接收传入连接。

有一种方法可以通过SDA验证此限制。命令:

$ analyze / system 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

现在关闭以找出为什么进程是孤立的,因为这将阻止极快地达到限制。

© www.soinside.com 2019 - 2024. All rights reserved.