Ser*_*tin 5 iis jmeter amazon-ec2 kestrel asp.net-core
对于部署在单个 AWS EC2 主机上的 .NET Core 2.2 应用程序,我比较了 IIS 托管与普通 Kestrel 托管。
对于 IIS 配置,我遵循了 MS文档。
对于 Kestrel,我只是使用了:
dotnet app.dll --server.urls http://*:5000
Run Code Online (Sandbox Code Playgroud)
我正在使用 JMeter 运行“压力”测试以比较吞吐量。这个测试只是用 100 个线程调用应用程序的端点,持续 10 秒(5 秒预热)。请注意,该端点基本上是在每次调用时从 MSSQL Server 数据库获取相同的数据,没有缓存等。
因此,Kestrel 会因套接字关闭/超时错误而失败 75% 的请求:
问题:什么样的配置错误会导致这种 Kestrel 行为?我尝试在 Kestrel 前面使用基本的 nginx 反向代理,但仍然得到相同的结果。
事实证明,在测试同步端点的性能时会发生所描述的行为。
通过遵循线程注入算法,CLR 将只有 minWorkerThreads/minIoThreads 来处理请求,并且由于“压力”测试使用的线程数量多于我们等待新线程时创建的线程数量,这导致响应时间几乎呈线性增长。
参考:
| 归档时间: |
|
| 查看次数: |
1922 次 |
| 最近记录: |