客户端为什么在其他服务器上使用更多内存? - c#

我正在对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最多)。

Flooder code

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.

Git link to .Net Core server

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?

参考方案

找到了解决方案。问题在于,客户本质上创建了无限数量的请求。服务器响应这些请求的速度越快,它们在客户端处理的速度就越快。这样,在群集Node的HTTP服务器之后,RAM的使用就大大减少了。

速度

具有集群功能的NodeJS:935k请求,最低RAM 360MB,最高680MB
.Net Core:780k请求,最低ram 580MB,最高800MB
NodeJS无集群:435k请求,最低RAM 800mb,最高1.4GB

谢谢jfriend00,它帮助我弄清楚了真正的来源。这也很好地指示了服务器在处理过程中查看内存使用情况的速度(在RAM方面的极大牺牲)。

如何使用ASP.NET ViewState使用JavaScript - c#

我的页面中有UL,它为空。我开始使用JavaScript使用LI填充它。在回发阶段如何在asp.net中使用此新添加的动态数据?那是因为我的提交按钮是asp.net控件。我不想使用JS POST。谢谢 参考方案 我过去通过在隐藏字段中填充要发布的动态数据来完成此类操作,您可以-在回传之前触发JavaScript事件,该事件将数据从UL解析到隐藏字段中要么更新…

如何从.Net DLL获取公共出口列表? - c#

我可以使用“ dumpbin”和“ dll export”之类的工具来查看标准win32 DLL的公共入口点(“ exports”),例如Windows \ SYSTEM32 \ GDI32.dll。但是,当我在.Net DLL上使用这些相同的工具时,我看到的仅仅是 2000 .reloc 2000 .rsrc 48000 .text 我有一个C#/。Net…

将asp.net c#变量分配给javascript数组 - c#

我有2个工作部分的代码,需要将它们放在一起第1节-用户可以访问页面,查看和编辑数据库的内容,其中包括新闻文章,标题,相关链接等,我设法使其正常工作并将数据保存到数据库中第2条-该网站首页上的javascript新闻滚动器会写出一系列div,然后使用javascript和CSS对其进行旋转,使其看起来像在滚动,同样可以。新闻文章是从首页上硬编码的数组中提取的问…

asp.net mvc或javascript将另一页的结果返回给方法 - c#

是否可以将另一个页面的结果返回给JavaScript方法或C#控制器操作?我有一个共享的复杂页面,该页面在我的网站上遍布使用,当前用于在C#后端的用户数据上设置单个变量。当用户完成共享的复杂页面后,我将返回引用页面。当用户在刷新或返回时将其作为url参数传递给返回的页面时,我返回的页面包含新选择的变量。我有一个新页面,我希望从我的共享复杂页面中返回该变量。但…

如何在ASP.NET Core Web应用程序中增加JSON反序列化MaxDepth限制 - c#

我们正在将ASP.NET Core 2.1与.NET Framework 4.6.2结合使用。我们有一个客户需要向我们的Web应用程序发送一个很大程度上嵌套的json结构。当他们进行此调用时,我们将输出以下日志并返回错误: 读取器的MaxDepth超过了32。路径“ super.long.path.to property”,第1行,位置42111。”我浏览了…