我们有一个自定义应用程序,大量的Windows客户端正在访问运行V5R4的IBM i(AS / 400)上的映像服务。 偶尔,在CPU负载过重的情况下,客户端无法build立TCP / IP连接。 由于IBM对我来说有点陌生,所以除了开始绘制与其他操作系统(主要是* NIX和Windows)的相似之外,别无select。 他们都有一个短暂的端口的概念和使用,连接build立到客户端。 在另一个操作系统中,连接池的大小从大约四千到六万四千不等。 我想知道,在阅读本手册之后 ,如果IBM i还支持临时端口范围configuration,或者默认情况下使用的是从1024到65535的整个IP池?
据我所知,IBM i和它的前辈使用从1024到65535的整个范围的端口。
影像服务是否也在内部编写? 还是供应商的应用程序?
许多本机IBM i应用程序使用单独的进程(称为作业),而不是使用multithreading单个进程来处理客户端服务器活动。 由于开始一个新的过程相对昂贵,标准的做法是有一个可用的“预启动”工作池等待处理请求。 但是,如果大量的连接请求立即进入,可能会在新作业启动时延迟连接。 也可以限制一次使用的连接总数。
例如,让我们看看处理ODBC / JDBC / OLEDB请求的QZDASOINIT作业。
这个命令:
DSPACTPJ SBS(QUSRWRK) PGM(QZDASOINIT)
将显示QZDASOINIT作业正在运行和正在使用的当前,平均和高峰计数:
Prestart jobs: Current number . . . Average number . . . Peak number . . . . Prestart jobs in use: Current number . . . Average number . . . Peak number . . . .
分页会显示第二页的信息:
Program start requests: Current number waiting . . . . . . . . Average number waiting . . . . . . . . Peak number waiting . . . . . . . . . Average wait time . . . . . . . . . . Number accepted . . . . . . . . . . . Number rejected . . . . . . . . . . .
预启动作业通过分配给给定子系统的“预启动作业条目”进行控制。 下面的序列会让你到“”:
dspsbsd qusrwrk
10. Prestart job entries
5=Display details
对于我的QZDASOINIT条目,我有以下几点
Initial number of jobs . . . . . . . . . . . . . : 1 Threshold . . . . . . . . . . . . . . . . . . . : 1 Additional number of jobs . . . . . . . . . . . : 2 Maximum number of jobs . . . . . . . . . . . . . : *NOMAX Maximum number of uses . . . . . . . . . . . . . : 200 Wait for job . . . . . . . . . . . . . . . . . . : *YES
有关更多详细信息,请查看调整预启动作业条目的文档
这不是使用临时端口的操作系统; 这是应用程序。 操作系统并不是真正的决定因素。 话虽如此,@Charles有一个很好的答案,试图阻止服务器在尝试安排新的传入请求时不知所措。