在启动应用程序时,SGD 使用多种超时时间。可用的超时时间有几下几种:
除执行协议引擎超时时间外,其他超时时间均不在启动 Microsoft Windows 应用程序时应用。
Expect 超时时间在 vars.exp
登录脚本中定义。下表列出了可用的 Expect 超时时间及其默认值。
超时 | 默认值 |
---|---|
| 30 秒 |
| 40 秒 |
| 20 秒 |
如果 Expect 超时时间已到,脚本将尝试猜测提示信息,然后继续启动应用程序。
timeouts(hostprobe)
超时时间由 unix.exp
登录脚本调用。这是等待 ttahostprobe
二进制文件响应的时间。ttahostprobe
二进制文件用于检查应用服务器是否可用。
ttahostprobe
二进制文件将其响应输出到标准输出 (stdout
) 中,并返回 y
(成功)或 n
(失败)。
在登录阶段允许每个 Expect 命令匹配所需字符串的一段时间。
例如,建立与应用服务器的连接后,默认情况下脚本有 40 秒的时间来匹配登录提示,之后将超时。每次成功匹配后,将重置计时器。在登录过程中,通常会针对登录提示、密码提示和 shell 提示重置超时时间。
增加此超时时间将增加登录过程每个阶段所允许的时间。此超时时间必须足够大,以便允许完成登录的最长阶段。
如果超时时间已到,脚本将假定已登录但无法匹配 shell 提示,然后发送 echo SYNC
到应用服务器以猜测提示字符串。如果触发计时器时用户仍未登录,应用程序将无法启动。否则,会将 shell 提示设置为应用服务器收到 echo SYNC
后立即发送的内容,并继续启动应用程序。
如果看到 echo SYNC
,并且 shell 提示以正常方式结束(显示 $
、%
、#
或 >
),则表明 timeouts(prelogin)
值太短。
用户登录后允许每个 Expect 命令匹配所需字符串的时间。
如果超时时间已到,脚本将移到下一个命令。这可能导致在返回提示之前就已发送命令。
发生此超时的最常见情况是在脚本不正确地设置了 shell 提示时。默认情况下,这会导致每个命令等待 20 秒再移至下一个命令,并且可能触发某个客户端计时器。
客户端计时器使用 clienttimer Tcl 命令(请参见第 E.2.2 节 “
clienttimer
”)进行设置。如果客户端计时器超时,将取消应用程序启动,并显示严重的 ErrApplicationServerTimeout
错误。
客户端计时器在 vars.exp
登录脚本中定义。
下表列出了可用的客户端计时器及其默认值。
计时器 | 默认值 |
---|---|
|
|
| 40 秒 |
| 40 秒 |
| 25 秒 |
| 5 秒 |
完成登录阶段的总时间,从建立连接到收到第一个 shell 提示。
timers(login)
计时器的值必须足够大,以便涵盖所有登录阶段。每个单独的登录阶段(登录提示、密码提示和 shell 提示)都可能一直持续到为 timeouts(prelogin)
超时时间所定义的秒数。此计时器的值必须始终大于 timeouts(prelogin)
Expect 超时时间。
如果增大了 timeouts(prelogin)
Expect 超时时间,请同时增大 timers(login)
计时器,使两者的差值从不小于 10。
从收到第一个 shell 提示到导出所有应用服务器环境变量的总时间。
从设置最后一个环境变量到启动主应用程序的总时间。
生成要执行的命令行的总时间。此计时器仅在启动使用 SCO Merge 协议的 Windows 应用程序时使用。
SCO Merge 协议不再受支持,只能由传统的 SGD Windows 应用程序对象使用。
客户端计时器的总数。请仅在添加或删除客户端计时器时更改此设置。
procs.exp
登录脚本包含一个在发出命令时使用的三秒钟超时时间。这在 proc wait_for_prompt
过程中进行定义。
执行协议引擎有一个默认的 180 秒(三分钟)超时时间。此超时时间从收到启动应用程序的请求时开始,并在应用程序完全成功启动后删除。如果超时时间已到,将取消应用程序启动。此超时时间对每台 SGD 服务器各不相同。
使用以下命令可更改此超时时间:
$ tarantella config edit \
--tarantella-config-execpeconfig-maxlaunchtime secs
使用带 --array 选项的此命令可更改阵列中所有 SGD 服务器的该超时时间。