Php 具有高峰值DB连接的AWS灯环境
我有一个Wordpress/Woocommerce网站,我将其迁移到了一个新环境。我将ec2实例从传统的m4.10xlarge升级到新的m5.8xlarge。一些主要的区别是旧机器在旧的遗留Linux 1和php 7.2上,新机器在Linux 2上使用php 7.4,我在Amazon RDS上复制了我的数据库,将其从mysql 5.6升级到5.7。该实例位于一个负载平衡器后面,我将它从一个旧的经典负载平衡器更改为一个新的应用程序负载平衡器 此环境正在工作,但现在负载平衡器具有非常高的连接计数,RDS具有峰值数据库连接。有时,它们会从10 DB连接和随机尖峰到200-400,然后下降。在此期间,站点运行极慢,有时某些页面会出现504网关超时 这种行为在我的旧环境中绝对不存在,我已经经历了很多步骤来尝试和解决这个问题。通常我的旧RDS DB连接平均在20左右。我与亚马逊技术支持部门打了很多小时的电话,但他们只是让我与不同的团队交流,结果只是兜圈子,没有结果 我已尝试调整Php 具有高峰值DB连接的AWS灯环境,php,mysql,linux,apache,aws-application-load-balancer,Php,Mysql,Linux,Apache,Aws Application Load Balancer,我有一个Wordpress/Woocommerce网站,我将其迁移到了一个新环境。我将ec2实例从传统的m4.10xlarge升级到新的m5.8xlarge。一些主要的区别是旧机器在旧的遗留Linux 1和php 7.2上,新机器在Linux 2上使用php 7.4,我在Amazon RDS上复制了我的数据库,将其从mysql 5.6升级到5.7。该实例位于一个负载平衡器后面,我将它从一个旧的经典负载平衡器更改为一个新的应用程序负载平衡器 此环境正在工作,但现在负载平衡器具有非常高的连接计数,R
/etc/httpd/conf/httpd.conf
文件,设置我读取或建议的某些值,例如:
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 500
TimeOut 300
AcceptFilter http none
AcceptFilter https none
我所做的任何尝试都没有减少数据库中的峰值和负载平衡器上的高连接。当我在我的服务器上运行top
时,我有时会看到非常正常和低的平均负载,然后在新机器上我的32个内核上会有很大的变化。我以前见过平均负载高达150,然后又下降了
在查看nestat
top
时,我的任何调整或调整都没有产生任何效果。结果仍然是一样的,行为永远不会改变
如果有人知道我下一步可以尝试或研究什么,或者有任何建议,我将非常感激负载平衡器多久检查一次每台服务器上的活动?您的应用程序的平均响应时间是多少?如果前者比后者长,则是平衡器造成了问题 您要平衡多少台服务器 乞求“循环赛”,而不是“聪明”的东西。这对于低延迟的应用程序更好
另一方面,如果你的应用程序进行任何查询都需要10秒或更长的时间,那么你需要继续这样做。我肯定认为你是正确的。我开始摆弄我的负载平衡器,事实上,自从我开始这段旅程以来,情况第一次发生了变化。
<IfModule mpm_prefork_module>
StartServers 300
MinSpareServers 50
MaxSpareServers 100
ServerLimit 1000
MaxRequestWorkers 1000
MaxConnectionsPerChild 10000
</IfModule>
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_fin_timeout = 30
# Protect Against TCP Time-Wait
net.ipv4.tcp_rfc1337 = 1
# Decrease the time default value for connections to keep alive
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 60
net.ipv4.tcp_keepalive_intvl = 20
#Increase TCP max buffer size setable using setsockopt():
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
#Increase Linux autotuning TCP buffer limits min, default, and max number of bytes to use set max to 16MB for 1GE, and 32M or 54M for 10GE:
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432
#Determines how much packet processing can be spent among all NAPI structures registered to a CPU
net.core.netdev_budget = 600
#Increased the number of incoming connections backlog queue. This queue sets the maximum number of packets, queued on the INPUT side
net.core.netdev_max_backlog = 3000000
#Increased the limit of the socket listen() backlog, the maximum value that net.ipv4.tcp_max_syn_backlog can take
net.core.somaxconn = 1000000