我们内部有一个自定义应用程序,其中大量 Windows 客户端正在访问运行 V5R4 的 IBM i (AS/400) 上的成像服务。有时,在 CPU 负载过重的情况下,客户端无法建立 TCP/IP 连接。由于 IBM i 对我来说有点陌生,我别无选择,只能开始将其与其他操作系统(主要是 *NIX 和 Windows)进行比较。它们都具有临时端口的概念和使用,通过这些端口建立与客户端的连接。在其他操作系统中,连接池的大小各不相同,从大约四千到六万四千不等。在阅读本手册,IBM i 是否也支持临时端口范围配置,或者它是否默认使用从 1024 到 65535 的整个 IP 池?
答案1
据我所知,IBM i 及其前代产品使用从 1024 到 65535 的整个端口范围。
图像服务也是内部编写的吗?还是供应商应用程序?
许多本机 IBM i 应用程序使用单独的进程(称为作业)而不是多线程单个进程来处理客户端服务器活动。由于启动新进程的成本相对较高,因此标准做法是让一组可用的“预启动”作业等待处理请求。但是,如果大量连接请求同时进入,则在启动新作业时连接可能会延迟。还可以限制一次使用的连接总数。
例如,让我们看一下处理 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
有关更多详细信息,请参阅调整预启动作业条目
答案2
使用临时端口的不是操作系统,而是应用程序。操作系统并不是真正的决定因素。话虽如此,@Charles 有一个很好的答案,可以尝试在尝试安排新的传入请求时避免服务器不堪重负。