0

我继承了一个我几乎没有经验的“技术”堆栈,并希望得到帮助来解决问题。使用 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

4

2 回答 2

0

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

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

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

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

$analyze/system SDA> ICC SHOW ASSOCIATIONS 将显示所有打开的 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

现在开始找出进程被孤立的原因,因为这将阻止如此快地达到限制。

于 2019-06-20T11:14:43.547 回答
0

您似乎从 ICC(集群内通信)服务中收到SS$_SSFAIL (1116)错误:sys$icc_open_assoc

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

也许,某些进程没有干净地退出,因此没有释放资源。

引用文档:

SYS$ICC_OPEN_ASSOC

...关联名称空间是受控资源。有关管理此资源的信息,请参阅HP OpenVMS System Manager's Manual

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

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

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

于 2019-03-30T02:02:41.287 回答