我最近阅读了可与 http 一起使用的长轮询概念。我想了解,如果任何http协议标准本身支持长轮询概念,那么根据客户端如何配置http连接,服务器可以以短轮询方式或长轮询方式运行,因此实际上一些客户端可以连接在短轮询模式下,一些客户端可以在长轮询模式下连接。
java中的任何示例代码esp都会有所帮助。
我最近阅读了可与 http 一起使用的长轮询概念。我想了解,如果任何http协议标准本身支持长轮询概念,那么根据客户端如何配置http连接,服务器可以以短轮询方式或长轮询方式运行,因此实际上一些客户端可以连接在短轮询模式下,一些客户端可以在长轮询模式下连接。
java中的任何示例代码esp都会有所帮助。
通常,当您将网络电缆从网络设备中拉出时(模拟网络上的一些中断,因此会出现模糊的断开连接),底层套接字不会检测到断开连接(至少我们的单元不会),因此我们使用 keep alive 来断开连接并重新连接。
所有单位都使用每小时长轮询到 nginx 服务器。所以我的问题是:
如果该单元没有检测到电缆断开连接(可能还有 100 种网络上的其他情况),那么 nginx 也没有断开套接字并且该套接字保持打开状态?
保持开放多久?
我们是否应该在 nginx 端也使用 tcp keep alive 对客户端?如何?
我正在尝试设计一种架构来处理大量 TCP 套接字连接,但我怀疑这种架构的局限性。
我将不得不处理~20k 并发TCP 连接,这些是长轮询连接,它们将保持连接很长一段时间,并且每分钟都会发送数据。
使用线程是毫无疑问的,因为 20k 线程会使系统资源耗尽。例如,我计划使用gevent来处理如此多的并发连接,甚至使用haproxy和 2 个服务器(w/gevent)来处理 10k 个连接。这有意义吗?有没有人有一些建议或有使用gevent与 10K+ 连接的经验?有谁知道处理这些连接的硬件要求吗?我看到一些基准测试显示 gevent 在 5k 并发连接上有很多连接超时,这对我的问题来说不是很有希望。
注意:我已经阅读了关于 C10k 问题和关于“百万用户 Comet 应用程序”的建议。