在对 AWS ELB 而非 EC2 进行基准测试时出现大量 504 错误
Getting a lot of 504 errors when benchmarking AWS ELB, but not EC2
首先,抱歉英语不好,我不是母语。
我是 AWS 的新手,但不是网络开发的新手,我正在尝试为我的一个网站配置云解决方案,该网站在不久的将来可能会获得大量流量。
感谢堆栈溢出和 AWS 文档,我成功地配置了我的实例、自动缩放组等,但是当用围攻测试它时,我遇到了一个奇怪的问题:
- 直接使用 elastic ips 在 EC2 实例上进行基准测试工作完美 100% 可用性,一切都很好
- ELB 上的基准测试效果不佳,90% 的可用性都是由于 504 错误,但大多数请求在不到 2 秒内得到响应
自动伸缩组中只有1个实例属于ELB,是弹性ips的实例
所以,我上网查了一下,发现有很多人遇到了和我一样的问题,但是都没有人回答。我尝试了我发现的所有东西,包括:
- 正在检查 ELB healthCheck 是否正常工作
- 正在尝试启用 ELB 粘性
- 增加 EC2 中的 KeepAlive
- 重新创建 ELB
我已经在这个问题上思考了 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 秒,现在由我尝试减少它。
希望对其他人有所帮助:)
首先,抱歉英语不好,我不是母语。
我是 AWS 的新手,但不是网络开发的新手,我正在尝试为我的一个网站配置云解决方案,该网站在不久的将来可能会获得大量流量。
感谢堆栈溢出和 AWS 文档,我成功地配置了我的实例、自动缩放组等,但是当用围攻测试它时,我遇到了一个奇怪的问题:
- 直接使用 elastic ips 在 EC2 实例上进行基准测试工作完美 100% 可用性,一切都很好
- ELB 上的基准测试效果不佳,90% 的可用性都是由于 504 错误,但大多数请求在不到 2 秒内得到响应
自动伸缩组中只有1个实例属于ELB,是弹性ips的实例
所以,我上网查了一下,发现有很多人遇到了和我一样的问题,但是都没有人回答。我尝试了我发现的所有东西,包括:
- 正在检查 ELB healthCheck 是否正常工作
- 正在尝试启用 ELB 粘性
- 增加 EC2 中的 KeepAlive
- 重新创建 ELB
我已经在这个问题上思考了 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 秒,现在由我尝试减少它。
希望对其他人有所帮助:)