先说一下。事情的来龙去脉。





公司开发一款游戏棋牌游戏,服务端的开发是IO密集型,开发的时候,考虑过使用python,java,node.js。

终于选择了node.js(node.js宣传的杀手功能。异步IO,node.js另外一个分支叫io.js),事情也就由此而起。





由于第一次做手机游戏。对移动网络的预计不足。选择了json作为通信数据传输格式。上线后玩家就频繁掉线(通信数据量太大,移动网络hold不住),

于是想了一个解决方式,把json数据用zip压缩一下,事情好像就万事大吉了(尽管也有不少玩家反应掉线问题,但事情状况已经好非常多了)。

開始的时候呢。我们的玩家并不多。cpu的使用率并不高。系统一切正常,后来玩家越来越多,就出现了一个问题服务端开发长出现的问题内存泄露。

每过几天后,玩家的内存就涨上去了。内存泄露对于我们的系统来说,也说不上太严重。每过几天重新启动一次就能够了。

step1.開始分析我们的代码。看那些代码可能导致内存泄露,由于内存泄露发生在我们的网关进程中。代码量是比較少的,

研究了好些时间,期间也怀疑了好多事情,但写的測试代码都无法证实。

问题就这么拖下去了,写一个定时器脚本,在某个时刻重新启动网关进程。





step2.事情就这么放下,每过一段时间,想起这个问题,又纠结一番。開始做第二个项目了(第二个项目使用mqtt。

以及參照protobuf自己写的一套编解码代码,攻克了json数据太大的问题)。项目并不成功,用户眼下用户不多,系统没有发生内存泄露的问题。

step3. 同事突然想起,会不会是由于zip压缩json数据占用了cpu,我们设想的业务是IO密集型。如今看来就是CPU密集型了。cpu密集,然后node.j的GC工作出现了问题?。

最新文章

  1. iOS开发--ChildViewController实现订单页的切换
  2. 错误:java.util.Map is an interface, and JAXB can't handle interfaces.
  3. DOCKER 为新启用的容器配置外网IP
  4. run命令
  5. Mac OS的phpize空信息解决办法
  6. html页面加载和解析流程
  7. 生成动态前缀且自增号码的Oracle函数
  8. HDU 1796How many integers can you find(简单容斥定理)
  9. IOS 使用IOS6苹果地图
  10. Ansible 运维自动化 ( 配置管理工具 )
  11. 转转hybrid app web静态资源离线系统实践
  12. HDU 5514
  13. [R] t.test()
  14. [UE4]宏
  15. 已经卸载了hyper-v 仍然提示 vmware 与 hyper-v 不兼容;天天模拟器,提示VT模式没有开启,BIOS里面已经设置过了
  16. form表单序列化为json格式数据
  17. Harbor快速部署到Kubernetes集群及登录问题解决
  18. The POSIX API/nss/nscd
  19. Python之上下文管理器
  20. Tinkoff Challenge - Elimination Round B. Igor and his way to work(dfs+优化)

热门文章

  1. Non-maximum suppression(非极大值抑制算法)
  2. 线段树 Mayor's posters
  3. 有关C语言指针访问问题
  4. ASP.NET(四):ASP.net实现假分页显示数据
  5. 九度oj 题目1048:判断三角形类型
  6. 【Luogu】P2680运输计划(树上差分+二分)
  7. Java 面试参考指南 — 同步
  8. 单点登录跳转失败(原因是 主票据申请子票据失败) asp.net 同站点下不同应用间不同版本Framework问题
  9. 送外卖(codevs 2800)
  10. Cards BZOJ 1004