我正在对NodeJS请求计数和.Net Core进行一些性能测试,我发现了我所期待的。显然,.Net Core的请求数量要高得多。但是,我发现特别有趣的是,客户端在没有重新编译代码的情况下,实际上通过NodeJS服务器和.Net Core服务器使用了更多的RAM。 RAM使用差异实际上相当显着,我观察到NodeJS服务器的性能比.Net Core服务器高得多。
使用.Net Core 2.0.0和NodeJS 8.3.0
有问题的地板。使用.Net Core服务器,在最糟糕的使用情况下,运行使用480MB到700MB。使用NodeJS服务器,它在我的PC上使用700MB到1.4GB的RAM(两者都最大化了CPU)。
HttpServer.cs is the actual code that does the work
Source.cs is where the HttpServer is run in a separate task to allow Console.ReadLine separately.
NodeJS服务器代码
const http = require('http')
let serv = http.createServer((req, res) => {
res.write("Hello!")
// res.destroy() // Uncomment to reduce RAM usage, but the point is still valid
})
serv.listen(48435)
什么会导致RAM使用量的显着差异,以及为什么客户会成为接受惩罚的人?我理解服务器使用更多的RAM,处理器,或者只是速度较慢,但为什么同样的代码为客户端做同样的事情在某些情况下使用几乎是RAM的两倍?
答案 0 :(得分:0)
找到解决方案。问题是客户端本质上创建了无限量的请求。服务器响应这些请求的速度越快,它们在客户端处理的速度就越快。因此,在群集Node的HTTP服务器之后,RAM使用率大大降低。
速度
具有群集功能的NodeJS:935k请求,最低RAM 360MB,最高680MB .Net Core:780k请求,最低ram 580MB,最高800MB NodeJS没有集群:435k请求,最低RAM 800mb,最高1.4GB
感谢jfriend00帮助我弄清楚真正的来源。它也是一个很好的指标,指出服务器“快速”(以极高的RAM为代价)在处理时查看RAM的使用情况。