gpt4 book ai didi

nginx - ELB、RDS mysql、EC2、NGINX 接下来在哪里寻找并发性能问题

转载 作者:行者123 更新时间:2023-12-02 17:54:24 26 4
gpt4 key购买 nike

设置:EC2 服务器在 ELB 后面自动扩展,连接到 RDS mysql 数据库,所有静态文件均由 Cloudfront 提供。

我在 EC2 服务器上运行 nginx 作为 Web 服务器,keepalive 设置为 20,工作进程 4,。 Codeigniter 是后端并使用 codeigniter session 。

我一直在运行大量基准测试来尝试测试性能、siege、apache 基准测试、blitz.io。

我正在测试两个特定的页面,第一个页面的性能非常好,它使用 codeigniter session ,因此会访问数据库来读取和更新 ci_sessions 数据库。第二页是我遇到问题的页面,它运行一个包含多个连接的查询,单个用户大约需要 0.4 秒才能完成。该查询已经过优化,并且我正在使用 InnoDB 表。在 c10 和 n1000 的 apache 基准测试下,100% 的请求在 634 毫秒内返回。

当我运行并发用户数 > 200 时,我开始遇到问题。添加更多 EC2 服务器并没有帮助,CPU 的利用率约为 50%。 RDS数据库监控还显示CPU和内存使用率低于70%,平均数据库连接数<35。

通过迁移到大型 RDS 实例和大型 EC2 实例,性能得到了提高,这让我想知道 I/O 是否在这里发挥作用。

如果我在负载测试期间启动 ELB 外部的服务器并点击此页面,它会在不到一秒的时间内返回,但如果我启动 ELB 内的另一台服务器,则最多需要 4 或 5 秒。这表明我没有使 RDS 过载。

我尝试以 5 分钟的突发速度缓慢提高 ELB,但这似乎没有帮助。

我想知道接下来该在哪里寻找这个问题,无论是某种 I/O 问题还是其他问题,因为 RDS 和 EC2 服务器似乎没有发挥其功能。任何建议或想法下一步将不胜感激

最佳答案

好的。正如你所知,这是一个非常广泛的主题。但我会尽力提供帮助。

  1. ELB 通常不太擅长突发扩展。在与 Amazon 工程师讨论此事后,我发现他们实际上不会突发扩展 ELB,因为这是不可能的。您需要随着时间的推移保持一致的负载才能扩大 ELB。正因为如此,我改用了 haproxy。除了 ELB 不会在突发负载上扩展之外,它还使用 CNAME 进行 DNS 查找,这也会影响您的性能。因此,如果您计划经常出现突发负载,或者需要 DNS 查找,那么最好摆脱 ELB。

  2. RDS 是一个黑匣子。嗯,这并不完全正确,但一般来说,我会避免使用 RDS,除非我知道后端是一个易于扩展的简单设置。话虽如此,RDS 确实有助于扩展,但我会简化后端并确保您的查询快速运行。在常规 MySQL 实例上运行它,看看它是否是亚秒级的。根据我的经验,当您说查询“优化”时,如果您明白我的意思,并不意味着没有其他方法可以使其更加“优化”。

关于nginx - ELB、RDS mysql、EC2、NGINX 接下来在哪里寻找并发性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11285768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com