试图了解Web请求连接池和多线程的工作原理。这个问题来自于最近使用Hangfire进行的开发。我们想限制http请求的最大并发数为10,所以我们使用了默认的连接池限制,即10。但是,我们注意到我们同时发送了超过10个请求,所以我们认为这可能与Hangfire有关,它创建了20个worker。
那么问题来了,Hangfire的worker是什么呢,是一个线程吗?每个worker都有自己的连接池吗? 还是所有work都共享一个连接池?
你可以改变每个Hangfire服务器启动的默认工人数量。这是Hangfire设置的一部分 (并行性文件)
var options = new BackgroundJobServerOptions { WorkerCount = Environment.ProcessorCount * 5 };
app.UseHangfireServer(options);