大佬教程收集整理的这篇文章主要介绍了node.js应用程序突然将CPU加载到100%并挂起,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
var net = require('net'); var io = require('socket.io').listen(socketPort); net.createServer(function (socket) { socket.setEncoding("utf8"); socket.on('data',function (dataStr) { console.log("TCP dataStr " + dataStr); var data = JSON.parse(dataStr); io@L_772_3@ckets.in(data.room).emit('publish',data); }); }).listen(tcpPort); io@L_772_3@ckets.on('connection',function (socket) { socket.on('subscribe',function (room) { console.log('subscribe room ' + room); if (Array.isArray(room)) { var i; for (i = 0; i < room.length; i++) { console.log('subscribe join room ' + room[i]); socket.join(room[i]); } } else if (typeof room === 'String') { console.log('subscribe join room ' + room); socket.join(room); } }); socket.on('unsubscribe',function (room) { console.log('unsubscribe room ' + room); if (Array.isArray(room)) { var i; for (i = 0; i < room.length; i++) { console.log('unsubscribe leave room ' + room[i]); socket.leave(room[i]); } } else if (typeof room === 'String') { console.log('unsubscribe leave room ' + room); socket.leave(room); } }); });
同样的集群模块我试图运行多个与客户端通信的工作人员.每个工作人员经过一段时间后,都会以100%的时间将自己的cpu内核挂起,时间差不多一分钟.
UPD:客户端代码(在浏览器中运行):
socketObj = new function() { var that = this; that@L_772_3@cket; that.init = function(nodeServerUrl,rooms,onPublishFunC) { that@L_772_3@cket = io.connect(nodeServerUrl); that@L_772_3@cket.emit('subscribe',rooms); that@L_772_3@cket.on('publish',function(data) { onPublishFunc(data); }); }; that.subscribe = function(room) { that@L_772_3@cket.emit('subscribe',room); }; that.unsubscribe = function(room) { that@L_772_3@cket.emit('unsubscribe',room); }; } ... try { socketObj.init('application url',["room1","room2"],nodeJsCallBACk); } catch(err) { } ... nodeJsCallBACk = function(jsonData) { //Only updates data on UI,no subscribing,unsubscribing,emitTing etc. ... }
UPD2:我试图在生产机器和我的本地Windows机器上重现合成测试的问题.我做了一些压力测试:
>多个客户端套接字连接
>多个静态数据下载(用于浏览器的socket.io脚本)
> tcp更新的频率增加.
经过几个小时的测试,我没有复制.但是当它与真正的用户在生产中运行时,它在早期或之后挂起.
我开始认为这是环境或特定的消息问题.大概下面我会尝试的事情是:
>将Node.js更新为当前版本
>尝试记录所有的数据传输,然后重播,希望挂起会重现
以上是大佬教程为你收集整理的node.js应用程序突然将CPU加载到100%并挂起全部内容,希望文章能够帮你解决node.js应用程序突然将CPU加载到100%并挂起所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。