goagent/goagent — pull request #91 by harmonymeow (2013-04-24 22:04:25+00:00)
Title: Slow down range fetch to prevent memory overflow

针对Windows下Google Chrome打开Youtube的HTML 5播放器的情况。由于其支持0.25-2倍速播放，播放器会一次请求这个视频内容。而chrome似乎无法及时读取goagent返回的数据。当视频较长（30分钟以上）会导致数据堆积。当内存超过256M警戒值时goagent会自动重启，已下载的数据丢失，导致视频中断，且浪费流量。因此如果内存中已有的数据(data_queue)过多时应暂缓下载。
现有缺陷:
1. 3000*1048576这个数值是基于实验得来，没有理论依据，实际效果见图（我的maxsize=1048576）
2. sleep(10)在1080p情况下，200M数据约可播放250秒，10秒似乎太过保守
3. qsize()的开销过高如何？是否会导致cpu占用过高？
![qsize_patch](https://f.cloud.github.com/assets/3032746/422492/34eacaa6-ad29-11e2-8314-0480f0e1acb9.png)