Php 启用内核参数tcp_tw_recycle时删除连接

Php 启用内核参数tcp_tw_recycle时删除连接,php,mysql,symfony,Php,Mysql,Symfony,我们的API每分钟访问600个请求,API设置使用两个专用服务器,一个用于php进程,另一个用于mariadb。我们使用14个核心、128个ram服务器 api和数据库服务器之间的通信是通过本地网络进行的,当对api进行大量访问时,我们注意到两个错误,一个是在api larvel日志上,另一个是在mysql服务器端 生产错误: Symfony\Component\Debug\Exception\FatalErrorException:最大值 执行时间超过60秒 [警告]已中止与数据库的连接485

我们的API每分钟访问600个请求,API设置使用两个专用服务器,一个用于php进程,另一个用于mariadb。我们使用14个核心、128个ram服务器

api和数据库服务器之间的通信是通过本地网络进行的,当对api进行大量访问时,我们注意到两个错误,一个是在api larvel日志上,另一个是在mysql服务器端

生产错误: Symfony\Component\Debug\Exception\FatalErrorException:最大值 执行时间超过60秒

[警告]已中止与数据库的连接48520867:“数据库名称”用户: “root”主机:“172.16.1.2”(读取通信数据包时超时)

我们已经通过两个更改成功修复了api错误,php max_execution_time为120秒,内核参数net.ipv4.tcp_tw_recycle=1

一旦完成这项工作,我们现在将面临来自具有专用IP地址的Office ISP的连接中断,我们有100多个用户从同一IP连接

一旦内核参数“net.ipv4.tcp_tw_recycle=1”被禁用,我们的office IP就可以访问它。我们已经有了“net.ipv4.tcp_tw_reuse=1”

这些问题的可能解决方案是什么?我还可以看到stackoverflow的讨论,几乎与同一问题类似。但仍然无法找到解决方案


我认为问题的出现是因为PHP和Maria DB之间的连接数量较多

请增加Apache可以处理的请求数,并增加Maria DB的缓冲区内存大小

在Mysql中,我们可以增加下面提到的参数(到目前为止还不能使用Maria DB)

请试一试。

设置“net.ipv4.tcp\u tw\u recycle=0”已完全修复了断开连接的问题。工作很好。我们可以使用下面的命令将net.ipv4.tcp_tw_recycle设置为0

sysctl-w net.ipv4.tcp\u tw\u recycle=0

参考讨论:-


我们已经做了这些,innodb_buffer_pool_size=90GB innodb_thread_concurrency=48 imax_connections=65535 connect_timeout=5 wait_timeout=600 max_allowed_packet=1024M thread_cache_size=128 sort_buffer_size=4; bulk_insert_buffer_size=16M tmp_table_size=32M max_heap_table_size=32M max_table_size=32M您是否增加了Apache web服务器MaxClients来处理价值
/etc/my.cnf
***innodb_buffer_pool_size = 384M***
key_buffer = 256M
query_cache_size = 1M
query_cache_limit = 128M
thread_cache_size = 8
***max_connections = 400***
innodb_lock_wait_timeout = 100