有一个缓存服务器(Varnish):它根据请求从 Amazon S3 接收数据,保存一段时间并将其提供给客户端。我们遇到了1GBit通道容量不足的问题。4 小时内的峰值负载完全阻塞了通道。服务器性能目前足够了。每天大约传输 4.5TB 的数据。每月累积超过100TB。
想到的第一个想法就是再添加一个 1GBit 端口并安静地休眠,直到 2GBit 不够用(这可能很快发生)或一台服务器无法处理它。
然后我们只需要添加新的缓存服务器。但是现在我们需要一个负载均衡器,它将在同一个 URL 上发送请求,始终在同一个服务器上(以避免相同缓存对象的多个副本)。
以下是问题:
这是我的司机信息。
ethtool -i ethXX
driver: ixgbe
version: 3.9.15-NAPI
firmware-version: 0x800000a5
bus-info: 0000:04:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
Run Code Online (Sandbox Code Playgroud)
现在我有 1/1.5 Gbps(每秒 75k 数据包)的平均流量到达这个接口,我可以看到一个/或多个 ksoftirqd 线程达到 100%。
我尝试启用 rx-usecs/rx-frames 选项,但没有改进。有点延迟对我来说不是问题。我只想减少 ksoftirqd 的使用。
我看到 rx-usecs 的限制是 1022,这是之后应该触发下一个中断的 usecs(这是我的理解,如果我错了,请纠正我)。虽然它不能解决我的问题。
另一方面,此驱动程序不支持 rx 帧。也不支持“adaptive-rx”。
我应该关注的下一步是什么?任何帮助是极大的赞赏。
tl; dr:第一个 CPU 内核始终处于饱和状态,所有其他内核始终负载不足。
一个虚拟机,在基于 Ubuntu 的 Xen XCP 中:
$ uname -a Linux MYHOST 2.6.38-15-virtual #59-Ubuntu SMP Fri Apr 27 16:40:18 UTC 2012 i686 i686 i386 GNU/Linux $ lsb_release -a 没有可用的 LSB 模块。 分销商 ID: Ubuntu 描述:Ubuntu 11.04 发布:11.04 代号:natty
此 VM 有 8 个 CPU 内核。
这个虚拟机上运行着 10 个单线程工作进程,它们通过 FCGI 接口连接到 nginx 服务器(在本地网络端口上侦听)。
在来自 AB 的合成负载下,只有 8 个内核中的第一个内核会加载到 100%(如从 中看到的htop)。它或多或少地始终处于非常高的负载下,所有其他内核的负载从 0% 到 100% 不等,或多或少是随机的(并且这些内核的 CPU 负载在跳动)。
这是我在负载下通常看到的内容htop:
1 [|||||||||||||||||||||||||||||||||||||||||||| …
我的服务器目前运行 CentOS 5.2,WHM 11.34。
目前,我们的平均负载为 6.43 到 12。我们托管的网站需要花费大量时间来响应和解决。 top没有显示任何异常,iftop也没有显示大量流量。
我们有很多转销商,有些不擅长编写代码,我们如何找到罪魁祸首?
vmstat 输出:
vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 2 84 78684 154916 1021080 0 0 72 274 0 14 6 3 80 12 0
Run Code Online (Sandbox Code Playgroud)
顶部输出(按 %CPU 排序)
top - 21:44:43 up 5 days, 10:39, 3 users, load average: 3.36, 4.18, 4.73
Tasks: 222 total, 3 running, 219 …Run Code Online (Sandbox Code Playgroud) 我需要同步两个系统,以便生产者列出要在消费者应用程序上创建的新实体。它没有实时需求(主要是数据挖掘,因此延迟几个小时不是问题),但重要的是,当服务器已经忙于为真实用户提供服务时,不要运行此任务。
我尝试以较低的优先级运行同步服务(nice -n19),但就我所见,它仍然会损害性能,就好像此同步服务运行大型数据库查询一样,它仍然会增加数据库的负载工艺和整机
有没有办法测试负载并在负载太高时直接退出(比如上面的2)?
理想情况下,如果 cron 没有处理太长时间,就会发出某种警报,因为负载永远不会低于 2。
这是一个好方法还是我正在制造更多正在解决的问题?
我需要一种方法来重现我们网站不久前经历的突然流量激增,以便有机会保持我们的堆栈正常工作。
我们的负载均衡器在某个时刻报告说每分钟执行大约 35 万个请求,破坏了一切,从操作系统到关闭后端。我尝试研究执行这种突发测试的服务,但似乎在调整测试设置以匹配所需条件时,它只会花费太多。
如何以符合这些条件的方式对我的堆栈进行负载测试?
在高性能计算的背景下,是否存在合理/安全的 CPU 负载水平?
我理解的意思的平均负载在一般的服务器,但不知道会发生什么,建成并用于高性能计算服务器。
通常的约定是否load <= # of cores适用于这种环境?
鉴于我的系统特定详细信息,我很好奇,通常load >> # of cores每个节点:
节点的正常运行时间很长,CPU 使用率/负载通常很高。很少有硬件故障,尤其是 CPU,但我不知道在给定高负载的节点的整个生命周期中会发生什么。
示例top输出:
top - 14:12:53 up 4 days, 5:45, 1 user, load average: 313.33, 418.36, 522.87
Tasks: 501 total, 5 running, 496 sleeping, 0 stopped, 0 zombie
%Cpu(s): 33.5 us, 50.9 sy, 0.0 ni, 15.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 19650371+total, 46456320 …Run Code Online (Sandbox Code Playgroud) linux central-processing-unit cpu-usage high-load load-average
我需要为高容量 WordPress 网站推荐可扩展的网络主机。就我而言,高流量可能是 100K-500K 访问者/小时。可能会将 1M/小时的突发速率视为“高水位线”。
我知道 WP 不是目前性能最高的平台(哈!),但它是不容商量的。我可以进行“通常的优化”(例如,将静态文件放入 CDN,运行并遵循 YSlow 等性能分析器的建议)。但它仍然是 WordPress,并且会涉及十几个插件。
那么,在哪里托管网站?大多数“最好的 WordPress 主机是什么?” 讨论似乎集中在最低成本上。我需要相反的。您使用过哪些大容量、可扩展或集群的 WordPress 主机?
我的机器有 4 个内核。我的平均负载约为 1.2 是否意味着所有内核都非常忙?还是我机器的真实负载?1.2 / 4 = 0.3 也就是说这台机器是不是超载了?
目前,我们的队列大小为 3000 个请求。
location /api/v2 {
limit_req zone=bursted burst=3000;
include /etc/nginx/proxy.conf;
}
Run Code Online (Sandbox Code Playgroud)
速率限制为每秒 10 个请求。
limit_req_zone $limit zone=api_slow:10m rate=1r/s;
limit_req_zone $server_name zone=bursted:10m rate=10r/s;
Run Code Online (Sandbox Code Playgroud)
保持活动超时为 30 秒。换句话说,当队列已满时,每 30 秒应拒绝 2700 个请求,并显示错误代码 408。
reset_timedout_connection on;
client_body_timeout 10;
send_timeout 2;
keepalive_timeout 30;
Run Code Online (Sandbox Code Playgroud)
在高峰时段,我在日志中找不到任何请求,由于超时,该请求被 NGINX 拒绝,错误代码为 408,而请求正在队列中等待转发到 servlet 容器。仅拒绝并返回 503 错误代码,这与请求速率开销相对应。
delaying request, excess: 2958.320, by zone "bursted"
limiting requests, excess: 3000.730 by zone "bursted"
Run Code Online (Sandbox Code Playgroud)
如果此类队列中的请求挂起时间过长,NGINX 是否会通过超时拒绝这些请求?这个超时是什么?它的配置在哪里?
nginx reverse-proxy 503-error high-load http-status-code-408
high-load ×10
linux ×4
cpu-usage ×2
load-average ×2
ubuntu ×2
503-error ×1
bandwidth ×1
centos5 ×1
cron ×1
load-testing ×1
nginx ×1
scalability ×1
web-hosting ×1
wordpress ×1