Multithreading 提高web服务器的性能

Multithreading 提高web服务器的性能,multithreading,webserver,threadpool,Multithreading,Webserver,Threadpool,我最近在一次采访中被问到这个问题。这是一个关于web服务器设计的开放式问题。这是问题的要点 队列常常成为web服务器等应用程序的瓶颈。您将对线程处理类、线程池和队列进行哪些更改以改善瓶颈 我指出了以下措施: 1.线程池管理 2.在队列中使用缓冲区和数据包 但面试官并不十分满意。我应该提到哪些设计措施?显然,这是一个开放的问题,所以答案不必依赖于底层技术,如Spring、J2EE等 如果有关于服务器设计的好教程,请分享。有一种称为套接字轮的设计模式,在高级web服务器中用于处理队列。随机答案: 在

我最近在一次采访中被问到这个问题。这是一个关于web服务器设计的开放式问题。这是问题的要点

队列常常成为web服务器等应用程序的瓶颈。您将对线程处理类、线程池和队列进行哪些更改以改善瓶颈

我指出了以下措施: 1.线程池管理 2.在队列中使用缓冲区和数据包

但面试官并不十分满意。我应该提到哪些设计措施?显然,这是一个开放的问题,所以答案不必依赖于底层技术,如Spring、J2EE等


如果有关于服务器设计的好教程,请分享。

有一种称为套接字轮的设计模式,在高级web服务器中用于处理队列。

随机答案:

  • 在随机更改代码之前,实际测量整个系统的性能,以确定瓶颈。FTW

  • 使用IO完成端口(Windows)、“e波尔”或“kevent”(Linux)

  • 考虑使用不同的优先级队列。对于已知响应时间快的查询,请将它们放在一个队列中。对于需要更长和更昂贵响应的查询(例如长数据库事务),请将这些请求放在不同的队列中。考虑使用更快查询的队列优先权。(想一想:那些有12件或更少物品的人可以在杂货店快速结账)


  • 我忍不住要发布以下内容:

    队列的主要问题是它会阻塞队列中更深的服务员。因此,设计必须要么快速到队列永远不会填满,要么必须考虑队列填满。另请参阅Jim Gettys在bufferbloat上发布的最新信息:


    在现代路由器中,IP数据包的缓冲会导致TCP严重出错(这也会间接影响web服务器内部的排队论)。

    我会增加队列和线程的数量以降低延迟。
    (并且每个队列始终有一个线程)

    您可以发布链接吗。在谷歌上搜索插座轮设计模式会导致任意结果。我也这么认为——因此我一直在为此打鼓。