Skynet:Debug Console的扩展
起因
最近上线服务器遇到了一些问题,上个月CPU暴涨的问题,那个经查验是死循环导致endless loop了。
这周又遇到了mem占用达到96%的问题,在debug console里调用了gc之后,跌落至85%左右,稳定了一天。
但是在debug console里面调用list的时候,发现很多service数量有点异常,所以打算扩展一下debug console来统计各个service的数量。目前已经初步完成,特记录于此。
Debug Console
debug_console源代码的位置是skynet/service/debug_console.lua,我们一般在项目的config.lua中配置他的地址和端口即可。
这里面的代码比较简单,我们可以看到大部分的功能都实现在skynet/service/launcher.lua中。
增加statistic统计接口
我们的需求是增加一个统计接口,叫做statis,也就是statistic的简写,太长了别人容易写错。
第一步 COMMAND.help
COMMAND.help是debug console中help指令的输出内容,我们需要在其中添加新增的接口的简单描述信息。在其返回的table中添加:
statis = "Show service counts"
此时重启skynet服务器可以看到在控制台输入 help 可以看到我们新增的内容:
Welcome to skynet console
help
call call address ...
clearcache clear lua code cache
cmem Show C memory info
debug debug address : debug a lua service
exit exit address : kill a lua service
gc gc : force every lua service do garbage collect
help This help message
info info address : get service infomation
inject inject address luascript.lua
kill kill address : kill service
list List all the service
log launch a new lua service with log
logoff logoff address
logon logon address
mem mem : show memory status
ping ping address
service List unique service
shrtbl Show shared short string table info
signal signal address sig
snax lanuch a new snax service
start lanuch a new lua service
stat Dump all stats
statis Show service counts
task task address : show service task detail
<CMD OK>
第二步 在launcher.lua添加接口实现
仔细观察launcher.lua中的方法,发现了一个可用的services。里面存放了所有的service,存放的格式是{address = 启动参数}。启动参数里面包含了service的名字,所以,我们只需要对这个table进行统计就可以了。
function command.STATIS()
local list = {}
for k,v in pairs(services) do
if list[v] == nil then
list[v] = 0
end
list[v] = list[v] + 1
end
return list
end
好,完成了。
重启服务器,在控制台statics,我们就可以看到我们想要的结果了。

Skynet:Debug Console的扩展的更多相关文章
- skynet debug console 使用
预读 关于如何使用 skynet 可以参考 wiki 文档 更多实战内容见 https://www.lanqiao.cn/courses/2770 优惠码:2CZ2UA5u 环境测试搭建 使用示例代码 ...
- VS Code 调试 Golang 出现 Failed to continue: Check the debug console for details
VS Code断点调试Golang时候,弹出提示:Failed to continue: Check the debug console for details 点击Open launch.json, ...
- Unity Editor Console Pro 扩展点击定位到外部工程
链接 http://blog.csdn.net/akof1314/article/details/53232981 http://forum.china.unity3d.com/thread-2689 ...
- [文章存档]Kudu 的 Debug Console 窗口如何查看更多文件
链接:https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-app-service-web-h ...
- VS Code调试Golang提示Failed to continue:Check the debug console for details.
解决方法: 打开调试面板 VSCode->查看->调试 添加调试目标 在"没有调试"的下拉框中点击"添加配置.."添加目标调试配置 在" ...
- debug console不见了
点击左侧这个标志.
- JS之console.log详解以及兄弟姐们邻居方法扩展
console.log() 基本用法 console.log,前端常用它来调试分析代码,你可以在任何的js代码中调用console.log(),然后你就可以在浏览器控制台看到你刚才打印的常量,变量,数 ...
- 预定义指令之debug
1)根据你必须知道的.NET一书, #define DEBUG class Program { static void Main(string[] args) { #if DEBUG Console. ...
- [你必须知道的.NET]第三十五回,判断dll是debug还是release,这是个问题
发布日期:2009.12.29 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 问题的提出 晚上翻着群里的聊天,发现一个有趣的问题:如何通过编码 ...
- Log4j扩展使用--日志记录器Logger
OK,现在我们认真的研究下Logger的配置,进行相关配置扩展. Log4j有三个主要的组件:Loggers(记录器),Appenders(输出源)和Layouts(布局).其中,Logger负责记录 ...
随机推荐
- 9.3 Django框架
Django 是一个非常流行的 Python Web 开发框架,它是完整且强大的,适用于构建大型 Web 应用.在这一章节中,我们将详细介绍 Django 的基本概念.组件和用法.为了便于理解,我们将 ...
- C#语言async, await 简单介绍与实例(入门级)
本文介绍异步编程的基本思想和语法.在程序处理里,程序基本上有两种处理方式:同步和异步.对于有些新手,甚至认为"同步"是同时进行的意思,这显然是错误的. 同步的基本意思是:程序一个个 ...
- 从零开始整SpringBoot-工具与插件
工具 工具 名称 地址 IDEA https://www.jetbrains.com/idea/ JDK1.8 https://www.oracle.com/java/technologies/jav ...
- 为什么使用ioutil.ReadAll 函数需要注意
1. 引言 当我们需要将数据一次性加载到内存中,ioutil.ReadAll 函数是一个方便的选择,但是ioutil.ReadAll 的使用是需要注意的. 在这篇文章中,我们将首先对ioutil.Re ...
- ES 实战复杂sql查询、修改字段类型
转载请注明出处: 1.查询索引得 mapping 与 setting get 直接查询 索引名称时,会返回 该 索引得 mapping 和 settings 得配置,上述返回得结构如下: { &quo ...
- idea连接数据库及使用
连接数据库 idea本身足够强大,可以直接操作数据库. 1.打开idea后,点击右侧的Database,点击加号,点击Data Source,在右侧选择需要的数据库,我这里选择mysql. 2.填写完 ...
- 【go语言】1.2.1 Go 环境安装
Go 语言的安装过程非常简单,无论你使用的是哪种操作系统,都可以按照下面的步骤来进行. Windows 系统 前往 Go 语言的官方下载页面:https://golang.org/dl/ 根据你的操作 ...
- Blazor实战——Known框架多表增删改查
多表增删改查示例 本章介绍学习多张表增.删.改.查功能如何实现,下面以销货出库单作为示例,该业务栏位如下: 销货出库单栏位 销货单号.销货日期.状态.客户.备注 销货出库单明细栏位 商品编码.商品名称 ...
- 搭建rsyncd服务
前言 rsync常用来做文件传输和同步.本文示例中客户端通过rsync同步服务端的/home/tmp目录到本地(不是将客户端的文件同步到服务端). 环境信息 IP 系统版本 rsync版本 说明 19 ...
- [kvm]cpu内存硬盘配置
修改CPU配置 如果配置了最大CPU # 临时 virsh setvcpus test 2 # 永久 virsh setvcpus test 2 --config 热增加虚拟机的CPU数后,使用lsc ...