2.4. 挂起和关闭 JBoss EAP Gracefully


JBoss EAP 可以暂停或正常关闭。这允许活动请求正常完成,而无需接受任何新请求。超时值指定挂起或关闭操作将等待活跃请求完成的时间。在服务器被暂停时,仍然处理管理请求。

安全关闭在服务器范围内协调,主要侧重于请求进入服务器的入口点。以下子系统支持安全关闭:

Undertow
undertow 子系统将等待所有请求完成。
mod_cluster
modcluster 子系统将通知负载均衡器正在 PRE_SUSPEND 阶段挂起。
EJB
ejb3 子系统将等待所有远程 EJB 请求和 MDB 消息发送完成。在 PRE_SUSPEND 阶段停止发送到 MDB 的交付。EJB 定时器将被暂停,在服务器恢复时将激活 missed 计时器。
EE Concurrency

服务器将等待所有活动作业完成。所有排队的作业都将被跳过。目前,由于 EE Concurrency 没有持久性,因此跳过的已排队的作业将会丢失。

虽然服务器处于暂停状态,但调度的任务将继续在调度的时间执行,但会抛出 java.lang.IllegalStateException。服务器恢复后,调度的任务将继续正常执行,在大多数情况下,不需要重新调度任务。

batch
服务器将在超时时间内停止所有正在运行的作业,并延迟所有调度的作业。
注意

当前安全关闭不会拒绝入站远程分布式事务或新的入站 JMS 消息。目前,由动态活动调度的 EE 批处理作业和 EE 并发任务目前被允许进行。但是,提交的 EE 并发任务会在执行时传递超时窗口当前错误。

请求由 request-controller 子系统跟踪。如果没有此子系统,暂停和恢复能力有限,服务器在暂停或关机之前不会等待请求完成。但是,如果您不需要此功能,则可以删除 request-controller 子系统来显著提高性能。

2.4.1. 挂起服务器

JBoss EAP 7 引入了 挂起 模式,可安全暂停服务器操作。这允许所有活动请求正常完成,但不接受任何新请求。暂停服务器后,可以将其关闭,返回到正在运行的状态,或者保持暂停状态来执行维护。

注意

管理接口不受暂停服务器的影响。

可以使用管理控制台或管理 CLI 暂停服务器并恢复。

检查 Server Suspend State

可以使用以下管理 CLI 命令查看服务器挂起状态:生成的值为 RUNNINGPRE_SUSPENDSUSPENDINGSUSPENDED 之一。

  • 检查单机服务器的挂起状态。

    :read-attribute(name=suspend-state)
  • 检查受管域中服务器的暂停状态。

    /host=master/server=server-one:read-attribute(name=suspend-state)
suspend

使用以下管理 CLI 命令暂停服务器,指定超时值(以秒为单位),让服务器等待活动请求完成。默认值为 0, 它将立即暂停。值 -1 将导致服务器无限期等待所有活跃请求完成。

每个示例最多等待 60 秒,以便请求在挂起前完成。

  • 暂停单机服务器。

    :suspend(timeout=60)
  • 暂停受管域中的所有服务器。

    :suspend-servers(timeout=60)
  • 在受管域中暂停单个服务器。

    /host=master/server-config=server-one:suspend(timeout=60)
  • 暂停服务器组中的所有服务器。

    /server-group=main-server-group:suspend-servers(timeout=60)
resume

可以使用适当级别的 restore 命令(服务器、服务器组、整个域),服务器可以返回到正常的运行状态,以接受新请求。例如:

:resume

2.4.2. 正常关闭服务器

如果在停止服务器时指定了适当的超时值,服务器将被正常关闭。发出该命令后,服务器将被暂停,并等待所有请求的指定超时,然后再关机。

使用以下管理 CLI 命令正常关闭服务器。指定服务器等待活跃请求完成的超时值(以秒为单位)。默认值为 0, 它将立即关闭服务器。值 -1 将导致服务器无限期等待所有活跃请求完成,然后再关机。

每个示例都等待 60 秒,以便请求在关闭前完成。

  • 正常关闭单机服务器。

    :shutdown(timeout=60)
  • 正常停止受管域中的所有服务器。

    :stop-servers(timeout=60)
  • 在受管域中正常停止单个服务器。

    /host=master/server-config=server-one:stop(timeout=60)
  • 正常停止服务器组中的所有服务器。

    /server-group=main-server-group:stop-servers(timeout=60)
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.