【发布时间】:2017-06-29 04:49:22
【问题描述】:
我们的 API 每分钟访问 600 个请求,API 设置使用两台专用服务器,一台用于 php 进程,第二台用于 mariadb。我们都使用 14 核、128 内存服务器。
api 和数据库服务器之间的通信是通过本地网络进行的,当对 api 进行大量访问时,我们注意到两个错误,一个在 api larvel 日志上,第二个在 mysql 服务器端。
生产。错误: Symfony\Component\Debug\Exception\FatalErrorException:最大值 超过 60 秒的执行时间
[警告] 与 db: 'database-name' 用户的连接 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”被禁用,我们的办公室 IP 就可以访问它了。我们已经有了“net.ipv4.tcp_tw_reuse = 1”。
这些可能的解决方案是什么?我还可以看到几乎与同一问题相似的 stackoverflow 讨论。但仍然无法找到相同的解决方案。
【问题讨论】: