项目经验:在调用LotusScript Arrayunique 函数时会导致Domino 服务器或Notes 客户端宕机
2011-09-18 13:23
447 查看
这周有个项目出现的问题:就是DOMINO在毫无症状的情况下突然死机,排查了几天总算找到了问题所在。由于这类错误隐藏在LS中,所以很难查到。希望各位Coding时注意。
环境:(产品,平台,机型,软件版本,等)
产品:Lotus Notes/Domino
平台:Windows
软件版本:6.5-7.2
问题描述:
当原数组超出一定数量的元素时,调用Arrayunique 函数会导致Domino服务器或Notes客户端宕机。在一个具体客户的实例中,原数组包含4085个元素,并被定义为Variant类型的变量。在7.02以上版本虽然不会造成DOMINO宕机,但会造成HTTP请求进程无法结束,使服务器CPU始终为100%
具体代码实例:
Dim crashvar As Variant
Dim testsize As Integer
Dim i As Integer
testsize=4086
Redim crashvar(testsize)
For i = 1 To testsize
crashvar(i)="a"
Next
crashvar = Arrayunique(crashvar)
在NSD中,导致宕机的线程以下面的条目开头:
nnotes.LSsThread::ArrayAllocCopy
nnotes.LSsMathOp::Assignment
解决办法:将数组定义为一个相对独特的类型,而不是Variant类型。
例如:
Dim crashvar() As String
Dim testsize As Integer
Dim i As Integer
Dim x As Variant
testsize = 4086
Redim crashvar(testSize)
For i = 0 To testsize
crashvar(i)="a"
Next
x = Arrayunique(crashvar)
建议:在开发中出于性能,内存消耗上考虑,尽量少使用或不要使用数组以及Variant数据类型。(不要使用动态数组,因为在小数据范围内不会造成数据溢出,但在大数据范围内可能会达到数组上限。)
环境:(产品,平台,机型,软件版本,等)
产品:Lotus Notes/Domino
平台:Windows
软件版本:6.5-7.2
问题描述:
当原数组超出一定数量的元素时,调用Arrayunique 函数会导致Domino服务器或Notes客户端宕机。在一个具体客户的实例中,原数组包含4085个元素,并被定义为Variant类型的变量。在7.02以上版本虽然不会造成DOMINO宕机,但会造成HTTP请求进程无法结束,使服务器CPU始终为100%
具体代码实例:
Dim crashvar As Variant
Dim testsize As Integer
Dim i As Integer
testsize=4086
Redim crashvar(testsize)
For i = 1 To testsize
crashvar(i)="a"
Next
crashvar = Arrayunique(crashvar)
在NSD中,导致宕机的线程以下面的条目开头:
nnotes.LSsThread::ArrayAllocCopy
nnotes.LSsMathOp::Assignment
解决办法:将数组定义为一个相对独特的类型,而不是Variant类型。
例如:
Dim crashvar() As String
Dim testsize As Integer
Dim i As Integer
Dim x As Variant
testsize = 4086
Redim crashvar(testSize)
For i = 0 To testsize
crashvar(i)="a"
Next
x = Arrayunique(crashvar)
建议:在开发中出于性能,内存消耗上考虑,尽量少使用或不要使用数组以及Variant数据类型。(不要使用动态数组,因为在小数据范围内不会造成数据溢出,但在大数据范围内可能会达到数组上限。)
相关文章推荐
- 项目经验:在调用LotusScript Arrayunique 函数时会导致Domino 服务器或Notes 客户端宕机
- 项目经验:在调用LotusScript Arrayunique 函数时会导致Domino 服务器或Notes 客户端宕机
- Lotus Notes/domino事件、属性、函数和命令
- 客户端通过 JSON直接调用服务器的函数。
- [项目经验]在debug版编译加入/GZ选项后可发现构造函数中调用虚函数错误
- 如何查看连接到Domino服务器上的Notes客户端的IP地址
- 客户应用程序调用COM API CoFreeUnusedLibraries()时,COM库遍历这个客户端应用已加载所有的DLL服务器并通过调用它的DllCanUnloadNow()函数查询每一个服务器
- Lotus Notes/domino事件、属性、函数和命令
- 重新配置Domino服务器、Notes客户端
- Lotus Notes/domino事件、属性、函数和命令
- Domino服务器以及Notes客户端重新配置的方法
- Lotus Notes/Domino C API 内存管理机制介绍
- 一个项目调用另一个项目中的函数
- VSS客户端不能访问问题“unable to open user login file//服务器项目管理目录/data/logedin/用户名.log
- VSS客户端不能访问问题“unable to open user login file\\服务器项目管理目录\data\logedin\用户名.log ”
- 管理Domino服务器notes.ini实用参数
- 第七课 函数的嵌套调用【项目1-4】
- Linux开发调试经验整理(二)——信号处理函数陷阱:调用malloc导致死锁
- 使用并理解 IBM Lotus Notes/Domino 中的 Reader Names 字段
- 学习JavaFX Script,第三部分:使用JAX-WS进行客户端-服务器通信