长连接和短连接的区别(短链和长链区别)

商盟百科网 2023-05-24 20:37 70

摘要:这篇文章主要介绍了长连接和短连接的区别(短链和长链区别),需要的朋友可以参考下,如果你喜欢还可以浏览长连接和短连接的区别(短链和长链区别)的最新相关推荐信息。

当数据库服务器和客户端位于不同的主机上时,需要建立网络连接进行通信。客户端必须使用数据库连接来发送命令和接收回复和数据。在通过提供给客户端数据库的驱动程序指定连接字符串之后,客户端可以与数据库建立连接。可以查阅编程语言手册,了解短连接和长连接的使用方法。

1. 短连接

短连接是指程序与数据库通信时需要建立连接。执行操作后,连接关闭。短连接简单来说就是每次操作数据库,都要打开和关闭数据库连接。基本步骤是:连接→数据传输→关闭连接。

在慢速网络中使用短连接会花费很多;在生产繁忙的系统中,连接也可能受到系统端口数量的限制。如果每秒要建立数千个连接,连接断开后端口不会立即被回收,它们必须经历一个等待的“FIN”阶段,直到它们可以被回收,这可能导致端口资源不足。在Linux上,可以通过调整/proc/sys/net/IP v4/IP _ local _ port _ range来扩大端口的使用范围;调整/proc/sys/net/IP v4/TCP _ fin _ time out来减少恢复延迟(如果要在应用服务器上调整这个参数,一定要小心!)。

另一种方法是让主机使用多个IP地址。端口号限制实际上是基于同一个IP:PORT。如果主机添加IP,MySQL可以监听多个IP地址,客户端可以选择连接某个IP:PORT,这样就增加了端口资源。

2. 长连接(商盟百科网chnore.com)

长连接是指程序间的连接建立后,总是打开的,被后续程序重用。使用长连接的初衷是为了减少连接的开销,虽然MySQL比其他数据库快很多。

以PHP程序为例。当收到永久连接的请求时,PHP将检查是否已经有一个相同的永久连接(之前已经打开过)。如果存在,将直接使用该连接;如果不存在,则建立新的连接。所谓“相同”连接是指使用相同的用户名和密码连接到同一台主机。

从客户端的角度来看,使用长连接有一个好处。没有必要每次都创建新的连接。如果客户端频繁向MySQL服务器发出连接请求,永久连接会更高效。对于高并发服务,如果可能遇到连接的影响,建议使用长连接或连接池。

从服务器的角度来看,情况略有不同。它可以节省创建连接的开销,但是维护连接也需要内存。如果滥用长连接,可能会使用过多的MySQL服务器连接。现代操作系统可以有成千上万个MySQL连接,但其中大部分可能都处于睡眠状态。这种工作方式效率不够高,连接占用内存,也会导致内存浪费。

对于扩展性好的网站,其实大部分的访问都不需要连接数据库。如果用户需要频繁访问数据库,当流量增加时可能会出现性能问题。这时候长短连接都解决不了问题,要进行合理的设计和优化,避免性能问题。(商盟百科网chnore.com)

如果客户机和MySQL数据库之间有连接池或代理,一般建议在客户机上使用短连接。长连接的使用必须谨慎,不能滥用。如果每秒钟没有几百个或者几千个新的连接请求,就不需要长连接,长连接并不能给你带来多大的好处。在Java语言中,由于连接池的原因,如果控制得当,不会对数据库造成大的影响,但是PHP的长连接可能会导致数据库连接数超过限制或者占用内存过多。

对此,R&D工程师、系统运维工程师、DBA需要保持联系,确定合理的连接策略。不要不假思索地使用长连接。

3. 连接池

因为一些数据库花费大量资金来创建和销毁连接,或者因为相对于所执行的特定数据操作,连接消耗了太多的资源,所以可能有必要添加连接池来提高性能。

数据库连接池是由一些网络代理服务或应用服务器(如J2EE服务器)实现的功能。它实现了一个持久连接的“池”,允许其他程序和客户端连接。该连接池将由所有连接的客户端共享和使用。连接池可以加快连接速度,减少数据库连接数,降低数据库服务器的负载。(商盟百科网chnore.com)

4. 持久连接和连接池的区别

连接是一些驱动程序、驱动程序框架和ORM工具的特性。驱动程序保持连接句柄打开,以便后续的数据库操作可以重用该连接,从而减少数据库的连接开销。连接池是应用服务器的一个组件,可以通过参数配置连接数、连接检测、连接生命周期等。

如果连接池或者长连接使用了大量的连接,可能会超过数据库实例的限制,那么就需要注意连接相关的设置,比如最小和最大连接池的设置,以及php-fpm进程的数量等等。,否则程序将无法申请新的连接。

长连接和短连接的区别(短链和长链区别)


相关推荐

评论列表
关闭

用微信“扫一扫”