@卷心菜,当一个TCP连接被关闭后,操作系统会保留该连接的本地IP和端口号等信息一段时间(TIME_WAIT状态)。如果想要在这段时间内重新使用该IP和端口号建立新的连接,连接发起方(PHP的mysql模块)需要使用SO_REUSEADDR选项。该选项允许多个TCP连接绑定同一IP和端口号。
如果PHP不支持,还可以修改Linux的 tcp_fin_timeout选项为一个较小的值,以缩短连接关闭后的TIME_WAIT状态等待时间。
@老虎会游泳,老虎是怎么懂得那么多网络知识的呀?
公司里兼运维,日常也用 C/C++ 开发网络应用啥的吗?
@无名啊,我的上一份工作是用C++编写连接数十万+的TCP服务器 https://github.com/btccom/btcpool
@卷心菜,那其实还有一个思路,就是在PHP的数据库连接代码里开启持久连接,这样一个php进程就只会创建一个连接。
PDO:https://blog.csdn.net/weixin_39550937/article/details/113282269
mysqli:https://www.php.net/manual/zh/mysqli.persistconns.php
@卷心菜,当一个TCP连接被关闭后,操作系统会保留该连接的本地IP和端口号等信息一段时间(TIME_WAIT状态)。如果想要在这段时间内重新使用该IP和端口号建立新的连接,连接发起方(PHP的mysql模块)需要使用SO_REUSEADDR选项。该选项允许多个TCP连接绑定同一IP和端口号。
如果PHP不支持,还可以修改Linux的
tcp_fin_timeout选项为一个较小的值,以缩短连接关闭后的TIME_WAIT状态等待时间。
@老虎会游泳,老虎是怎么懂得那么多网络知识的呀?
公司里兼运维,日常也用 C/C++ 开发网络应用啥的吗?
@无名啊,我的上一份工作是用C++编写连接数十万+的TCP服务器
https://github.com/btccom/btcpool
@卷心菜,那其实还有一个思路,就是在PHP的数据库连接代码里开启持久连接,这样一个php进程就只会创建一个连接。
PDO:https://blog.csdn.net/weixin_39550937/article/details/113282269
mysqli:https://www.php.net/manual/zh/mysqli.persistconns.php