Profile

虽然skynet可以尽可能的利用多核计算,但要特别小心在不能并发的流程上某个环节的处理能力过低,如果在一条处理流水线上,某个服务的处理能力明显低于前一个环节,消息就很有可能堆积在这个服务的消息队列里.


所以应该尽量避免设计出单点服务,不要把太多不相关的处理放在同一个服务内(因为单一服务的消息处理是不能并行的),对于复杂的系统,靠猜测找到这些瓶颈非常困难,需要利用一些分析工具,然后再从设计上拆分优化.


skynet.mqlen()可以返回当前服务的消息队列中堆积的消息数量.如果消息是均匀输入的,那么mqlen不断增长就说明已经过载,你可以在消息的dispatch函数中首先判断mqlen,在过载发生时做一些处理(至少log记录下来,方便定位问题).


profile模块可以帮助统计一个消息处理使用的系统时间.


使用skynet内置的profile记时而不用系统带的os.time是因为profile可以剔除阻塞调用的时间,准确统计出当前coroution真正的开销.


下面是一个简单的实例:

-- 一个典型的消息分发函数可以是以消息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值