UAT环境的一次cpu占用过高
前言:
1 | 常言道 知己知彼,方能百战百胜,寻找系统中占用高的地方,也是一门必修课 |
知识列表:
什么是调度(一篇好文章)
1 | 调度是将任务分发给工作者(一般是cpu)的一个策略,调度分为两种 |
erlang smp(关于smp的使用)
1 | 什么是smp? 看图搞掂 |
网上看到了一篇关于游戏设计的文章
1 | 进程发消息会扣除reduction,而且这个reduction扣除大小还受到接收者进程影响。假如直接在地图进程做消息广播,就会导致地图进程受到的调度极度减少,影响战斗计算。 |
所以在相关进程内,可以spwan多几个进程去做事,不要在主进程里面发消息,会减少reduction
一、排查uat奔溃的问题
排查问题的步骤:
- 写一个gen_server模块出来定时etop,检查哪个进程占用率最高
- 比较队列里占用最高的进程是否有出现N次
- 有则用fprof去检测他,并生成该文件的报告(在线可以用eprof)
** webtool已经弃用了
*看到有使用Recon
一.1、关于recon的使用
1 | 介绍几个函数 |
二、关于erlang now的使用
1 | 简单来说,erlang now获取时间时会有erts_timeofday_mtx锁,因为他需要矫正一个唯一时间,在大量并发的时候,性能瓶颈就上来了 |
UAT环境的一次内存泄漏
一篇很有趣的文章
如何搞垮你的erlang
1 | 1. 耗尽atom |