我最近开始开发.NET应用程序(特别是使用新的.NET 5)并且我遇到了一个奇怪的问题。当我创建一个模板WebApi应用程序(Project - > New - > ... - > ASP.NET 5 WebApi Application)并测量其性能时,结果证明它只是悲剧性的。
这是我正在查询的控制器:
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
我在Release,1.0.0-rc1-update runtine下运行它并进行基准测试我使用了以下命令使用ApacheBench:
ab -n 500 -c 10 http://localhost:62066/api/values
这是500个并发等于10的请求。 并且服务器能够每秒返回惊人的...... 39个请求!当我将此类应用程序发布到Azure时,性能类似,但注册的最大CPU使用率约为15%,内存消耗停止在约50%。应用层为S1(标准1,1核,1.75GB RAM)。
我还在本地创建了超级简单的NodeJS服务器:
var http = require('http');
var port = process.env.port || 1337;
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(port);
使用相同的ApacheBench设置,性能大约为1500请求/秒,与MVC6相比非常快。不幸的是,在将NodeJS发布到Azure之后,应用程序性能显着下降到每秒约40个请求,CPU利用率不超过15%,内存大约为50%。
是否有一些选项会阻止此类应用的完整性能?我忘记了一些设置吗?
感谢。