当下载速度变慢时,哪里可以find瓶颈?

从我们的网站下载的图像每天晚上放缓。 与白天相比,我们在晚上获得了超过50%的stream量。 具体数字来看,在白天时段,每小时的浏览量约为20k,在夜间小时的浏览量约为30k。

我们在Apache,Centos 5,PHP 5,MySQL。

下图显示了每10分钟从特定远程站点下载特定3MB映像的时间。 随着网站stream量的增加,下载速度下降到一半。

替代文字

  • 我们的CPU使用率不高。 我们有两个四核CPU。
  • 32GB内存。
  • Mysql使用了大约10GB的内存。
  • Apache服务器状态在高峰时间显示大约40-50个并发进程。 每个进程持有大约30-40MB驻留内存。 所以大约2GB的内存去Apache。

其余的内存,大约20GB,留给Linux使用。 vmstat,free -m不显示任何交换。 这是一个vmstat输出:

# vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ rb swpd free buff cache si so bi bo in cs us sy id wa st 0 0 220 409700 491656 25727136 0 0 9 42 1 1 1 0 98 0 0 2 0 220 408076 491656 25727140 0 0 0 2032 1916 1992 2 1 98 0 0 0 0 220 405848 491656 25727180 0 0 0 0 1631 1325 1 0 99 0 0 0 0 220 404992 491656 25727180 0 0 0 0 1508 1203 1 0 99 0 0 3 0 220 405228 491656 25727216 0 0 0 0 1548 1600 2 1 98 0 0 0 0 220 404236 491656 25727224 0 0 0 0 1860 1645 2 1 97 0 0 1 0 220 403916 491656 25727284 0 0 0 2512 1817 1035 2 1 97 0 0 0 0 220 403900 491656 25727284 0 0 0 2164 1826 1678 1 1 98 0 0 0 0 220 408908 491656 25727312 0 0 0 828 1636 952 1 0 99 0 0 0 0 220 408544 491656 25727312 0 0 0 0 1844 1991 1 1 98 0 0 1 0 220 407856 491664 25727328 0 0 180 0 1567 1194 4 0 96 0 0 0 0 220 406772 491664 25727460 0 0 0 0 1290 1049 4 1 95 0 0 0 0 220 406964 491664 25727548 0 0 28 208 1589 904 1 0 99 0 0 0 0 220 406840 491664 25727560 0 0 0 1796 1885 1396 1 0 99 0 0 1 0 220 405136 491664 25727612 0 0 0 0 1727 1280 1 0 98 0 0 0 0 220 404400 491664 25727628 0 0 24 0 1807 1494 1 0 98 0 0 1 2 220 403996 491668 25727812 0 0 232 0 2221 1633 1 1 97 1 0 0 0 220 404228 491668 25727844 0 0 20 1776 1673 1332 1 0 97 1 0 0 0 220 403688 491672 25727988 0 0 68 348 1508 977 1 0 99 0 0 0 0 220 403444 491672 25728004 0 0 0 0 1436 900 1 0 99 0 0 0 0 220 403948 491672 25728104 0 0 0 0 1413 1131 1 0 99 0 0 1 0 220 392984 491672 25728104 0 0 0 1520 1455 1946 5 2 93 0 0 1 0 220 307264 491672 25728124 0 0 0 12 1829 1520 8 2 91 0 0 4 0 220 306276 491672 25728132 0 0 0 0 1364 1497 7 0 92 0 0 1 0 220 305320 491672 25728160 0 0 0 0 1510 1773 9 1 90 0 0 1 0 220 305444 491672 25728164 0 0 0 0 1620 1666 7 0 93 0 0 1 0 220 304456 491672 25728208 0 0 0 3396 1813 1836 7 0 93 0 0 

由于这个特定的testing图像每隔10分钟被调用一次,它应该留在OScaching中,并从OScaching中提交,对不对? CPU不忙。 所以图像应该很快传递?

我在这里遇到的瓶颈是什么?
– 是否有助于安装第二台硬盘来存放图像?
– 如何使用PHP APC来减lessCPU负载?

任何build议来诊断问题?

谢谢,Haluk

更新:
Per Knitti的build议我已经在内存挂载目录中设置了相同的图像。
以下是昨天的结果:
内存安装3MB图像:
替代文字

硬盘 3MB映像:

替代文字

平均而言,它们非常接近。 他们都受到晚上交通的影响。 与硬盘驱动器相比,内存中的图像有时可以传送得更慢。 我认为这告诉我他们都应该在记忆中。

所以我认为这不是一个硬盘瓶颈问题。

– 这可能与apache有关吗?
– 或networking相关?

这里是sar -n晚上的所有输出。 据此,我们在10分钟内平均不超过400kb / s。 我们的带宽是10mbps,所以我们还没有使用它的一半呢。

  IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 08:10:01 PM lo 0.63 0.63 66.48 66.48 0.00 0.00 0.00 08:10:01 PM eth0 342.69 431.72 59755.43 368330.14 0.00 0.00 0.00 08:10:01 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:10:01 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:20:01 PM lo 0.43 0.43 45.08 45.08 0.00 0.00 0.00 08:20:01 PM eth0 310.96 389.32 62960.35 327811.74 0.00 0.00 0.00 08:20:01 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:20:01 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:30:01 PM lo 0.68 0.68 71.97 71.97 0.00 0.00 0.00 08:30:01 PM eth0 341.29 421.12 69692.70 354844.36 0.00 0.00 0.00 08:30:01 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:30:01 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:40:01 PM lo 0.79 0.79 87.60 87.60 0.00 0.00 0.00 08:40:01 PM eth0 365.76 451.49 66813.87 385379.38 0.00 0.00 0.00 08:40:01 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:40:01 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:40:01 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 08:50:01 PM lo 0.47 0.47 49.49 49.49 0.00 0.00 0.00 08:50:01 PM eth0 336.77 413.37 57303.78 357556.44 0.00 0.00 0.00 08:50:01 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:50:01 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 08:00:01 PM totsck tcpsck udpsck rawsck ip-frag 08:00:01 PM 218 21 9 0 0 08:10:01 PM 200 21 9 0 0 08:20:01 PM 211 22 9 0 0 08:30:01 PM 205 22 9 0 0 08:40:01 PM 191 21 9 0 0 08:50:01 PM 201 21 9 0 0 

听起来像一个networking问题。 在非高峰时段和高峰时段进行图像下载的数据包捕获。 比较两者,看看你是否得到很多RST的。

  • 你可以检查另一个磁盘是否有帮助,如果你从一个ramdisk /内存fs提供一些文件。 没有什么比记忆速度快。
  • 计算你的下载速度乘以你的并发下载。 也许有些上游连接没有足够的带宽。
  • 从第三个(第四,第五个)位置检查,以确保您没有达到下载位置的限制。

您需要优先考虑TCP ACK数据包。 见http://phix.me/dm/