ThreadPool.SetMinThreads 作为热身策略
ThreadPool.SetMinThreads as Warm-Up strategy
我的网络应用程序面临巨大的 CPU 峰值。不是因为流量增加,而是因为负载很重,比如报告出去了。其中一些导致 CPU 在接下来的 2-10 分钟内从健康的 30% 负载变为 100%...在这里我将描述为好像我只有一台服务器,但我已经看到了到 4 台服务器变得疯狂,因为星星的排列使我的大约 50 个客户同时想要一份报告……我托管在 azure 上,我使用自动缩放来处理这些峰值。如果负载超过 70% 超过 2 分钟,将启动一个新实例。
事实是,因为服务器 1 是 100% 备份的,当它启动时,(我希望)负载平衡会将每个新请求定向到服务器 2,直到服务器 1 可以再次处理更多请求。由于这种(预期的)行为,我想知道是否应该提高最小线程数,以便它可以更快地处理即将到来的请求。
我通常的请求速率约为 15/s,所以我认为我应该至少以 50...
开始池
大家怎么看?
编辑 1 2017-07-13
到目前为止一切正常...我会尝试更高的设置,看看会发生什么
这个策略确实证明了自己非常有用并且缓解了很多问题。并非我所有的问题都消失了,但 errors/timeouts 大大减少了。
我的网络应用程序面临巨大的 CPU 峰值。不是因为流量增加,而是因为负载很重,比如报告出去了。其中一些导致 CPU 在接下来的 2-10 分钟内从健康的 30% 负载变为 100%...在这里我将描述为好像我只有一台服务器,但我已经看到了到 4 台服务器变得疯狂,因为星星的排列使我的大约 50 个客户同时想要一份报告……我托管在 azure 上,我使用自动缩放来处理这些峰值。如果负载超过 70% 超过 2 分钟,将启动一个新实例。
事实是,因为服务器 1 是 100% 备份的,当它启动时,(我希望)负载平衡会将每个新请求定向到服务器 2,直到服务器 1 可以再次处理更多请求。由于这种(预期的)行为,我想知道是否应该提高最小线程数,以便它可以更快地处理即将到来的请求。
我通常的请求速率约为 15/s,所以我认为我应该至少以 50...
大家怎么看?
编辑 1 2017-07-13
到目前为止一切正常...我会尝试更高的设置,看看会发生什么
这个策略确实证明了自己非常有用并且缓解了很多问题。并非我所有的问题都消失了,但 errors/timeouts 大大减少了。