我的设置如下:Java 客户端,使用 Java 套接字,拨号到 CICS 5.2 应用程序(寻址的程序是用 COBOL 编写的)。Java 客户端很粗心:如果他们有 CICS 的工作,他们会发送一个事务请求。
问题是当它们中的太多发送请求时,CICS 硬件无法足够快地处理它。
发生的情况是 CICS 套接字侦听器通常不关心 CICS 的过载程度。因此,它尝试为所有传入的事务请求创建并发服务器。但是,新的并发服务器已经没有空间了(请参阅下面 * 中的附加信息),因为 CICS 正忙于处理它已经拥有的东西。因此,这些尝试会在那里挂起一段时间,然后报告 GIVESOCKET TIMEOUT。
在 Windows 7 上使用 Micro Focus Enterprise Server 2.2。
专业实施如何处理这个问题?我知道我的硬件足够快,只是它没有处理队列的好方法。
我在想可能是一个信号量,如果已经有队列,则向客户端指示不要向侦听器发送请求?也许允许 GIVESOKET 超大超时?
顺便说一句,并发服务器在 CICS 5.2 中是否得到公平处理?我的意思是,当有空间时,第一个被拒绝处理并放入队列的并发服务器是第一个执行的?
谢谢。
- Micro Focus ES 有这些称为 SEP 的东西。它们就像核心。例如,您为每个 CICS 应用程序定义 10 个 SEP,并且在该应用程序上并行运行的每个程序都持有一个 SEP,直到完成。如果您有 10 个 SEP 和 10 个正在运行的程序,则第 11 个程序将排队等待 SEP 空闲。每个 CICS TCP/IP 并发服务器都需要自己的 SEP。因此,“没有空间”是指所有 SEP 都加载了并发服务器的实例,并且 EZASOKET 侦听器 (CSKL) 无法创建新的并发服务器并产生 GIVESOKET 超时(这是侦听器在新制作的并发服务器,但因为没有这样的服务器 - 它超时)