skynet调试控制台debug_console的使用

1. 安装 rlwrap

在skynet调试控制台debug_console中无法使用上下方向键来使用命令历史记录,不方便,安装 rlwrap 即可。

yum install -y rlwrap

2. 代码中开启 debug_console服务

local skynet = require("skynet")

skynet.start(
    function()

        ..........

        skynet.newservice("debug_console", "127.0.0.1", 8001)

        ..........

        skynet.exit()
    end
)

3. 安装 rlwrap nc 连上debug_console

> rlwrap nc 127.0.0.1 8001
Welcome to skynet console
stat
:00000004       cpu:0.015625    message:70      mqlen:0 task:0
:00000006       cpu:0.0 message:7       mqlen:0 task:0
:00000007       cpu:0.015625    message:175     mqlen:0 task:0
:00000009       cpu:0.015625    message:1533    mqlen:0 task:0
:0000000a       cpu:0.5 message:61101   mqlen:0 task:0
:0000000b       cpu:0.0 message:225     mqlen:0 task:0
:0000000c       cpu:0.03125     message:1183    mqlen:0 task:0
:0000000d       cpu:0.1875      message:41      mqlen:0 task:1

4. 常用的debug_console命令

列出服务信息

  • list: 简单列出skynet的服务,包含地址与服务名。
  • stat: 列出skynet的服务的 cpu占用、已处理的总消息数、等待队列的大小、
  • mem: 列出skynet的服务中的lua虚拟机内存占用
  • cmem: 列出skynet的服务中的C语言部分内存占用
  • netstat: 列出网络连接的概况

对单个服务

  • info address: 让一个 lua 服务汇报自己的内部信息,参见 Profile
  • signal address sig: 向服务发送一个信号,sig 默认为 0 。当一个服务陷入死循环时,默认信号会打断正在执行的 lua 字节码,并抛出 error 显示调用栈。这是针对 endless loop 的 log 的有效调试方法。注:这里的信号并非系统信号。
  • task address: 显示一个服务中所有被挂起的请求的调用栈。
  • call address "foo", arg1, ... : 调用一个服务的lua类型接口,注意接口名和string型参数必须加引号,且以逗号隔开, address目前支持服务名方式。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容