我有一个服务器上传20kb xml文件到我的服务器。
没有会话,这是一个单一的POST请求,就是这样。 每个请求都基于xml文件的内容进行validation。
有插槽相关的调整,我将不得不作出的负载testing时,服务器耗尽其套接字池(32K)。
无论如何,我想知道当我将一个负载平衡器带入两个Web服务器之间循环请求的等式中时,可能会发生什么变化。
负载平衡器可以重新使用套接字吗?
再一次,只是想清楚,客户端服务器正在发布一个文件到我的服务器,一旦文件已被HTTP发布,他们是100%完成。 任何后续的httppost将被视为新的“交易”。
我假设你正在引用SO_REUSEADDR而不是连接复用。 唯一的好处是,TIME_WAIT中的套接字不会阻止新的套接字绑定到相同的地址。 我从来没有遇到过一个实际上使用TIME_WAIT阶段的系统 – 如果你在TIME_WAIT中有很多套接字,也许你应该减less超时。
让这一切变得更快也会有所帮助,但是你并没有提供关于这里设置和交通模式的大量信息。
任何types的代理负载均衡器都会使您的连接数量比现在less(因为每个传入连接都需要连接到后端设备)。 OTOH RRDNS将减less负载的一半,而无需SPOF的复杂性和成本。
这是一个单一的POST请求
所以我们在这里说HTTP? 如果是这样的话,那么就有很大的调整空间。
所有领先的负载均衡器都有一种连接重用和池化的forms,他们只是称之为不同的东西。 它们最终被devise成能够非常快速和高效地处理数据包。
F5称之为OneConnect,Netscaler TCP多路复用……我对其他厂商或开源解决scheme了解不够。
此function使负载平衡器能够在服务器端重新使用TCP连接,并极大地提高了后端Web应用程序的性能。 当一个连接完成后,如果合适的话(如果负载平衡器不适合打开到服务器的新的TCP连接),它就进入负载平衡器的重用池并与后续连接匹配。 没有连接拆卸,所以不需要在新的连接上进行随后的三次握手,或者服务器分配或移除分配给开放式套接字的内存。 另外要注意的是,服务器端连接是连续的,不是stream水线。
没有连接重用,这是一个1-1关联(在客户端和服务器之间),根据我的经验,性能(应用程序)大大降低,后端服务器的负载要高得多。 如果是SSLstream量,由于密钥交换,您将看到一个CPU命中。
我认为这取决于负载平衡器。 我知道F5有一个称为OneConnect的function,允许负载均衡器复用多个请求来打开套接字。 这减less了每个更高级协议事务的套接字创build/拆卸的开销。
我知道其他的负载平衡器也有类似的function,虽然我不太熟悉它们。