zmq的一个性能问题

        最近在写一个能承受百k级别连接的消息推送系统,使用websocket,实现的思路大概是这样的:前端nginx或者haproxy作反向代理(一台现代服务器吃不消的情况下,需要做lvs),后端开启n个tornado进程处理websocket,专门开启一个Manager进程,用户管理与维护所有前端的连接,tornado与manager之间使用zmq通信: tornado将用户数据push到manager,manager处理完之后,pub给各终端,每个tornado进程都有唯一的标识。这几天在做压力测试时,遇到一个性能问题:前端tornado在io/cpu非常busy的时候(我们要求单个tornado进程能够承制4w左右的连接),当数据push到manager,manager会非常吃cpu,经过几天的跟踪,发现manager吃cpu的瓶颈在zmq,而非逻辑处理,非常不解,即使manager只对消息进行recv,也非常吃cpu。以前游戏服务器,单服可能只要承制几k的连接,zmq没有这么吃cpu,现在还不清楚具体什么原因,可能需要趴zmq的源码了。。。


标签: none


    Validate Code