已掉线,重新登录

首页 > 绿虎论坛 > 杂类 > 超级灌水 (发帖)

标题: linux有问

作者: @Ta

时间: 04-22 00:50发布,04-22 00:52修改

点击: 238

我有一台配置很高的服务器,里面运行了一个项目,项目会有连接数据库,请求接口等操作。我遇到一个问题就是在短时间内高请求量的情况下会出现mysql 
的错误 Cannot assign requested address错误,是由php报出的,我已经将ip_local_port_range修改为1024-65535 ,但是我用ss -s命令查看到的连接数量才1w。有老师遇到过吗?

[隐藏样式|查看源码]


『回复列表(6|隐藏机器人聊天)』

1. @老虎会游泳@无名啊 
(/@Ta/2025-04-22 00:51//)

2.

@卷心菜,当一个TCP连接被关闭后,操作系统会保留该连接的本地IP和端口号等信息一段时间(TIME_WAIT状态)。如果想要在这段时间内重新使用该IP和端口号建立新的连接,连接发起方(PHP的mysql模块)需要使用SO_REUSEADDR选项。该选项允许多个TCP连接绑定同一IP和端口号。

如果PHP不支持,还可以修改Linux的
tcp_fin_timeout选项为一个较小的值,以缩短连接关闭后的TIME_WAIT状态等待时间。

(/@Ta/2025-04-22 09:07//)

3.

@老虎会游泳,老虎是怎么懂得那么多网络知识的呀?

公司里兼运维,日常也用 C/C++ 开发网络应用啥的吗?

(/@Ta/2025-04-24 11:45//)

4.

@无名啊,我的上一份工作是用C++编写连接数十万+的TCP服务器
https://github.com/btccom/btcpool

(/@Ta/2025-04-27 13:27//)

5. @老虎会游泳,问题没得到解决,最后加服务器搞定了。我用ss -s看到连接数才1.3w就报错了
(/@Ta/2025-04-28 08:53//)

6.

@卷心菜,那其实还有一个思路,就是在PHP的数据库连接代码里开启持久连接,这样一个php进程就只会创建一个连接。

PDO:https://blog.csdn.net/weixin_39550937/article/details/113282269

mysqli:https://www.php.net/manual/zh/mysqli.persistconns.php

(/@Ta/2025-04-28 16:50//)

回复需要登录

7月14日 09:01 星期一

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1