文章 Tete Zhang · 十二月 18, 2023 2m read

最近在多家现场都遇到了备机长时间宕机导致镜像日志写满磁盘的问题。在这里我将对这个问题发生的原因、发生后的处理、和如何预防这类问题发生进行一些讨论。

问题的发生一般始于一些原因导致的主机(如,01)宕机,进而触发镜像的主备切换。切换后备机(如,02)成为主机,并无缝接管业务。由于业务不受影响,如果不注意监控环境的话,很可能现场技术人员长时间都注意不到镜像的备机(01)是宕机状态。

备机长时间宕机会导致如下问题:

1. 这种情况下如果主机(02)再次遇到问题宕机,镜像将无法发挥其高可用性,无法保持业务稳定运行。

2. 主机(02)产生的镜像日志将无法同步到备机(01)。未同步的日志将一直被保存在主机(02)上不被删除。长此以往镜像日志磁盘将被写满,同样导致主机(02)宕机。

问题发现时切记不要手动从文件夹直接删除主机(02)上的镜像日志。未同步的日志一旦手动删除,镜像将无法自动同步,需要重做主备镜像。

问题发现时如果主机(02)还未宕机,此时尝试解决备机(01)问题,启动备机(01),等待镜像自动同步即可。同步完成之后镜像日志将可以被定时任务定时清除。如果遇到较为复杂的情况,现场请第一时间联系您的软件供应商,软件供应商将协同系联软件全球响应中心一起来解决您遇到的具体问题。

为了避免以上的问题发生,现场运维需要对镜像的状态和磁盘的状态配置监控。

0
0 124
文章 Tete Zhang · 七月 4, 2023 3m read

本文讨论了在使用或维护InterSystems产品中遇到问题时,试图确定问题时可能用到的思路和工具。

一般故障排除

确定问题发生的地点和时间

  • 问题是什么时候开始的?多久发生一次?
  • 问题首先出现在哪里?
  • 问题在什么条件下会被触发?

审查日志中的警告、错误和警报

以下日志可能包含有关该问题的有用信息。可以尝试在以下日志中寻找问题开始前后的警告或报错。

  • 检查 messages.log(IRIS)或者 cconsole.log(Caché and Ensemble)
    • 通过文件系统(<install-dir>/mgr/messages.log)访问messages.log文件,或者
    • 通过管理门户(系统操作>系统日志>Messages Log)访问文件内容
  • 检查production事件日志 (详细信息请参见文档
  • 查看应用程序错误日志 (详细信息请参见文档
  • 查看Web Gateway/CSP Gateway日志
  • 查看网络服务器(IIS/Apache)日志

检查实例是否可以访问足够的存储空间

  • 检查文件系统剩余空间(推荐设置操作系统层级的存储空间低告警)
  • 检查数据库剩余空间
    • 通过管理门户(系统操作>数据库>Freespace View)查看数据库文件内剩余空间百分比
  • 检查Journal日志空间

检查CPU活动

0
0 172
文章 Tete Zhang · 二月 20, 2023 11m read

开发者您好!

这里向介绍@Lorenzo ScaleseOpenAPI-Suite (一个用于从OpenAPI 3.0生成 ObjectScript 代码的工具集)。这个工具集在 2023 年 InterSystems 开发工具大赛的21 个参赛作品中获得专家提名第三名

目前 IRIS 最高支持OpenAPI 2.0 ,但是这个工具支持 OpenAPI 3.0

提供的功能如下。

  1. 在服务器端创建类(与 OpenAPI 2.0相同,首先创建使用 API First理念创建的 REST 调度类所需的类。)
  2. 创建客户端 HTTP 类
  3. 创建客户端Production(业务服务、业务流程、业务操作、Ens.Request、Ens.Response)
  4. 一个 Web 界面,允许您指定要从此工具生成哪些功能
  5. 从 OpenAPI 1.x、2.x 到 3.0 版的转换工具

关于各个功能的详细介绍,请参考@Lorenzo Scales撰写的文章《 OpenAPI Suite - Part 1 》和《 OpenAPI Suite - Part 2 》。

在本文中,我尝试了 1 个功能。其中,以下的应对方案非常好。

0
1 313
公告 Tete Zhang · 二月 16, 2023

InterSystems 产品支持的平台 - 版本更新 (2023 年 2 月

我们经常收到有关 InterSystems IRIS 数据平台支持的平台和框架的问题。此更新旨在分享最近的更改以及我们对即将发生的更改的当前决策。(预测未来是一项棘手的工作,不应将此视为我们对未来支持平台和框架的承诺。)

我们计划大约每 3 个月发布一次此类更新,然后在一年内重新评估。如果您觉得此更新有用,请告诉我们!我们很感激您的建议。

关于更新……

IRIS 生产操作系统和 CPU 架构

红帽企业版 Linux

0
0 185
文章 Tete Zhang · 十月 26, 2022 3m read

“池大小”(PoolSize)设置的值决定了一个组件的作业的量和启动方式。在这篇文章中我们将具体讨论对于不同类型的组件来说“池大小”设置的可能值和这些值所代表的含义。

Pool Size = 1

对于所有的组件来说,运行池大小为1的含义都是一样的: 该组件有且只有一个作业,单独运行该组件的代码,顺序处理发送到该组件的消息(FIFO)。

Pool Size > 1

对于业务进程(BP)和业务操作(BO)来说,当运行池大小大于1时,该组件将运行多个作业(作业数=运行池大小设置数)。每个作业都只运行该组件的代码,但消息处理的顺序将被打乱。将运行池的大小设为大于1的值可以在一定程度上提升组件处理消息的性能,但是每个作业的性能还是受限于系统资源的,所以并不是说组件的性能可以随着运行池的大小增加而无限提升。

对于轮询类业务服务(Polling BS)来说,当运行池大小大于1时,该服务也将运行多个作业(作业数=运行池大小设置数)。但这种配置会导致多个进程对轮询结果产生竞争(race condition),所以一般情况下轮询服务不应将运行池大小设为大于1的数值。

1
0 239
文章 Tete Zhang · 十月 26, 2022 3m read

上线一个新的集成平台production或者组件是需要很多精力的,用户常常需要对每一个组件所满足的需求和所能提供的功能,使用到的协议,以及组件对系统资源的调用有深入细致的了解。在配置好一个production之后,您可能需要将这个production推送到测试或者正式环境,或者需要将一个写好的组件代码应用到不同的项目上。这些时候,production的导出功能可以方便您传输production或组件的配置和代码。

导出

需要导出production时,您可以移步到管理门户 - Interoperability - 相应的命名空间 - 列表 - Production 页面,选择您需要导出的production,再点击页面上的导出键进行导出。如下图1所示:

在弹出的对话框中,您可以选择在导出文件中您想包括的内容。如下图2所示:

您也可以通过管理门户 - Interoperability - 相应的命名空间 - 配置 - Production 页面,点击“Production 设置” - “操作”选项卡 - “导出”键进行导出。弹出的对话框同样如图2所示,会自动包括大部分production及其组件所需要的类。如果需要添加或更改导出的类,可以在此对话框进行操作。

0
0 182
文章 Tete Zhang · 九月 14, 2022 5m read
  1. 从消息查看器看到清除周期以外的消息没有被正常清除

这种情况先抽查这些消息所处的会话中是否有未完成操作周期的消息(状态为除“Completed”“Error”“Discarded”之外的状态)。如有,且定期清除任务配置了“KeepIntegrity”,且该环境并不需要保留这些消息,可通过关闭清除任务中的“KeepIntegrity”配置清除这些会话和包含的消息。如果有这类消息,但是定期清除任务未配置“KeepIntegrity”,可能是定期清除任务的逻辑或消息数据问题导致清楚任务查找的时候没有覆盖这些消息,请联系WRC帮助排查具体原因。

有关定期清除任务的更多信息请参见文档

Purging Production Data | Managing Productions | InterSystems IRIS for Health 2022.1

  1. 从消息查看器看不到清除周期之外的消息,但是^%GSIZE显示有global占据了很大的磁盘空间

这种情况需要具体排查每个较大的global。可能有以下原因:

  • 系统定义的global占用很大空间。您可以联系WRC帮助排查具体原因。
  • 自定义的global占用很大空间。这可能是消息中嵌套的持久化数据或流数据,或者是和消息没有直接关系的独立的表里面的数据。请对创建这种global的代码进行复盘,找到创建逻辑并增加相应的数据管理逻辑。
0
0 161
文章 Tete Zhang · 九月 14, 2022 2m read
  1. 系统文件

系统文件根据版本不同,大约会占用1GB左右的空间。这部分空间是不能省略的,随意删除文件会导致实例无法正常运行。

  1. 备份文件

备份文件应及时转存到另外的磁盘或磁盘分区上,不应与.DAT数据库占用相同的磁盘分区。

  1. Journal日志

Journal日志文件存储路径应设置为与.DAT数据库存储路径不同的磁盘或磁盘分区上,不应与.DAT数据库占用相同的磁盘分区。

  1. 消息存储

因为HSHC集成平台设计上不支持过多的消息存储,用户应该为每个有消息流量的命名空间配置定期消息清除任务。

定义消息清除任务时 “BodiesToo”默认是没有选择的,需要手动选择。系联软件研发核心认为我们的软件不能在客户不知情的情况下自动删除客户自定义的数据,消息也属于客户自定义的数据,所以默认选项只会删除Message Header,不会删除消息本身。但是保留默认值运行清除消息任务就会导致孤立消息(指不存在配套Message Header的消息对象)的问题。BodiesToo=0也是孤立消息产生的主要原因之一。有关孤立消息的常见问题会在之后的文章做进一步讨论。

另一个消息清除任务选项“KeepIntegrity”默认是打开的。如果您需要保留“Queued”,“Suspended”,“Deferred”等未完成所有操作的消息,请保持打开。如果不需要可以关闭。

具体保留多少天的消息(清除周期)可以根据平台业务需求和消息量综合考量决定。

0
0 157