每个会话连接或通过一个连接复用多个会话
Connection per session or multiplexing multiple sessions through one connection
在设计客户端/服务器架构时,将来自同一进程的多个连接多路复用到远程服务器(即共享一个连接)与在客户端中每个线程/会话打开一个连接(如连接到memcached或数据库服务器时通常所做的那样)是否有任何优势?
我知道每个连接都有一些开销(例如,如果服务器有50,000个打开的连接,这会耗尽大量RAM),这是facebook为memcached做UDP补丁的一个主要原因。但我不期望有接近这个数字的任何地方。最多1万吧。在建立tcp/ip连接和进行授权方面也有节省,但现在我宁愿像memcached那样将授权留给防火墙软件。
有任何理由在tcp/ip客户端/服务器应用程序中实现少于10K的多路连接吗?
Edit - Details:
这是一个数据库服务器/客户端我正在工作。我认为Informix和Oracle实际上允许在一个tcp/ip连接上进行会话多路复用。在Informix文档中,他们说您可以获得非线程客户机的性能改进(没有提到多线程客户机,也许它不是线程安全的实现)
与每个线程/会话打开一个连接相比,多路复用多个连接有什么优势吗
是的,尽管这取决于单纯形的实现。您可能知道FTP、SIP等防火墙的麻烦,特别是在中途使用加密时。这就是影响是使用多个连接还是只使用一个连接的因素。
相关文章:
- 为多个会话保留XPtr
- 当套接字连接断开时检测C/C++Unix
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- 无法在windows上使用mingw将sqlite3与c连接
- 到连接组件算法的问题(递归)
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 无法在C++中建立与MySQL数据库的连接
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 如何修复 Onnx运行时会话>运行问题?
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- 使用 bfs 解决连接组件问题时得到错误的答案
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- OSX蓝牙打开RFCOMMChannelAsync声称已连接,但未建立连接,并且从未调用过委托
- 如何从连接的 SSL 会话获取 base64 编码证书 (PEM)
- 在Qt C++中连接用户特定的DBus会话
- C++:从cURL连接中提取会话令牌
- 每个会话连接或通过一个连接复用多个会话