【发布时间】:2015-10-18 10:46:08
【问题描述】:
我和我的朋友正在做一个 node.js 游戏,我们一直在测试 cpu,但是在分析这个名为 zlib 的进程后,它正在占用大部分 CPU/RAM
3 个客户端连接到一个游戏很好,但是当连接 12~13 个玩家时,它使用 58%,而 zlib 使用了大约 30% 的 cpu。
inclusive self name
ticks total ticks total
64775 58.5% 64775 58.5% /lib/x86_64-linux-gnu/libc-2.19.so
25001 22.6% 224 0.2% LazyCompile: *callback zlib.js:409
//this one is a different zlib
7435 6.7% 82 0.1% LazyCompile: ~callback zlib.js:409
有什么办法可以减少cpu的使用吗?或者它增加这么多是有原因的。
我已经阅读了一些内容,并被告知它来自 socket.io,所以这是我们发送大部分数据的套接字部分。
for (var i = 0; i < users.length; i++) {
if (u.room == users[i].room && users[i].x + users[i].radius >= u.x - u.screenWidth / 2 - 20 && users[i].x - users[i].radius <= u.x + u.screenWidth / 2 + 20 && users[i].y + users[i].radius >= u.y - u.screenHeight / 2 - 20 && users[i].y - users[i].radius <= u.y + u.screenHeight / 2 + 20) {
if (users[i].id == u.id) {
visiblePlayers.push({
x: users[i].x,
y: users[i].y,
angle: users[i].angle,
hue: users[i].hue,
radius: users[i].radius,
squeeze: users[i].squeeze,
name: users[i].name,
dead: users[i].dead,
isPlayer: true,
kills: users[i].kills
});
} else {
visiblePlayers.push({
x: users[i].x,
y: users[i].y,
angle: users[i].angle,
hue: users[i].hue,
radius: users[i].radius,
squeeze: users[i].squeeze,
name: users[i].name,
dead: users[i].dead
});
}
// SEND DYING INFO: (FOR OFFLINE ANIMATION):
if (users[i].dying) {
visiblePlayers[visiblePlayers.length - 1].dying = true;
}
}
}
var visibleEnergy = [];
for (var i = 0; i < energies.length; i++) {
if (u.firstSend || (energies[i].updated && energies[i].room == u.room)) {
var anim = energies[i].animate;
if (u.firstSend)
anim = true;
visibleEnergy.push({
x: energies[i].x,
y: energies[i].y,
radius: energies[i].radius,
index: i,
animate: anim,
hue: energies[i].hue,
room: energies[i].room
});
}
}
// SEND PLAYER UPDATES TO CLIENTS:
sockets[u.id].emit('serverTellPlayerMove', visiblePlayers,
visibleEnergy);
Zlib 是其中一个问题,但如果有任何其他优化方法来降低服务器 CPU。
额外:检查用户的格式已在 StackExchange https://codereview.stackexchange.com/questions/107922/node-js-cpu-issue 中得到解答。如果有任何方法可以减少 zlib cpu 使用率,我们只需要帮助。
谢谢。
【问题讨论】:
标签: javascript node.js performance sockets optimization