草庐IT

一次.net code中的placeholder导致的高cpu诊断

背景最近一位朋友找到我,让我帮看他们的一个aspnetcoreservice无端cpu高的问题。从描述上看,这个service之前没有出现过cpu高的情况,最近也没有改过实际的什么code。很奇怪了,会有什么变化导致cpu上去了呢?分析由于比较容易复现(据说一启动service,cpu就上去了),我便让那位朋友在cpu高的时候直接手动把.net进程dump了一下。于是就开始用windbg分析了先看一下案发时进程中的线程情况,毕竟它们是让进程动起来的源泉哈。大部分线程都运行到如下类似位置(下面的callstack是虚拟化的,因为为了朋友的隐私,code已经虚拟化): 这里可以看出有约38/2=1

一次.net code中的placeholder导致的高cpu诊断

背景最近一位朋友找到我,让我帮看他们的一个aspnetcoreservice无端cpu高的问题。从描述上看,这个service之前没有出现过cpu高的情况,最近也没有改过实际的什么code。很奇怪了,会有什么变化导致cpu上去了呢?分析由于比较容易复现(据说一启动service,cpu就上去了),我便让那位朋友在cpu高的时候直接手动把.net进程dump了一下。于是就开始用windbg分析了先看一下案发时进程中的线程情况,毕竟它们是让进程动起来的源泉哈。大部分线程都运行到如下类似位置(下面的callstack是虚拟化的,因为为了朋友的隐私,code已经虚拟化): 这里可以看出有约38/2=1

大语言模型与数据库故障诊断

​上周五客户那边出现了一个很奇怪的故障,刚开始我们以为很简单,一个用户环境的Oracle11g数据库报了一个ORA-4030错误,对于DBA来说,这个错误太常见了,马上联想到物理内存不足了。     不过D-SMART的监控并未产生物理内存不足的告警,从监控指标上看,也没有出现物理内存突然下降的时点。D-SMART的诊断工具中也没有发现任何物理内存不足的情况,从ULIMIT上看也没有看到任何异常,和内存相关的限制都是unlimited。当时有点一头雾水的感觉,这肯定是一个我们以前比较少遇到的场景,并且在我们的运维知识图谱中并没有收录这个故障模型。于是我们再次研究了错误信息,发现OS报错的err

大语言模型与数据库故障诊断

​上周五客户那边出现了一个很奇怪的故障,刚开始我们以为很简单,一个用户环境的Oracle11g数据库报了一个ORA-4030错误,对于DBA来说,这个错误太常见了,马上联想到物理内存不足了。     不过D-SMART的监控并未产生物理内存不足的告警,从监控指标上看,也没有出现物理内存突然下降的时点。D-SMART的诊断工具中也没有发现任何物理内存不足的情况,从ULIMIT上看也没有看到任何异常,和内存相关的限制都是unlimited。当时有点一头雾水的感觉,这肯定是一个我们以前比较少遇到的场景,并且在我们的运维知识图谱中并没有收录这个故障模型。于是我们再次研究了错误信息,发现OS报错的err

从监控到诊断:数据的力量

监控与诊断一直是数据库运维中的两个十分重要的环节,在传统的运维模式中,监控与诊断都是以人为中心的,因此指标与数据的采集也都要围绕人来展开。     监控数据是需要人来看的,通过人的查看,可以发现监控数据中存在的异常或者值得警惕的地方。不同水平的DBA能从数据中看出不同级别的风险。因为是需要人看,所以展示的指标不能太多,否则监控人员就眼花缭乱了。实际上,上图的关键指标的数量对于监控来说已经太多了。对于依靠人的监控而言,简要而直观的指标展示是十分必要的。对于数据库来说,只关注三五个关键指标才能更好的实现人工监控。我的一个金融客户,对于核心系统,他们只关注活跃会化数指标,有一个监控人员随时盯住这个指

从监控到诊断:数据的力量

监控与诊断一直是数据库运维中的两个十分重要的环节,在传统的运维模式中,监控与诊断都是以人为中心的,因此指标与数据的采集也都要围绕人来展开。     监控数据是需要人来看的,通过人的查看,可以发现监控数据中存在的异常或者值得警惕的地方。不同水平的DBA能从数据中看出不同级别的风险。因为是需要人看,所以展示的指标不能太多,否则监控人员就眼花缭乱了。实际上,上图的关键指标的数量对于监控来说已经太多了。对于依靠人的监控而言,简要而直观的指标展示是十分必要的。对于数据库来说,只关注三五个关键指标才能更好的实现人工监控。我的一个金融客户,对于核心系统,他们只关注活跃会化数指标,有一个监控人员随时盯住这个指

聊聊智能诊断模型的构建

​谈到智能化运维,谈智能检测或者智能发现的比较多,谈智能诊断的比较少。智能诊断不好做,因为诊断涉及到复杂的分析与推理。检测与发现可以基于数据的统计学规律,通过训练与建模来不断提升性能,而复杂问题的诊断推理,还是很难通过简单的统计学方法来实现的。前阵子我写过一篇关于莫拉维克悖论的文章,说的是在几十年前,采用知识推理的方法很容易解决一些比较复杂的问题,而一些类似模拟人类的视觉、行动等较为简单的问题反而很难解决。事实上,最近这些年的基于数据分析与统计学的算法让这些当你困扰莫拉维克们的问题变得十分简单了,深度学习可以很好的解决这些问题了。通过统计学的方法,通过深度学习,识别异常变得更为容易了,这是构建

聊聊智能诊断模型的构建

​谈到智能化运维,谈智能检测或者智能发现的比较多,谈智能诊断的比较少。智能诊断不好做,因为诊断涉及到复杂的分析与推理。检测与发现可以基于数据的统计学规律,通过训练与建模来不断提升性能,而复杂问题的诊断推理,还是很难通过简单的统计学方法来实现的。前阵子我写过一篇关于莫拉维克悖论的文章,说的是在几十年前,采用知识推理的方法很容易解决一些比较复杂的问题,而一些类似模拟人类的视觉、行动等较为简单的问题反而很难解决。事实上,最近这些年的基于数据分析与统计学的算法让这些当你困扰莫拉维克们的问题变得十分简单了,深度学习可以很好的解决这些问题了。通过统计学的方法,通过深度学习,识别异常变得更为容易了,这是构建

MachineLearning 9. 癌症诊断机器学习之梯度提升算法(Gradient Boosting)

前   言梯度提升机是一个强大的机器学习技术家族,在广泛的实际应用中显示了相当大的成功。它们可以根据应用程序的特定需求进行高度定制,就像学习不同的损失函数一样。这篇文章提供了一个教程,介绍梯度提升方法的方法论,重点关注建模的机器学习方面。理论信息是补充描述性的例子和插图,涵盖梯度推进模型设计的所有阶段。讨论了处理模型复杂性的注意事项。给出了三个梯度助推应用实例,并进行了综合分析。基本原理梯度提升法的主要思想是,先建立一个某种形式的初始模型(线性、样条、树或其他),称为基学习器;然后检查残差,在残差的基础上围绕损失函数拟合模型。损失函数测量模型和现实之间的差别,例如,在回归问题中可以用误差的平方

MachineLearning 9. 癌症诊断机器学习之梯度提升算法(Gradient Boosting)

前   言梯度提升机是一个强大的机器学习技术家族,在广泛的实际应用中显示了相当大的成功。它们可以根据应用程序的特定需求进行高度定制,就像学习不同的损失函数一样。这篇文章提供了一个教程,介绍梯度提升方法的方法论,重点关注建模的机器学习方面。理论信息是补充描述性的例子和插图,涵盖梯度推进模型设计的所有阶段。讨论了处理模型复杂性的注意事项。给出了三个梯度助推应用实例,并进行了综合分析。基本原理梯度提升法的主要思想是,先建立一个某种形式的初始模型(线性、样条、树或其他),称为基学习器;然后检查残差,在残差的基础上围绕损失函数拟合模型。损失函数测量模型和现实之间的差别,例如,在回归问题中可以用误差的平方