我们正在尝试在 Amazon EC2 上运行一个相当简单的设置 - 位于 Amazon Elastic Load Balancer (ELB) 后面的几个 HTTP 服务器。
我们的域是在 Route53 中管理的,我们设置了一个指向 ELB 的 CNAME 记录。
我们遇到了一些问题,其中一些(但不是全部)位置间歇性地无法连接到负载均衡器;看来这可能是ELB的域名解析。
亚马逊支持告诉我们负载均衡器的底层弹性 IP 一直在变化,问题是一些 ISP 的 DNS 服务器不遵守 TTL。我们对这种解释并不满意,因为我们使用 Amazon 自己的 DNS 服务器从 EC2 实例以及澳大利亚本地 ISP 和 Google 的 DNS 服务器复制了该问题 ( 8.8.8.8
)。
亚马逊还证实,在我们注意到某些位置出现停机期间,通过 ELB 的流量显着下降——因此问题不在于我们的端点。
有趣的是,域似乎在无法连接的服务器上解析为正确的 IP - 但尝试建立 TCP 连接失败。
附加到 ELB 的所有实例一直处于健康状态。他们都是
有谁知道我们如何更深入地诊断这个问题?有没有其他人在使用 Elastic Load Balancer 时遇到过这个问题?
谢谢,
我vagrant
为运行 OSX 的开发人员管理一个设置,以管理 VirtualBox 系统进行开发。
为了inotify
在 linux 机器内部提供支持,我们避开了与 VirtualBox 共享目录的常用方法:相反,Virtualbox 机器公开了一个 NFS 共享,该共享安装在 OSX 中。
Git(以及相关工具,如 sourcetree)在 OSX 中的共享目录中运行。其性能极差:仅运行git status
. 将一个小型存储库克隆到挂载的 NFS 驱动器可能需要几分钟(在本地驱动器上为 5-10 秒)。
显然 NFS 的性能会比直接写入本地 SSD 更差,但 NFS 只是在 Virtualbox 的虚拟专用网络接口上运行。
我运行了几个基准测试。首先:
dd if=/dev/zero of=test bs=16 count=16384
Run Code Online (Sandbox Code Playgroud)
每个结果都基于 100 个样本。
# local drive
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.990 1.000 1.020 1.021 1.030 1.130
# on the shared NFS drive
Min. 1st Qu. Median Mean 3rd Qu. Max. …
Run Code Online (Sandbox Code Playgroud) 我正在针对 Web 服务运行负载测试。这是一个运行在 php-fpm 和 nginx 上的 php 应用程序,带有 fastcgi。有一个 MySQL 后端仅用于小型读取。
我总是看到一个奇怪的模式:性能稳定并随着流量的增加而可预见地增加,但在高峰期变得不稳定:CPU 使用率不断波动。
这是我看到的性能模式(用 可视化nmon
):
下降总是与我的负载测试工具 - locust.io - 在它完成上升到我为测试设置的峰值水平时的短暂暂停同时发生。
我的假设:在这短暂的时刻,php-fpm
主人认为负载已经消失并开始杀死工人;当流量在片刻之后全面恢复时,它无法足够快地响应。
我不太明白的是为什么它永远无法完全回到它的摆动中:我看到负载均衡器后面的所有 4 个应用程序服务器无限期地出现这种波动。
这是我的 php-fpm 池配置:
[www]
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 100
pm.start_servers = 40
pm.min_spare_servers = 40
pm.max_spare_servers = 100
pm.max_requests = 10000
Run Code Online (Sandbox Code Playgroud)
我已经确认这不是数据库的问题 - 在将 MySQL 读取从站的数量增加一倍后,我看到了完全相同的行为。
这是什么原因造成的?我怎样才能阻止它?
编辑:
这是一个图表,展示了我所看到的。请注意,故障率通常会在 user_count 达到峰值时出现峰值,然后逐渐回落。
amazon-ec2 ×1
cloud ×1
load-testing ×1
nfs ×1
nginx ×1
performance ×1
php ×1
php-fpm ×1
vagrant ×1
virtualbox ×1