任何故障排除提示将不胜感激。
我们正在运行一个有多个站点的大型服务器 m6a.24Xlarge。我们有一个 15TB 的 EBS 卷,其中包含我们所有的网站。随着限制很快临近,我们决定切换到 EFS,以实现增加负载平衡的长期目标。在实施之前,我们将我们最大的客户之一置于 EFS 驱动器上。没有性能问题。
慢慢地,我开始将站点转移到 EFS 卷,在 EBS 上创建指向 EFS 卷的符号链接。转移时,我将冷访问 (IA) 设置为 1 天,以降低转移阶段的整体数据存储成本。初始传输完成后,我执行增量传输并一次切换每个站点。 IA 设置为 30 天。
一旦我们到达最后 25% 的站点,一切都会大大减慢。我以为可能是数据从 Cold storage (Infrequently Accessed) 转出。随着数据移出 IA,性能确实有所提高,但 2 周后我们仍然看到问题,下面的问题让我相信我们遇到了我无法定位的瓶颈。
当我将所有内容切换到 EFS 挂载时,服务器根本无法使用 EFS 中的插件文件夹(所有站点都通过符号链接将此文件夹用于 wp-contents/plugins)。我尝试使用 IA(标准单区)之外的所有文件,但它仍然无法正常工作。我认为,这显示了我们在服务器承受负载时看到的瓶颈示例。我最终将插件文件夹移动到本地 EBS 挂载。只要我们没有受到更高流量负载的影响,这现在就可以正常工作。
在中/高流量期间,CPU 负载会飙升至 700 以上(在 96 核系统上),而总体 CPU 使用率始终处于 30-40% 之间。在 EBS 卷上,我们的 CPU 使用率在 30-70% 之间,具体取决于流量。 当 CPU 负载达到峰值时,PHP-FPM Worker 会飙升并以 D 状态坐在那里。它们似乎是等待 CPU 执行的负载。这会导致我们网站的整体速度变慢。增加 Apache 或 PHP 的工作人员似乎不会改变 CPU 使用率。
故障排除
ps -ax | grep php | grep -c D
在中/高负载下显示高数字。当这种情况上升时,网站会变慢。nfsiostat
以低毫秒显示所有内容。我注意到无论服务器上的负载如何,nfsiostat 似乎都没有太大变化。
ulimit
到最大。这似乎确实有点帮助。我还尝试了 somaxconn 和 tcp_max_syn_backlog 的设置,但没有任何明显的效果。 mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 172.00.00.1:/ /mnt/sitefiles
阿帕奇
</IfModule>
ServerLimit 4000
StartServers 21
MinSpareThreads 400
MaxSpareThreads 1024
ThreadsPerChild 200
MaxRequestWorkers 7000
MaxConnectionsPerChild 0
</IfModule>
PHP-FPM
pm.max_children = 2000
基于 CPU 和 nfsiostat 的平稳性能,我的直觉告诉我们在某个地方遇到了默认的网络/系统瓶颈。我一直无法找到这可能是什么。如果有人对看什么有任何建议,请告诉我。任何输入将不胜感激!