摘要:本文主要分享一个在压测Nginx反向代理服务过程中碰到的连接异常断开问题,包括问题的定位与复现,最后由这个实际问题引申聊一下Nginx的连接管理。 本博客已迁移至CatBro's Blog,那是我自己搭建的个人博客,欢迎关注。 本文链接 问题描述 问题是这样的,我们的Nginx服务是作为HTTP反向
阅读全文
随笔分类 - 编程开发
摘要:前面已经支持了几种不同的方式添加断点,但是必须事先在代码中添加断点,在使用上不是那么灵活方便。本文将支持动态增删断点,只需要开一开始引入调试库即可,后续可以在调试过程中动态的添加和删除断点。事不宜迟,我们直接进入正题。 源码已经上传Github,欢迎watch/star😘。 本博客已迁移至CatB
阅读全文
摘要:为了解决通过函数名称添加断点的不确定性,本篇我们将继续扩展断点的设置接口,支持通过包名来添加断点。因为包名相对更具确定性,配合行号可以进行精确定位。
阅读全文
摘要:我们之前已经支持了通过函数来添加断点,并且已经支持了行号的检查和自动修正。但是通过函数来添加断点有一些限制,如果在当前的位置无法访问目标函数,那我们就无法对其添加断点。
于是,本篇我们将扩展断点设置的接口,支持通过函数名称添加断点,以突破这个限制。
阅读全文
摘要:前面两篇我们对Lua调试器性能做了一个优化,本篇接下来继续来丰富调试器的特性。对断点行号进行检查与自动修正。
阅读全文
摘要:本篇继续改进我们的Lua调试器,设法优化断点信息的数据结构,进一步提升性能。
阅读全文
摘要:本篇我们继续改进Lua调试器,在钩子中引入call和return事件的处理,尝试对性能进行优化。
阅读全文
摘要:本篇将继续给我们的Lua调试器新增两个辅助的调试接口:调用栈回溯打印接口、通用变量设置接口。前者打印调用栈的回溯信息,后者可以方便地修改变量的值,支持局部变量、upvalue以及全局的`_ENV`中的变量。
阅读全文
摘要:在前一篇的基础上,为了提升调试的方便性,封装了一个通用的变量打印函数,可以通过变量名查找到对应变量的值进行打印。支持局部变量、upvalue以及全局的`_ENV`中的变量。
阅读全文
摘要:本文将从零开始编写一个Lua调试器,实现类似gdb的断点调试功能。
阅读全文
摘要:最近在看《自己动手实现Lua—虚拟机、编译器和标准库》。这是本挺不错的书,通过学习此书能够对Lua语言有比较深刻的理解,此外还可以对如何自己实现一门脚本语言有直观的认识。对于想学习Lua的同学,安利一下这本书。废话不多说,书中留了一个作业,让读者自己实现`TAILCALL`指令,实现尾调用的优化。本文就算是交作业吧。
阅读全文
摘要:本篇将通过一个例子,完整介绍OpenResty中Lua钩子的调用流程,包括初始化阶段的工作、新连接进来时如何进入钩子、I/O等待时如何出去、事件触发时如何恢复、钩子正常执行结束时的操作、钩子内出错的情况。
阅读全文
摘要:OR最大的特点就是,将Lua协程与Nginx事件驱动模型及非阻塞I/O结合起来。使用户可以在handler中使用 **同步但是依然是非阻塞** 的方式编写其应用代码,而无需关心底层的协程调度以及与Nginx事件驱动模型的交互。
本文将先从总体上介绍OR的协程调度机制,然后结合源码以及Lua栈的情况来详细了解各个部分是如何实现的,包括其异常保护、协程初始化、协程的恢复和执行、协程的挂起、协程的执行结束、协程出错的情况。
阅读全文
摘要:在工作中经常碰到需要写一些多进程/多线程的测试程序,用来测试接口的性能。本文将会从零开始一点点增加代码,最终完成一个简易的多进程测试程序编写。该程序支持实时打印测试进结果和最终测试结果的统计。
阅读全文