文章
· 六月 8, 2023 阅读大约需 7 分钟
没有虚拟 IP 地址的数据库镜像

++ 更新:2018 年 8 月 1 日

使用内置于 Caché 数据库镜像的 InterSystems 虚拟 IP (VIP) 地址有一定的局限性。特别是,它只能在镜像成员驻留在同一网络子网时使用。当使用多个数据中心时,由于增加了网络复杂性( 此处有更详细的讨论),网络子网通常不会“延伸”到物理数据中心之外。出于类似的原因,当数据库托管在云端时,虚拟 IP 通常无法使用。

负载均衡器(物理或虚拟)等网络流量管理设备可用于实现相同级别的透明度,为客户端应用程序或设备提供单一地址。网络流量管理器自动将客户端重定向到当前镜像主服务器的真实 IP 地址。自动化旨在满足灾难后 HA 故障转移和 DR 升级的需求。

2 0
0 60
文章
· 三月 31, 2023 阅读大约需 4 分钟
Web Gateway系列(5)配置Web Gateway使用SSL/TLS连接到IRIS

《WebGateway系列(4): 配置HTTPS访问IRIS的Web服务》中介绍了在Web服务器中配置SSL/TLS以实现从客户端浏览器到Web服务器之间的安全连接,从Web服务器到IRIS之间是否也可以通过配置SSL/TLS建立起安全连接呢?尤其是在Web服务器与IRIS没有安装在同一台Server上的情况下,这段连接的安全性也是需要考虑的。答案是肯定的,接下来我们就来介绍下配置Web Gateway使用SSL/TLS连接到IRIS的基本步骤。

1.首先,我们先准备一下所需要的证书。通讯的双方为Web Gateway 和 IRIS Super Server, 双方都需要准备好各自的证书和key。IRIS自带的Public Key Infrastructure(PKI)功能内置了OpenSSL,可以用来生成服务器端及客户端的证书和key。在使用此功能时,IRIS可以同时作为CA Server和CA Client,作为CA Server时可以生成自签名的证书,可以批准CA Client的证书申请并将证书下发给CA Client。

1 0
0 188
文章
· 二月 21, 2023 阅读大约需 4 分钟
Linux Transparent HugePages 及其对 InterSystems IRIS 的影响

** 2018 年 2 月 12 日修订

虽然本文是关于 InterSystems IRIS 的,但它也适用于 Caché、Ensemble 和 HealthShare 发行版。

介绍

内存以页为单位进行管理。 Linux 系统上的默认页面大小为 4KB。 Red Hat Enterprise Linux 6、SUSE Linux Enterprise Server 11 和 Oracle Linux 6 引入了一种根据系统配置提供 2MB 或 1GB 大小的增加页面大小的方法,称为 HugePages。

起初 HugePages 需要在启动时分配,如果管理或计算不当可能会导致资源浪费。因此,各种 Linux 发行版引入了默认启用 2.6.38 内核的Transparent HugePages。这是一种自动创建、管理和使用 HugePages 的方法。以前的内核版本也可能具有此功能,但可能未标记为 [always] 而是设置为 [madvise]。

Transparent Huge Pages (THP) 是一种 Linux 内存管理系统,它通过使用更大的内存页面来减少在具有大量内存的机器上进行Translation Lookaside Buffer (TLB) 查找的开销。然而,在当前的 Linux 版本中,THP 只能映射单个进程的堆栈空间。

1 0
0 82

正如之前在 2022 年全球峰会上宣布的那样,InterSystems 将停止交付或安装基于 Apache 的web服务器(通常称为私有web服务器或 PWS);此更改目前计划用于 InterSystems IRIS 2023.2。


使用这种新方法,您可以完全控制选择最适合您目的的 Web 服务器,以及如何配置、维护和更新它。这一变化的一个主要好处是您将不再需要等待 InterSystems 的更新套件来获得最新版本,这在安全漏洞情况下尤其重要。 InterSystems 将提供可用于帮助配置 Apache 或 IIS 的工具。 (请注意,InterSystems IRIS Community Edition 将继续安装 PWS。)


安装 Web 服务器是一个常见的过程,通常很容易 - 各个 Web 服务器供应商都有详细的文档记录。

以下是适用于 Ubuntu、Windows 和 macOS 的示例。它们演示了快速安装,因此您可以看到当 InterSystems 产品不包含或安装 Web 服务器时的新行为。 (请注意,此代码按原样提供,不受支持,也不足以托管关键任务或数据敏感的应用程序。)

1 0
0 125

InterSystems的产品包括Caché/Ensemble/Health Connect/IRIS/IRIS for Health,均基于进程,当它们及在它们之上开发的应用运行时,您能在操作系统上看到大量cache/irisdb进程。下面以InterSystems IRIS为例,来说明下InterSystems产品的内存使用。

InterSystems IRIS进程的内存使用主要有以下两大类,

第一类,进程私有内存。

私有内存只由该进程使用,且会为每个进程单独分配。进程初始时会被分配128KB的内存空间,随着进程运行根据需要,这个内存空间会自动扩展。
InterSystems IRIS对于进程内存使用的限制是Maximum Per-Process Memory, 该参数的设置位置在系统管理门户SMP,System > Configuration > Memory and Startup,允许的取值范围是256KB到2147483647KB(2TB)。如果系统遇到<STORE>错误,那么可以尝试增加该数值,来解决进程运行时无法申请到更多内存的问题。从InterSystems IRIS开始,我们推荐将该值设置为-1, 也就是取上限2TB。

0 0
0 81
文章
· 一月 30, 2022 阅读大约需 2 分钟
FAQ 常见问题系列 -- 系统管理篇 Linux OOM Killer问题

Linux内核机制OOM Killer,也即Out of Memory Killer, 顾名思义,该机制的主要职能就是当内存不足时,选择并杀掉一些进程,以使系统继续运行。

Caché/Ensemble/IRIS的多个客户曾经遇到过与此相关的系统宕机,宕机的直接原因是数据库核心写进程Write Daemon被OOM Killer选中并杀掉了,在我们的日志文件中可以看到如下信息,

06/15/21-10:50:31:035 (13579) 3 Daemon WRTDMN (pid 13588) died. Freezing system
06/15/21-10:52:25:940 (13601) 2 System Process 'WRTDMN' terminated abnormally (pid 13588)

与之对应,在操作系统的日志文件中可以看到如下记录,

1 0
0 563

1 磁盘空间不足的常见情形
1)Journal所在磁盘空间不足。造成这种情况的原因有多种,比如,Mirror中备机未处于宕机状态,因此主机保留了Journal文件。
2)数据库所在磁盘空间不足。比如,集成平台上Ensemble/Health Connect/IRIS for Health的消息从未清除过,导致消息数据库DAT文件不断增大,直至将磁盘空间用尽。

我们可以看到以上两种情形下,Mirror都帮不上忙,也就是说一旦问题出现,主机和备机都没有办法立即承担起业务系统的运行,
第1)种,备机可能在故障出现前就已经宕机很长一段时间而没被发现,备机的数据很可能已经与主机严重不一致。实际上,主机之所以保留了大量的journal文件没有删除,就是为了让备机同步数据时使用。
第2)种,虽然配置了Mirror,但是消息主库正常情况下都是镜像库,在一个健康的Mirror中,备机和主机的镜像库数据保持同步,镜像库大小应当是相同的,假设主备机的硬件配置相同(这也是我们推荐的方式)那么磁盘空间不足在备机上同样存在。

5 0
0 184
文章
· 八月 13, 2021 阅读大约需 1 分钟
FAQ 常见问题系列--Object Script篇 字符串%String长度限制

众所周知,Object Script是一个弱类型开发语言,%String是我们非常常用的一个类型,时不时有客户在初次接触Object Script编写程序时遇到%String长度限制的问题,在这里做一个简单总结,以便于相关开发人员作为参考。

1. MAXLEN设置字符串的长度。
Property Name As %String(MAXLEN = 50);
a) 如果不设置MAXLEN, 默认长度限制为50
b) MAXLEN = "", 没有限制长度,也就是字符串本身的长度限制。

如果超限,您将会看到如下报错,
错误 #7201: 数据类型值'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'的长度超过50允许的MAXLEN

2. 字符串本身的长度限制。
在没有开启长字符串的情况下,%String类型的长度限制是32,767个字符。

0 2
0 335

提示:本文包含在Java中通过JDBC Driver对Caché/IRIS数据库进行查询的示例代码。

近期有客户反应使用Java从老版本Caché中读取数据时,如果数据中包含long varchar, Caché数据库中与之对应的属性类型为%Stream.GlobalCharacter,即使实际上该流数据长度非常小,也会成十几倍的降低性能。

大家先来看一段代码,

0 2
0 115

与Windows上默认安装为服务随机自启动不同,我们在Linux上安装完InterSystems IRIS后,默认是没有配置系统服务的,需要做手动配置。本文提供使用systemd方式来配置InterSystems IRIS服务随机自启动的简单示例,供大家参考。

假设我们已经安装了InterSystems IRIS产品,安装完成后您可以通过iris list来来查看实例信息,包括安装路径,如:"/intersystems/iris"

0 0
0 173

如果您在升级了系统之后,打开SMP时看到如下报错,
ERROR #5001: 对象的服务器版本与客户端发送的版本不一致: %ZEN.Component.vgroup

一般情况下,这个报错是由浏览器缓存中残留的过期信息造成的,可以通过清除浏览器缓存来解决。

如果清除浏览器缓存之后仍然未能解决此问题,请您前往系统安装目录, 如:d:\InterSystems\IRIS\CSP\broker,查看css/js文件的时间戳在本次更新安装之后是否并没有相应地更新,如果没有,请您做以下尝试,
1)在IRIS中更改数据库IRISLIB, 之前的版本是CACHELIB, 取消只读装载,方法如下,打开管理门户SMP, 系统管理->配置->本地数据库,选择要更改的数据库,取消"只读方式挂载",点击【保存】。
2)重新编译%Zen组件,
w ##class(%SYSTEM.OBJ).Compile("%ZEN.Component.vgroup")
此时,再次前往,d:\InterSystems\IRIS\CSP\broker,会看到相关的css/js文件时间戳已经更新。
3)恢复上述数据库的只读装载。

1 0
0 168