【问题标题】:Socket server side overhead [closed]套接字服务器端开销
【发布时间】:2014-06-04 22:25:50
【问题描述】:

在服务器上保持套接字打开的相关开销是多少?

假设您有数百万个像 facebook 这样的并发连接,与 HTTP 请求相比,套接字会增加太多开销吗?我知道套接字会大量减少网络开销(因为头),但是套接字会是更好的选择吗?如果您不实时更新客户端,但仍向客户端发送批量信息(每隔几秒或客户端请求时),这是在可扩展性、性能和服务器方面为数百万用户提供服务的更好选择侧头顶? (您是否必须使用套接字或 http 进行更多/更快的扩展?)

【问题讨论】:

  • “套接字会增加太多开销” - 与什么相比? “插座会是更好的选择” - 与什么相比? “我知道套接字会大大减少网络开销” - wat??等等……
  • 与通过 HTTP 请求或推送通知更新相比
  • 你真的应该在问之前做更多的研究。 HTTP 是套接字之上的一层,除非您使用一些晦涩难懂的操作系统,它使用套接字以外的东西进行通信。您还忘记了另一件重要的事情:Facebook 不只有一台服务器。你认为什么更容易扩展?使用标准协议的东西还是你发明的东西?
  • @Karoly 我知道 HTTP 使用套接字。我说的是保持连接打开而不是获取一些信息,关闭连接,然后通过再次发送 HTTP 标头等来重新做一遍......
  • 那就谈谈吧。请重写(编辑)您的问题。

标签: performance sockets scalability overhead-minimization


【解决方案1】:

要问的正确问题是“我可以为每台服务器打开多少个套接字”。

这取决于操作系统。

Linux
值设置为net.ipv4.netfilter.ip_conntrack_max

https://serverfault.com/questions/10852/what-limits-the-maximum-number-of-connections-on-a-linux-server


Windows

70,000 个连接在相当低规格的 VM 上

Max tcp/ip connections on Windows Server 2008


那当然取决于你的应用程序写得有多好,硬件规格等等。

所以我想说你不应该根据打开的套接字数量来设计你的应用程序,因为你的应用程序可能会在达到套接字限制之前崩溃和烧毁。

【讨论】:

  • 是的,这是正确的问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-04-24
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 2021-12-28
相关资源
最近更新 更多