在对 AWS ELB 而非 EC2 进行基准测试时出现大量 504 错误

Getting a lot of 504 errors when benchmarking AWS ELB, but not EC2

首先,抱歉英语不好,我不是母语。

我是 AWS 的新手,但不是网络开发的新手,我正在尝试为我的一个网站配置云解决方案,该网站在不久的将来可能会获得大量流量。

感谢堆栈溢出和 AWS 文档,我成功地配置了我的实例、自动缩放组等,但是当用围攻测试它时,我遇到了一个奇怪的问题:

自动伸缩组中只有1个实例属于ELB,是弹性ips的实例

所以,我上网查了一下,发现有很多人遇到了和我一样的问题,但是都没有人回答。我尝试了我发现的所有东西,包括:

我已经在这个问题上思考了 3 个小时了,所以我尝试了其他的东西,但记不住所有的东西。 有人有想法吗?亚马逊人可以调查并找到解决方案吗?因为我比以前的主机支付更多的唯一原因是有一个好的负载平衡器。

我是 运行 apache 2.4,在 m3.medium 个实例上 php7-fpm

奖励:此外,我不知道为什么,但似乎我的服务器在达到我为要启动的新实例定义的 80% cpu 利用率之前就慢下来了。例如,如果我启动 1000 个并发用户 10 分钟,加载页面最多需要 20-30 秒,但使用率永远不会超过 50% cpu。

最后的信息让我觉得我遇到了 ELB 扩展延迟的问题,因为我启动了 1000 个并发连接,你怎么看?

提前致谢! ;)

所以,对于和我情况相同的人,我偶然发现了一个对我的服务器进行优化的解决方案:

在apache日志中,我发现我得到了很多"server reached MaxRequestWorkers setting"错误。 我用谷歌搜索了一下,发现一些优化技巧说我应该使用 mpm_worker(我使用的是 mpm_event)进行并发连接 所以,我启用了 mpm worker 而不是 mpm_event : https://askubuntu.com/questions/524770/apache-enable-worker-mpm 我使用了那些参数: http://oxpedia.org/wiki/index.php?title=Tune_apache2_for_more_concurrent_connections 我还增加了keepAlive和KeepAliveMaxConnect,以防万一

现在,它工作得非常好,我的网站处理 1000 个并发连接,响应时间为 2 到 10 秒,现在由我尝试减少它。

希望对其他人有所帮助:)