> 文章列表 > 【从零开始学Skynet】基础篇(九):调试控制台服务

【从零开始学Skynet】基础篇(九):调试控制台服务

【从零开始学Skynet】基础篇(九):调试控制台服务

        Skynet自带了一个调试控制台服务debug_console,启动它之后,可以查看节点的内部状态。

1、启用调试控制台

  (1)在skynet/examples目录下新建main_console.lua文件,代码如下所示:

local skynet = require "skynet"skynet.start(function()skynet.newservice("debug_console",8000)local ping1 = skynet.newservice("ping")local ping2 = skynet.newservice("ping")local ping3 = skynet.newservice("ping")skynet.send(ping1, "lua", "start", ping3)skynet.send(ping2, "lua", "start", ping3)skynet.exit()
end)
  • 先开启debug_console服务,让它监听8000端口;
  • 然后开启3个ping服务;
  • 主服务会让ping1ping2ping3消息ping3会给出回应。

(2)在skynet/examples目录下新建一个config_console配置文件:

root = "./"
thread = 8
logger = nil
harbor = 0
start = "main_console"	-- main script
bootstrap = "snlua bootstrap"	-- The service for bootstrap
luaservice = root.."service/?.lua;"..root.."test/?.lua;"..root.."examples/?.lua"
lualoader = "lualib/loader.lua"
snax = root.."examples/?.lua;"..root.."test/?.lua"
cpath = root.."cservice/?.so"
-- daemon = "./skynet.pid"

(3)ping.lua文件在之前的文章中已经创建过了,有详细的解释和说明:【从零开始学Skynet】基础篇(三):服务模块常用API_寻水的鱼、、的博客-CSDN博客

 2、启动服务

   打开终端输入指令

  • cd skynet
  • ./skynet examples/config_console

3、监控指令 

  我们使用telnet连接debug_console服务,可以看到“Welcome to skynet console”的字样。

 

 (1)list指令

        list指令用于列出所有的服务,以及启动服务的参数。在控制台输入“list”后,控制台显示如下图所示的信息。可见,除了由主服务开启的“debug_console”和3个“ping”服务以外,skynet还自动开启了cmaster、cslave、datacenterd等服务用于提供引擎功能。在编写程序的过程中,如果怀疑某些服务没成功启动,可用list命令检查。

 

(2)mem指令

         mem指令用于显示所有Lua服务占用的内存。执行结果如下图所示,3个ping服务大致会占用60Kb的内存。如果某个服务占用的内存很高,可以做针对性优化。

 (3)stat指令

        stat指令用于列出所有Lua服务的CPU时间、处理的消息总数(message)、消息队列长度(mqlen)、被挂起的请求数量(task)等。如下图所示,每个服务都含有消息队列,向服务发消息,就是将消息插入消息队列的过程,如果某个服务处理消息的速度太慢,它的消息队列就会很长。stat指令可以查看各个服务消息队列的长度,得知哪些服务负载高。

 (4)netstat指令

        netstat指令用于列出网络连接的概况。

更多控制台功能见:https://github.com/cloudwu/skynet/wiki/DebugConsole