生产调试

为什么在生产中进行调试是如此诱人?

在我的第一份工作中,我要做的任务之一是修复一个错误,该错误过去在非常复杂的生产系统中有时会发生。 很简单! - 我想。 我将在开发环境中重现同样的情况,找到虚线,实施快速修复,然后完成! 但是,事实证明,无法复制与生产中完全相同的场景-因此一段时间后,我放弃了这个想法。 我被迫花费数天时间分析日志并尝试关联许多不同的事件,以弄清可能发生的事情。 很快,我意识到这就像在大海捞针中一样乏味。 经过几天没有结果的结果,我得出的结论是,我需要在这里和那里添加更多的日志记录,然后等待几天甚至几个月,以查看该错误是否再次发生。 然后,我认为与开发应用程序时使用的复杂工具相比,在生产中寻找错误是有点粗糙的。 您正在实现一项新功能,并且看到服务返回的结果不是您所期望的吗? 您只需放置几个断点,然后单击“调试”按钮即可! 片刻之后,您确切地知道发生了什么。 在生产环境中执行相同的操作会很棒吗?

为什么在生产中进行调试是如此困难?

等一下! –您可能已经想到了。 但是我们不是在大多数现代IDE中都具有远程调试功能吗? 我们不能像在本地环境中那样连接到正在运行的生产应用程序并对其进行调试吗? 尽管有可能,但另一个问题出现了:我们的大多数业务应用程序每秒处理许多请求。 当对应用程序进行远程调试时,没有简单的方法可以控制在任何地方触发的断点。 您可以想象,当我们决定调试它时,我们不想阻止所有用户使用我们的应用程序。 通常,我们也不能仅仅强迫我们的应用程序重现昨天发生的错误-有时唯一的方法就是等到我们的一个用户再次发生该错误为止。 因此,在生产环境中保持远程调试会话而无须严格控制断点的触发方式,就像在森林中放置地雷并邀请我们的用户穿越地雷一样。

更好,更安全的方法

FusionReactor是一个应用程序性能监视器,具有许多高级功能,您通常不会在监视解决方案中找到这些功能。 生产调试器是其中之一,该调试器旨在允许您从生产运行时环境中获取底层调试信息。

使用某些传统的调试器时,您将面临的主要问题之一是:一旦设置了断点,它将对任何跨越代码点的线程触发。 FusionReactor通过采用一系列控制断点触发方式的技术来克服这一问题。 例如,它可以限制给定断点将触发的次数(线程),从而解决了影响太多用户的问题。 需要更多控制方式吗? 您甚至可以配置一个断点,以从特定的IP地址(会话)向用户触发,或者在特定变量与值匹配或发生特定异常时向用户触发。 但是,如果在我们团队中没人在看的夜晚触发断点怎么办? FusionReactor允许您定义线程暂停超时,因此,如果您在特定时间内不截取暂停的线程,则调试器将释放锁定并允许线程继续执行。 当与线程限制一起使用时,这可以将可能的影响减少到仅一个线程,并且仅持续n秒。

另一个好处是,FusionReactor可以在触发器触发时发送带有堆栈跟踪和变量的电子邮件。 这为您提供了一种非常灵活,简便的方式来获取大量信息的通知,从而使调试比以往任何时候都更加容易。

生产中的调试不必太麻烦。 FusionReactor带有完全集成的IDE样式的调试器,该调试器可直接在您的浏览器中运行-无需安装其他胖客户端即可启动远程调试。 一切都是内置的,随时可以使用。

翻译自: https://www.javacodegeeks.com/2018/05/why-debugging-in-production-is-so-tempting.html

为什么在生产中进行调试是如此诱人?相关推荐

  1. vue中生产模式和调试模式_为什么在生产中进行调试是如此诱人?

    vue中生产模式和调试模式 生产调试 为什么在生产中进行调试是如此诱人? 在我的第一份工作中,我要做的任务之一是修复一个错误,该错误过去在非常复杂的生产系统中有时会发生. 那很简单! - 我想. 我将 ...

  2. 日志采样率_为什么要在生产中采样调试日志

    日志采样率 by Yan Cui 崔燕 为什么要在生产中采样调试日志 (Why you should sample debug logs in production) It's com­mon pra ...

  3. selenium自动化测试_为什么在生产中进行Selenium自动化测试对于您的下一个版本至关重要?...

    selenium自动化测试 您是否认为仅仅是因为您的Web应用程序在过渡环境中以飞快的速度通过,它对于生产环境也将是相同的? 您可能需要重新考虑! 特别是,如果我们指的是跨浏览器测试 ,则需要确保跨各 ...

  4. 为什么在生产中进行硒自动化测试对于您的下一个版本至关重要?

    您是否认为仅仅是因为您的Web应用程序在过渡环境中以鲜艳的色彩通过了,您的生产环境也将是相同的吗? 您可能需要重新考虑! 特别是,如果我们指的是跨浏览器测试 ,则需要确保跨各种操作系统,运行在不同操作 ...

  5. 在生产中使用Istio,我们学到了什么?

    在生产中使用Istio,我们学到了什么? 灵雀云 https://www.jianshu.com/p/cf4d4258b7f6 首先,给大家简单介绍一下Istio,Istio是一个Service Me ...

  6. Hibernate:hbm2ddl.auto =在生产中更新?

    本文翻译自:Hibernate: hbm2ddl.auto=update in production? 是否可以运行使用hbm2ddl.auto=update配置的Hibernate应用程序来更新生产 ...

  7. 在生产中使用Java 11:需要了解的重要事项

    来源:SpringForAll社区 如果您正考虑更新最新版本的Java,阅读本文以了解有关Oracle Java 11的最重要信息. 如果您及时了解Java社区的新闻,您可能听说Oracle改变了他们 ...

  8. mlflow_在生产中设置MLflow

    mlflow This is the first article in my MLflow tutorial series: 这是我的MLflow教程系列的第一篇文章: Setup MLflow in ...

  9. aws eks_在生产中配置和使用AWS EKS

    aws eks 到现在,我们已经完成了向Amazon EKS ( 工作地点)的迁移,并且集群已经投入生产. 过去,我已经写了一些要点的简短摘要,您可以在这里找到. 当系统正在处理实际流量时,我有了一些 ...

最新文章

  1. 如何高效便捷的画出炫酷神经网络图
  2. odoo开发笔记--一个模块显示两个一级菜单
  3. iOS开发debug集锦
  4. linux挂载固硬盘装,linux下安装新硬盘并挂载mount
  5. geth bootnodes
  6. 5G万物智联下互联网通信技术升级之路
  7. java 字符串构造函数,java构造函数示例(构造方法)
  8. css多行超出时,超出高度,显示省略号
  9. 浅谈:飞鸽传书 的TCP/IP原理
  10. 对象入参指定泛型类型_如何得到正确的MethodInfo对象当一个类使用泛型和泛型类型参数...
  11. TypeScript和vuejs 搭建webpack,初次体验
  12. 兔子mq框架_春天兔子MQ
  13. HighCharts:为plotLines基准线添加label标签不显示
  14. 《计算机组成原理》第二版第七章课后习题答案
  15. 35岁高以翔过劳猝死:人生无常,求各位项目经理少加点班吧
  16. 不忘来时路 心系梦归处
  17. 教师资格证报名网页打不开,解决新版IE浏览器无法打开教师资格证页面问题(不需要添加兼容性站点!)
  18. 在线QQ客服链接,只添加 qq号
  19. linux中apache无法启动,Apache无法启动
  20. 购买计算机网络设备的会计分录,企业购买设备的会计分录怎么写?

热门文章

  1. 【图论】最短路上的统计(ssl 1500)
  2. 面试了 N 个候选人后,我总结出这份 Java 面试准备技巧
  3. Linux--用SecureCRT来上传和下载文件
  4. 常用公有云接入——AZURE
  5. 再有人问你volatile是什么,就把这篇文章发给他
  6. JVM调优总结(1):一些概念
  7. JVM内存管理------GC算法精解(复制算法与标记/整理算法)
  8. 通用唯一标识码UUID的介绍及使用
  9. 《走遍中国》珍藏版(十三)
  10. 实现Windows程序的数据更新