50 个常见的 WebSphere 面试问题和答案

目录

在 IBM 的面试过程中,经常会提出一系列问题,这些问题涵盖了从入门级到经验丰富的各种水平。

我经常收到关于整理 IBM WebSphere Application Server 面试问题的请求,现在我将这些问题汇总起来。

WebSphere 是 IBM 的一款应用服务器(中间件产品),IBM 在中间件市场中占据领先地位。

WebSphere 产品是一个庞大的集合,本文主要关注 WebSphere Application Server。

如果你想了解 WebSphere 套件中都包含哪些产品,请参考以下列表:

  • WebSphere Portal
  • WebSphere DataPower
  • WebSphere Cast Iron
  • WebSphere Extreme Scale
  • WebSphere Front Office
  • WebSphere Message Broker
  • WebSphere MQ
  • WebSphere Real Time
  • WebSphere Remote Server
  • WebSphere Virtual Enterprise
  • WebSphere Community Edition
  • 以及更多产品…

准备好迎接这些挑战性的问题了吗?

2. 什么是涟漪启动(Ripplestart)?

涟漪启动是一种重启 WAS 集群的方法。 它会依次停止并启动集群中的 JVM。 通过执行涟漪启动,可以确保每次只有一个 JVM 处于停机状态,从而避免应用程序的整体中断。

例如,如果你的集群中有 5 个 JVM,当执行涟漪启动时,它会首先停止 JVM1,并在启动 JVM1 后,才会继续停止集群中的其他 JVM。

2. 当 JVM 在服务器上消耗 100% 的 CPU 和内存时,你会怎么做?

首先,需要确定是哪个 JVM 导致资源使用率过高。 获取该 JVM 的线程转储信息,以便进行进一步分析。 同时,作为一种临时解决方案,可以尝试重启该 JVM 来缓解 CPU/内存压力。

3. 什么是节点同步?

IBM WAS 将所有配置信息存储在一个名为“主存储库”的中央仓库中。 每个节点都会有一个本地存储库。

当通过 DMGR 对节点进行任何配置更改时,必须执行同步操作,将配置信息推送至相应节点的服务器。

同步过程始终是从主存储库到本地存储库的单向通信。

4. 如果 DMGR 关闭,应用程序还能正常运行吗?

是的,DMGR 的关闭不会影响正在运行的应用程序。 但是,如果需要通过 DMGR 进行配置修改或应用程序部署,则会受到影响。

5. 如何在 WebSphere 中部署应用程序?

有三种主要的部署方法:

  • 热部署:直接将应用程序文件复制到应用程序目录中。 这种方式适用于非生产环境,但不推荐在生产环境中使用。
  • DMGR:通过 DMGR 控制台部署应用程序,路径为:应用程序 >> 新应用程序。
  • 脚本:使用 wsadmin 脚本或 Ant 任务来进行应用程序部署自动化。

6. 为什么在手动停止或杀死进程后,JVM 会自动重新启动?

这可能是由以下两种原因之一造成的:

JVM 启用了自动重启功能,这是默认设置,可在 JVM>>监控策略下进行配置。

如果不是上述情况,那么可能是系统定时任务中存在一个脚本,该脚本会检查进程状态,并在进程不存在时自动启动它。

7. 你可以将哪些文件类型部署到 WebSphere 中?

通过 DMGR 控制台或脚本,可以部署 WAR、EAR、JAR 或 SAR 模块。

8. 什么是虚拟主机?

虚拟主机允许单个应用程序使用多个 URL(基于 IP 地址或 FQDN)。 这些配置通过 WAS 管理控制台进行设置。

要允许通过特定 URL 访问应用程序,该 URL 必须在虚拟主机中进行配置并与应用程序关联。

9. 当用户抱怨应用程序速度缓慢时,你会如何处理?

应用程序缓慢的原因有很多,因此必须首先确定问题是由 WebSphere 引起的,还是其他组件导致的。 为了隔离问题,可以检查以下几个方面:

  • 是否所有用户都遇到缓慢问题?
  • 是整个应用程序缓慢,还是只有特定功能缓慢?
  • 直接访问 JVM URL(绕过 Web 服务器)时的性能如何?

如果问题出在 JVM 上,可以进行线程转储并检查日志,以找出根本原因。 还需要检查是否有任何资源泄漏或是否存在导致性能下降的问题。

10. 如何在不停止 DMGR 的情况下进行 WAS 配置备份?

进入 DMGR 的 profile 和 bin 文件夹。

执行以下命令进行备份:./backupConfig.sh -nostop

11. WAS 的默认端口是什么?

HTTP 的默认端口是 9080,HTTPS 的默认端口是 9443。更多信息可以参考默认端口文档。

12. 有哪些可用的 WebSphere 版本?

  • WAS – 网络部署
  • WAS – 开发者
  • WAS – z/OS
  • WAS – Hypervisor
  • WAS – Express
  • WAS – Base
  • WAS – Liberty Core

13. 如何生成和传播插件?

  • 登录到 WAS 管理控制台
  • 进入 服务器 >> Web 服务器
  • 选择服务器并点击“生成”和“传播”按钮

14. 你遇到的常见问题有哪些?

以下是一些可能会遇到的常见问题,在面试中你可以诚实地分享自己的经验:

  • 未配置虚拟主机
  • 日志停止更新
  • 内部服务器错误
  • OutOfMemory 异常
  • 应用程序响应缓慢
  • JVM 启动失败
  • 高 CPU/内存/磁盘使用率

15. 如何查看已安装的 WAS 版本?

  • 进入 profile 和 bin 文件夹
  • 执行命令:./versionInfo.sh

16. 如何确定 JVM 是否已启动?

有多种方法可以确认 JVM 是否已启动:

  • 如果有监控工具,检查是否有告警或当前状态。
  • 通过服务器上的命令:ps -ef | grep jvmname 来查找 JVM 进程。
  • 检查是否可以通过 JVM URL 访问应用程序。
  • 使用 telnet 命令测试 JVM URL 和端口是否可以连接。
  • 检查 JVM 端口是否在服务器上处于监听状态。
  • 使用 serverStatus.sh –all 命令查看正在运行的组件。

选择你最方便使用的方法。

17. WebSphere 生成的常见日志文件有哪些?

  • SystemOut.log
  • SystemErr.log
  • native_stdout.log
  • native_stderr.log

18. 如何生成线程转储?

有三种方法可以生成线程转储:

  • 通过 DMGR 控制台:进入故障排除 >> 选择 JVM 并点击 Java core
  • 向 JVM 发送 -3 信号:kill -3 PID
  • 使用 wsadmin.sh 脚本(请参考相关文档)

19. 垂直集群和水平集群有什么区别?

垂直集群中的成员位于同一节点或服务器上,而水平集群的成员则跨越多个节点和服务器。

20. 什么是垃圾回收?

垃圾回收是一个内存管理过程,它会自动释放程序不再使用的对象,从而回收内存。

21. 如何禁用 WebSphere 中的安全性?

可以使用 wsadmin.sh 脚本执行 securityoff 命令来禁用安全性。 关闭安全性后必须重新启动 DMGR。

22. 如何启用详细垃圾回收(Verbose GC)?

默认情况下未启用详细 GC。如果需要启用,请按照以下步骤操作:

  • 进入 服务器 >> 服务器类型 >> WebSphere Application Server
  • 选择 “Java 和进程管理” 下的 JVM >> 进程定义
  • 点击 “附加属性” 下的 Java 虚拟机,然后勾选 “详细垃圾收集” 复选框。

23. 如何配置 WebSphere 在服务器重启时自动启动?

WebSphere 在 /etc/init.d 目录中会自动生成启动脚本,以确保在服务器重启后自动启动。

如果由于某种原因脚本不存在,可以手动创建一个并将其放置在 /etc/init.d 目录下,并通过以下命令启用它:

chkconfig --add WebSphere #脚本文件名
chkconfig WebSphere on

更多关于如何在启动时自动启动服务的信息,请参考相关指南。

24. 如何增加 JVM 的堆大小?

  • 登录到管理控制台
  • 进入 服务器 >> 服务器类型 >> WebSphere 应用程序服务器
  • 选择 JVM >> 进程定义 >> Java 虚拟机

在此处可以配置初始堆大小和最大堆大小。

25. 当节点代理(nodeagent)宕机时,可以同步节点吗?

不可以,必须先停止节点代理才能进行节点同步。

26. 停止和启动 DMGR、节点代理和 JVM 的命令是什么?

停止命令:

  • JVM – stopServer.sh JVM名称
  • 节点代理 – stopNode.sh
  • DMGR – stopManager.sh

启动命令:

  • JVM – startServer.sh JVM名称
  • 节点代理 – startNode.sh
  • DMGR – startManager.sh

27. WAS 8.5.5 的新特性有哪些?

主要包括:

  • Java SE 7 支持
  • HPEL 日志记录
  • 内置健康管理
  • 自由概要文件
  • 智能路由
  • 动态集群
  • JDBC 4.1 集群
  • Web 2.0 支持

更多详细信息请参考相关文档。

28. 节点联合(Node Federation)是什么意思?

在 WebSphere 中,节点联合是指将一个节点添加到单元中。 通过 addNode.sh 命令完成,根据节点大小,这可能需要几分钟。

29. 什么是 FFDC?

FFDC (First Failure Data Capture) 是 WebSphere 在运行时捕获事件和错误信息的功能。 FFDC 数据对于问题分析非常有帮助,IBM 支持人员在处理问题时经常会需要这些信息。

30. 你能解码 WebSphere 密钥库的 XOR 吗?

是的,可以使用在线工具:http://strelitzia.net/wasXORdecoder/wasXORdecoder.html

31. WebSphere 默认使用哪种脚本语言?JACL 还是 Jython?

JACL 是 WebSphere 中默认的脚本语言。

32. 如何在 WebSphere 8.5.x 中应用修订包?

可以使用 IBM Installation Manager(IM)来应用修订包。 有关详细说明,请参考相关指南。

33. 你们支持哪些环境?

诚实地说明你们支持的环境,比如:

  • 开发环境
  • CIT(持续集成测试)环境
  • SIT(系统集成测试)环境
  • UAT(用户验收测试)环境
  • 演示环境
  • 预生产环境
  • 生产环境
  • 分期环境
  • QA(质量保证)环境

34. 你们的 Web 服务器托管在哪里?

描述你们的应用程序架构。 在典型的面向互联网的应用程序生产环境中,Web 服务器通常位于 DMZ 中,而应用程序服务器则位于核心网络中。

这意味着你需要在 Web 服务器和应用程序服务器之间的防火墙上允许必要的端口。

35. 什么是会话亲和性(Session Affinity)?

会话亲和性,也称为持久会话,它允许客户端请求绑定到特定的 JVM。 这意味着来自同一用户的请求始终会被路由到相同的 JVM。

36. 你可以在单个 JVM 中部署多个应用程序吗?

是的,只要每个应用程序的上下文根是唯一的,就可以在单个 JVM 上部署多个应用程序。

37. 你在 WebSphere 中使用哪个数据库?

说明你使用的数据库类型。 大多数组织使用 Oracle 数据库,但 WebSphere 也支持以下数据库:

  • DB2
  • Oracle Database
  • Microsoft SQL Server
  • Sybase

38. 如何将 Web 服务器连接到 WAS?

有两种方法可以将 Web 服务器连接到 WAS:

  • 使用插件:这是推荐的方法,需要在 Web 服务器上安装 WAS 插件。
  • 使用 ProxyPass:如果使用的是 Apache 服务器,并且不想使用插件,可以使用 ProxyPass 指令来连接到 WAS JVM。

39. WAS 前面需要 Web 服务器吗?

建议在 WAS 前面使用 Web 服务器,以获得更好的安全性、性能和可维护性。

40. 什么是单元(Cell)?

一个单元是一组逻辑节点,它可以包含一个或多个节点。 单元中的所有集群和组件都通过一个管理控制台进行管理。

41. 管理控制台的默认会话超时时间是多少?

30 分钟

42. 什么是修订包?

修订包是 IBM 提供的补丁集合,通常包含错误修复、安全补丁和性能改进。

43. WebSphere 支持哪些注册表或存储库?

  • 联合存储库
  • 本地操作系统
  • 独立 LDAP 注册表
  • 独立的自定义注册表

44. 什么是共享库?

建议创建共享库以减少重复库文件。 一个共享库可以被单元内的多个应用程序使用。

45. 什么是上下文根?

每个应用程序的上下文根在单元中应该是唯一的。 它定义了部署描述符并用于访问应用程序。

例如,如果应用程序 A 的上下文根是 “retail”,那么可以通过 http://servername:port/retail 来访问应用程序。

46. WAS 插件的配置文件名是什么?

WebSphere 插件的配置文件名是 plugin-cfg.xml。

47. 如何更改 WebContainer 线程池的大小?

进入 JVM >> 线程池 >> WebContainer 可以更改 WebContainer 线程池的大小。

48. 可以更改已部署应用程序的上下文根吗?

是的,可以更改。 在管理控制台中,进入应用程序并点击“Web 模块的上下文根”即可修改。修改后必须重新启动 JVM。

49. 哪个脚本可以更改 profile 使用的 Java SDK?

managesdk.sh 脚本位于 bin 文件夹中,可以使用它来更改 SDK。

50. 什么是 PMT?

PMT (Profile Management Tool) 是用于创建和管理 WebSphere 配置文件的 GUI 工具。

希望以上信息能帮助你顺利通过 WebSphere 管理员的面试。 如果你在简历和面试方面需要更多帮助,请参考这个 教程