什么是长连接?

其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。

通常的短连接操作步骤是:

连接-》数据传输-》关闭连接;

而长连接通常就是:

连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接;

这就要求长连接在没有数据通信时,定时发送数据包,以维持连接状态,短连接在没有数据传输时直接关闭就行了

什么时候用长连接,短连接?

长连接主要用于在少数客户端与服务端的频繁通信,因为这时候如果用短连接频繁通信常会发生Socket出错,并且频繁创建Socket连接也是对资源的浪费。

但是对于服务端来说,长连接也会耗费一定的资源,需要专门的线程(unix下可以用进程管理)来负责维护连接状态。

总之,长连接和短连接的选择要视情况而定。

查看mysql连接数

mysqladmin -uroot -p processlist

实际的测试中我发现,当设置了MYSQL_OPT_RECONNECT为1时,超时后再查看processlist,则自动建立的连接不在列表中,但事实上连接确实建立并被使用了。

在MYSQL的默认设置中,如果一个数据库连接超过8小时没有使用(闲置8小时),服务器将断开这条连接,后续在该连接上进行的查询操作都将失败。网络上对该问题的描述非常多。也提供了相应的解决办法。我在这里提一些我自己的看法。

解决办法一:修改MYSQL服务器的配置参数

道理非常简单,MYSQL的默认设置是在数据库连接超过8小时没有使用后将其断开,如果我们将这个时间改成更大的数值,那么连接超时所需的时间就会更长,也就意味着更不容易超时。网络上提供的修改方法一般是修改/etc/my.cnf,在这个文件中添加一行wait_timeout=你需要设置的超时时间。实际上有一种比较简单的方法来修改这个参数:

首先作为超级用户登录到MYSQL,注意必须是超级用户,否则后面会提示没有修改权限。然后输入

show global variables like 'wait_timeout';

回车执行后显示目前的超时时间:

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| wait_timeout | 28800 |

+---------------+-------+

1 row in set (0.00 sec)

上面显示的是默认的超时时间,即8个小时(单位是秒)。现在重新设置该参数,例如我们要将超时时间设置成10个小时,可以输入:

set global wait_timeout=36000;

回车执行,显示:

Query OK, 0 rows affected (0.00 sec)

表示设置成功,可以重新使用show global variables like 'wait_timeout'来验证。

这种方法比较直观,而且设置的参数立即生效。但如果/etc/my.cnf中没有配置,则重启服务后,global变量会从/etc/my.cnf中读取新的变量值。

  譬如 HTTP 的 Connection-alive 如果为 close,则 server 收到一个 request 并发送完一个 response 之后就会主动关闭连接,这就是短连接;如果 Connection-alive keep-alive 的话可以在一个 tcp 连接中交换多次对话。是这个定义?那就只是个程序结构设计问题了。

长连接短连接只是一个概念性的问题,只要知道其概念,不是一个特殊的东西:
长连接:系统通讯连接建立后就一直保持。
短连接:只有系统需要相互发消息连接才建立(客户端发起),请求消息得到响应后连接关闭;
通讯实体间使用长连接,一般还需要定义心跳消息,定期发送来检测系统间链路是否异常,每隔一定时间发送一次心跳,如果一定次数没有收到心跳消息,这认为此连接出现问题,需要断开连接重新建立。
具体心跳消息的格式,以及发送间隔,以及多少次没有收到心跳就认为链路异常,以及数据部是否算作心跳消息(有的系统如果接收到数据包则会清除心跳计时器也就相当于系统中的数据包也算作心跳消息);这个需要两端进行协商。比如GSM常用的短消息中心和其他网络实体互连的SMPP协议,要求建立的就是长连接.

所以长短连接只是一个概念问题长短连接的socket,就是使用普通的socket函数,没有什么特殊的

数据库连接池由数据库管理器提供。与连接语言无关。
php 提供了 pconnect 的機制, 可以實現連接池的功能 .
對於 mysql , mysql_pconnect 函數就可以實現 :
數據庫連接使用完畢後, 並不釋放, 而是留在系統中, 下一次調用 mysql_pconnect 連接數據庫時, 首先檢查是否有空閒的連接未被使用, 如果有, 則使用這個連接, 而不是進行連接數據庫的操作, 從而節省系統開銷

来源:http://www.cnblogs.com/phpfans/p/3817997.html

mysql长连接与短连接相关推荐

  1. MySQL连接方式:长连接或者短连接

    MySQL 既支持短连接,也支持长连接.短连接就是操作完毕以后,马上close 掉.长连接可以保持打开,减少服务端创建和释放连接的消耗,后面的程序访问的时候还可以使用这个连接.一般我们会在连接池中使用 ...

  2. mysql 短时大连接的问题_mysql长连接和短连接的问题

    什么是长连接? 其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态. 通常的短连接操作步骤是: 连接->数据传输->关闭连接: 而长连接通常就是: 连接-> ...

  3. mysql持久连接_持久性连接,短连接和连接池

    1.长连接在没有数据通信时,定时发送数据包,以维持连接状态,短连接在没有数据传输时直接关闭就行了 2.什么时候用长连接,短连接? 长连接主要用于在少数客户端与服务端的频繁通信,因为这时候如果用短连接频 ...

  4. 分析 HTTP,TCP 的长连接和短连接以及 sock

    作者:zhoulujun 链接:https://www.zhoulujun.cn/html/webfront/SGML/web/2015_1016_317.html 1 HTTP 协议与 TCP/IP ...

  5. java长连接转短连接_java原生程序redis连接(连接池/长连接和短连接)选择问题...

    原标题:java原生程序redis连接(连接池/长连接和短连接)选择问题 最近遇到的连接问题我准备从重构的几个程序(redis和mysql)长连接和短连接,以及连接池和单连接等问题用几篇博客来总结下. ...

  6. 性能测试能力提升-长连接、短连接、连接池

    目录 一.背景 二.长连接.短连接 三.连接池的作用 四.连接池配置定义 五.连接池设置考虑的因素 六.Redis连接池补充知识 一.背景 接着上一篇的知识:性能测试能力提升-基准.负载.压力.容量测 ...

  7. Mysql中长连接和短连接的区别

    长连接: 长连接是相对于短连接来说的.长连接指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包. mysql的长连接如果长期闲置,mysql会8小时后(默认 ...

  8. 跨进程通信,到底用长连接还是短连接

    一个完整的软件系统大多数情况下是由多个进程共同协作进行的,哪怕它们在同一台服务器上.所以,进程之间如何进行高效的通信至关重要. 单个应用程序+单个数据库这套基础开发套餐我相信每个人都经历过,甚至在初期 ...

  9. 长连接、短连接、短轮询、长轮询

    长连接.短连接.短轮询.长轮询 短连接:每次Http请求都会建立Tcp连接,管理容易 长连接:只需要建立一次Tcp连接,以后Http请求重复使用同一个Tcp连接,管理难 短轮询:重复发送Http请求, ...

最新文章

  1. SAP MM '独立/集中'等于1的MTS物料MRP运行后合并需求触发PR
  2. window下git的使用
  3. 在ASP.NET中使用Office Web Components (OWC)创建统计图
  4. javascript(1)
  5. shell脚本编程for循环求阶乘_shell脚本编程(完结版).pdf
  6. ​你可能不太会用的10个Git命令
  7. Java微信二次开发(九)
  8. 国内外ACM/ICPC的OJ,BBS列表
  9. 计算机特殊符号大全集,{精心收藏}电脑输入特殊字符大全
  10. [Java] 蓝桥杯ALGO-12 算法训练 幂方分解
  11. python 遍历对象_Python遍历对象属性
  12. Linux终端登QQ,Linux下登录腾讯QQ的方法
  13. 【从零开始学架构-李运华】07|低成本、安全、规模
  14. 我的世界服务器物品栏快捷菜单,我的世界:教你几个实用的快捷键小技巧,萌新可能对此一无所知!...
  15. 如何在IDEA中配置Tomcat,解决配置时No Artifacts Configured问题
  16. mysql——关于找不到vrcuntime140.dll与vrcuntime140_1.dll的问题
  17. Android Studio开发工具的设置
  18. [实用电脑技术]Google Chrome谷歌浏览器下载完整离线安装版本
  19. 计算机发展历程结绳记事,从结绳记事到竹简纸张,从计算机存储到光盘刻录,人类从未停止______...
  20. 数据爬取被判不正当竞争|大众点评诉爱帮

热门文章

  1. 58到家MySQL军规升级版(转:2018-03-30 58到家DBA 架构师之路)
  2. 怎样在Ubuntu 14.04中搭建gitolite git服务器
  3. MySQL 优化器之Index merge Multi-Range Read MRR与Batched Key Access使用案例详解
  4. c#设置图片的dpi_被忽视的鼠标设置,影响瞄准的关键因素就是它!
  5. 计算机旁边快速访问没有桌面图标了怎么办,桌面找不到我的电脑(计算机)图标的解决办法-win10桌面显示我的电脑...
  6. gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】
  7. 基于深度学习的语义分割代码库
  8. 详解Linux2.6内核中基于platform机制的驱动模型
  9. 错误sudo: pip: command not found解决方案
  10. C++递归求数组最大值、平均值、求和