欢迎光临
我们一直在努力

简述在虚拟机中安装redhat的过程(RedHat虚拟机CPUnode是node.js的性能问题?)

之前和PHP同事讨论过node.js的性能,看了一些node.js的相关文档。除了非阻塞 I/O 和快速开发的优点之外,node.js 还有明显的缺点:

1. 单进程,只支持单核CPU,不能充分利用多核CPU服务器。

2.单个进程,一旦这个进程崩溃,整个web服务就崩溃了。(当然这可以通过代码的健壮性来弥补)

开发环境:

红帽虚拟机

CPU:两个

内存:1GB

请告知以下是否有问题:

最近借助node.js开发了一套在线聊天室应用,简单实现了大厅聊天、私聊、群聊。用户信息、群组成员信息、聊天内容都是使用redis存储的。

具体聊天室的功能请参考我的博客:

现在如果要1个CPU绑定一个node.js聊天室进程,需要使用这个命令:,(具体请参考相关文档)

在linux下运行:

节点.js

节点.js

我将 .js 监听端口设置为 8888,将 .js 监听端口设置为 8889。

OK,现在2个node.js聊天室程序启动了。但是需要注意的是,这2个聊天室是不能互相聊天的,但是user表是一个,正好他是两个不同的房间。聊天室代码是一套,只是.js的一份拷贝,里面监控着不同的端口。

然后我们要给两个node.js进程绑定不同的CPU:(目前我的虚拟机有2个CPU)

ps -ef | grep node(用于查看节点的进程号)

根 19277 2517 15 10:12 pts/1 00:00:20 节点 /usr/local/node/src//.js

根 19283 2566 18 10:13 pts/2 00:00:20 节点 /usr/local/node/src//.js

根 19291 2384 0 10:15 pts/0 00:00:00 grep 节点

找到上述2个PID后,将它们用于CPU绑定。命令如下:(这里只写一个)

-pc 0 19277(其中 0 是 CPU0,依此类推)

pid 19277 的列表:0,1

pid 19277 的新列表:0

出现上面的信息就说明绑定成功了,用同样的方法再绑定一个。

绑定结束后,我们如何知道它们在不同的 CPU 上运行?再找一个虚拟机,安装,对两个node.js聊天室端口进行压力测试,然后使用top命令查看每个CPU的使用情况。(提示,输入TOP命令,然后按数字“1”,压力测试时一直按“ENTER”),结果显示CPU0的使用率长时间保持在60%以上,而CPU0的使用率CPU1在压力测试中长时间低于20%。长时间保持在60%,而CPU0保持在20%以下,结果说明绑定成功!(之前有过一次乌龙,用自己的虚拟机压测,结果发现这两个CPU的利用率很高多核服务器,查不出问题。后来,

然后安装nginx并配置nginx,只需在配置文件中添加:(具体的nginx安装和设置请参考相关文档)

{

10.1.1.202:8888=1;

10.1.1.202:8889=1;

}

{

80;

10.1.1.202;

/

{

;

主机 10.1.1.202:80;

X–对于$;

}

然后软重启nginx服务,访问地址10.1.1.202的80端口,这样nginx就可以做反向代理和负载均衡了。

注意:以上配置需要node.js服务器代码的良好支持。存储推荐使用redis,这样可以共享,否则需要使用(具体的nginx优化配置请参考相关文档),在多核CPU上运行多个节点。js进程之间的内存是不共享的,需要牢记。

由于之前对node.js的空框架进行过压力测试,发现它的内存消耗不是很高,所以理论上如果4核cpu和内存超过8G,打开4个node.js进程运行在一个服务器,使用 Nginx 做负载均衡,其性能和稳定性相比单一的 node.js 应该会有很大的提升。

赞(0) 打赏
未经允许不得转载:艾飞特资源网 » 简述在虚拟机中安装redhat的过程(RedHat虚拟机CPUnode是node.js的性能问题?)
分享到

登录

找回密码

注册