Domino NSD日志诊断/分析

2024-01-28 05:38
文章标签 分析 日志 诊断 domino nsd

本文主要是介绍Domino NSD日志诊断/分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随着Domino服务器在生产环境中的长时间运行,用户量增多,数据量增大后,会带来一系列的问题;如宕机频繁、运行效率低下、系统资源消耗大等现象。本身Domino属于文档型数据库,在数据库中的文档数量越多,数据库越大;访问效率就会越低。大多数项目初期:

程序员为了完成任务或赶工,编写过程中并不会考虑程序运行效率、容错等问题;

在布署运行环境的时候,一般不会全面考虑服务器的运行状况,不会对服务器进行相应的性能优化和调整;所以在数据量增大和用户数增大时,出现性能低下等问题。

基于以上现象,客户满意度达不到,有可能造成项目失败的可能性。

遇到这类情况后,Domino管理员就有必要通过一系列手段来评估目前环境的问题在哪?性能瓶颈在哪?主要什么原因引起的?应该如何进行调整?

在我眼中Domino管理员工作是非常复杂和繁锁的,Domino管理工作可以细分从服务器管理、数据库管理、邮件管理、人员管理、安全管理、复制管理、策略管理等,这些工作你可以一人完成(这个人要相当牛B了,对Domino运行机制,邮件路由机制,复制机制,Internet协议等都要有比较深层次的了解),也可以一个小组来完成。

如果做为一个合格Domino管理员,不懂得如何编写程序,可以说根本算不上一个真正的系统管理员。就像二流黑客拿一些专门的黑客工具黑网站,黑QQ号一样,只知道机械化的做,并不知道为什么要这么做,基础原理是什么。

当你的Domino服务器宕机后,向IBM800电话支持,他们都会要求你提供NSD日志给他们进行分析,经他们分析后,会告诉你宕机原因,是由什么由于引起宕机。

言归正传,我们先讲讲如何分析NSD日志,并从中找出服务器目前的问题所在,宕机目要是由什么引起的。

NSD日志存放于%DominoData%/IBM_TECHNICAL_SUPPORT目录下,文件格式:

nsd_ _ _<日志生成日志(YYYY_MM_DD)>@<日志生成时间(HH_MM_SS)>.log

例:

  • nsd_all_AIX_as2_2008_04_03@17_32_40.log
  • nsd_W32I_as5_2008_07_18@11_07_24.log

以文件名能很快清楚服务器的基本信息。

NSD分析工具有两种(目前我所知道的,也许还有其他的)LazaLotus Notes Diagnostic(简称:LND)两种,大致功能是相同的,Laza因为有SPR库和PMR库支持,可以快速的找出服务器宕机的解释和解决办法,但是SPR库和PMR库,IBM是不对外开放;所以我们使用的话Laza或LND是没区别的。我推荐大家使用LND足够了,简单方便,配合Google查询足够完成NSD分析工作。

如何分析?很简单,安装完LND后,启动Lotus Notes客户端,打开LND库(LND缺省会将lnd.nsf安装在你%NotesData%/LND目录下),如下图:

image

单击"Open & Process a file",打开一个NSD文件,则会将一个NSD进行分析,并将结果保存在Notes文档中。NSD分析结果文档分为以下部分:

  • Stack:记录引起宕机的主要Stack片断信息
  • HighLights:主要强调的错误信息,包括出错任务名称、进程号或内存地址等
  • SPR Search:SPR查询关键字,使用这些关键字,在IBM Support网站上能查询相关信息;(这个是最有效的解决办法之一)
  • Options:设置信息,可以不管
  • Stack related infos:记录详细的Stack信息,分为以下几个部分,其中观察红色加粗部分就可以定位宕机主要原因以及所由哪个用户在使用哪个数据库中哪个文档(文档中调用了哪段程序)所引起的:
    • open database(s) by the process:进程打开的数据库
    • Possible file name(s) in stack frames:可能涉及到的数据库文件名
    • Process Associated Collection(s)&View(s):进程所涉及到的集合和视图
    • Process Handle Table Info:进程所涉及到的Handle Table信息
    • Process Memory:进程使用内存情况
    • Process Memory Mapping:进程使用内存地址映射表
    • Process Top 10 Memory block usage:进程中前10个内存块使用情况
    • Shared OS Fields共享OS区(此处记录了宕机的主要原因)
    • Stack frames Dump:Stack结构回收信息
    • Virtual Thread(s):所涉及的虚拟线程(此处记录了宕机时所涉及到的数据库、文档以及Domino设计元素)
  • System related infos:系统相关信息,如果你对服务器的软/硬件环境非常了解,可不关注此部分,
  • Debug:调试方法,当出现宕机后,可以使用这里提供的方法对Domino服务器进行调试。如果前面的Stack related infos定位不到宕机的真正原因,才使用这里面介绍的方法进行调试;不过大部分错误能在Stack related infos找得到,并配合IBM Support网站或官方论坛找到相应的解决办法。

NSD分析思路

1.通过LND解析NSD后,首先查看Stack信息,如下图:

image

2.从上图不难看出主上宕机原因,然后在SPR Search标签中可得到相关的查询关键字,如下图:

image

通过这些关键字,你能在IBM Support网站上或官方论坛上找到相关的信息或解决方案。找到这些答案基本上分析工作就完成了。根椐IBM Support网站上提供的解决方案,对服务器做出相应的调整即可解决宕机问题。但如果SPR Search标签中并未提供查询关键字(有些NSD并未提供这些,这说明并不是Domino本身BUG所引起的,是由于你写的程序引起了宕机),所以我们得进一步分析是哪个数据库中哪段程序引起这个原因的,HEHE。

3.打开Stack Related Infos标签,展开Shared OS Fields区段,如下图:

image

从上图我们可以看出宕机的原因和引起宕机的服务和相关线程。在某些宕机情况下FaultRecovery中会记录明显的错误,而不是内存地址信息;如:PANIC:XXXXXXXX等,你可以以此为关键字去IBM Support网站上查询相关信息,帮助你分析宕机原因,也可以直接得到答案。^_*

4.从上面示例中,我们得到了引起宕机的线程号,展开Virtual Thread(s)区段,通过比较相关线程号,就能定位到是由哪个数据库中哪个设计元素引起的宕机。如下图:

image

通过相关线程号与VThread ID的对应,我们找到了是由哪个用户操作哪个数据库引起的宕机。其中也记录了用户操作的文档所引起的宕机。其中NoteID为Domino数据库元素(名括设计元素和文档)标识,Class为元素类别。元素类别如下:

Note Class

描述

0x0001

文档

0x0004

表单

0x0008

视图

0x0040

ACL

0x0200

代理

0x0800

公式

5.得到NoteID后,如何定位至元素呢?NSD中NoteID是以10进制方式表示的,如果要在Domino环境中查找相应的元素时,先将NoteID转成16进制再进行查询。

打开Domino Administrator,在“File”标签中选中相应的数据库,在右边工具栏选“Find Note”,输入NoteID,即可找到相应的元素,如下图:

image

通过以上方法对NSD分析,能快速有效的找到服务器宕机的真正原因在哪,并有针对性的提出解决方案;也能找到是由于哪段程序引起了Domino服务器宕机,为什么会引起宕机,可快速的修正代码错误。

以上方法主要通过LND工具进行分析。LND工具并不能100%从NSD中找到问题所在,这时你就得使用LND工具分析+手工分析方式。手工分析方法请参考Hands On NSD。Hands on NSD介绍了NSD文件的组成,分析方法,步骤等。

从项目角度上来说,造成大部分宕机的原因80%以上都是程序代码所造成的。所以开发人员在实施项目或开发产品时应该充分关注自己编写代码的质量,容错,性能,扩展等问题,不要为了完成任务而不注重质量。如果只是为了完成任务,客户满意度达不到,项目不能验收,将来返工,同样也耗费了大量的时间,也给以后的维护人员带来了很大的维护工作量,更重要的是不利于产品构架的扩展和性能高的应用。这年头客户不是傻子,好不好用人家说了算,验不验收人家说了算,不要涂一时快活给整个团队带来麻烦。

现在大家都会说,规范能说出一整套一整套的,但真正做到的没几个。从点滴做起,从自己做起,规范自己就是提高自己。

这篇关于Domino NSD日志诊断/分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/652623

相关文章

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

我在移动打工的日志

客户:给我搞一下录音 我:不会。不在服务范围。 客户:是不想吧 我:笑嘻嘻(气笑) 客户:小姑娘明明会,却欺负老人 我:笑嘻嘻 客户:那我交话费 我:手机号 客户:给我搞录音 我:不会。不懂。没搞过。 客户:那我交话费 我:手机号。这是电信的啊!!我这是中国移动!! 客户:我不管,我要充话费,充话费是你们的 我:可是这是移动!!中国移动!! 客户:我这是手机号 我:那又如何,这是移动!你是电信!!

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h>#include <stdlib.h> void shellSort(int data[], int n){// 划分的数组,例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量,换值int temp;in

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除