我们有两个系列环境。在一种环境中,Java 程序的运行速度比在另一种环境中慢(十到 15 倍)。
我们尝试对环境进行所有调整。但后来我们意识到存在一些根本性的问题。
仅“Java 版本”在较慢的环境中持续需要 20 到 30 秒。而在较快的环境下它会在 2 秒内响应。
知道什么可能导致这样的问题吗?
遇到这个确切的问题后,这是我的调查/修复:
我的具体问题来自 QShell。在终端中使用命令
strqsh
时,任何命令(如 ls
)都需要 20-30 秒才能开始执行。
经过调查,我发现了以下 IBM 文章,其中指出任何 QShell 实例都会在实际运行命令之前发送
system.domain
的 DNS 请求。
https://www.ibm.com/support/pages/qshell-session-takes-long-prompt-or-time-start-and-run-commands
我的具体情况是 AS400 DNS 配置已过时,因为主要和辅助 DNS 服务器不存在。因此,主机表上任何失败的 DNS 请求都会超时。
为了解决此问题,我使用
cfgtcp
选项 12 进入主机表以查找当前使用的域名,并通过 cfgtcp
选项 10 添加 2 个条目:
w.x.y.z -> 系统和 w.x.y.z -> system.domain
我想指向一个正常运行的 DNS 服务器也可以解决这个问题。
添加这些条目后,修复了 QShell“滞后”、
RUNJVA
命令和通过 ssh 的 java YourProgram
。我想运行 Java 也会在底层使用 QShell 实例。