线程池的大小

备注:在阿里校招面试中遇到的问题

CPU 限制的应用程序

CPU 限制的应用程序,线程池的大小应该等于系统里面 CPU 的数量。增加更多的线程将中断请求处理,由于线程上下文切换,这样也会增加响应时间。

非 I/O 阻塞的应用程序将被 CPU 限制,因为它们没有线程等待时间,当请求得到处理的时候。

I/O 限制的应用程序

确定 I/O 限制应用程序的线程池的大小是复杂的多,并依赖于下游系统的响应时间,因为一个线程会被阻塞直到其他系统响应了。我们将不得不增加线程的数量,以便更好地利用 CPU,正如在 Reactor Pattern Part 1 : Applications with Blocking I/O 中的讨论。

利特尔法则

Little’s law

The long-term average number of customers in a stable system L is equal to the long-term average effective arrival rate, λ, multiplied by the average time a customer spends in the system, W; or expressed algebraically: L = λW.

利特尔法则应用于 Web 应用程序。

在一个系统中的平均线程数量等于平均的 web 请求到达率(每秒的 web 请求数),乘以平均响应时间(ResponseTime)。

QPS:对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力

线程 = 线程数
每秒 web 请求数 = 在 1s 内能被处理的 web 请求数
响应时间 = 处理一个 web 请求所花费的时间

线程 = (每秒 web 请求数) X 响应时间

当以上的方程式提供了需要的线程数来处理传入的请求,它没有提供线程 CPU 利用率的信息。比如,多少个线程应该被分配在给定系统的 X CPU。

测试确定线程池大小

为了找出吞吐量和响应时间之间最佳平衡的线程池大小。每个 CPU 最小线程启动开始(Threads Pool Size = No of CPUs),应用程序线程池大小直接与下游系统的平均响应时间成正比,直到 CPU 使用率爆了,或是响应时间降级。

下面的图说明了多少个请求数,CPU 和连接响应时间指标。

CPU Vs 请求数图表显示了增加 Web 应用程序负载的时候,CPU 的利用率。

响应时间 Vs 请求数图表显示了由于增加 Web 应用程序的负载,对响应时间的影响。

绿点表示最佳吞吐量和响应时间。

线程池大小 = CPU 数量

以上图表描述了阻塞 I/O 限制应用程序,当线程数等于 CPU 数时。应用程序线程被阻塞等待下游系统响应。因为线程被阻塞,响应时间随着请求进入队列增加。即使 CPU 利用率非常低,随着所有的请求被阻塞,应用程序开始拒绝请求。

大线程池
最佳线程池大小

以上图表描述了当最佳线程池大小在 Web 应用程序中被创建的时,阻塞 I/O 限制了应用程序。CPU 得到有效使用,并由良好的吞吐量和更少的线程上下文切换。我们注意到响应时间是适合由于请求被高效率的处理(很少的中断)。

线程池隔离

在大部分 Web 应用程序中,一些类型的 web 请求相对于其他类型的 web 请求需要更长的时间来处理。最慢的请求将夯住所有的请求,并降低整个应用程序的性能。

两种方法来处理这个问题:

有单独的系统来处理缓慢的Web请求
在同一应用程序中分配给慢的 web 请求一个单独的线程池
确定一个阻塞 I/O Web 应用程序的最佳线程池大小是一个非常困难的任务。通常通过进行一些性能运行完成。有几个线程池在 Web 应用程序中会更加复杂化确定最佳线程池大小的过程。

参考:怎样确定 Web 应用程序的线程池大小

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,159评论 11 349
  • 一、线程池简介 在实际开发中,如果每个请求到达就创建一个新线程,开销是相当大的。服务器在创建和销毁线程上花费的时间...
    不知名的蛋挞阅读 568评论 0 7
  • 在什么情况下使用线程池? 使用线程池的好处: 线程池工作原理:为什么要用线程池? 诸如 Web 服务器、数据库服务...
    骏骏的简书阅读 2,963评论 2 60
  • 我知道自己从来都没有走进你的心里,我也知道自己有好多的缺点。 你说过即使我为你和全世界为敌,你也不会喜欢我。其实我...
    关庙阅读 146评论 0 0
  • 今天早上收到一个意外的惊喜,引发了潜意识的高兴。这种高兴让我进入了一段时间的无意识状态(这是反思的时候才发现的),...
    鄙人姓贺阅读 194评论 0 0