apache 下载站的怪现象

2015-09-06 18:10:28 +08:00
 lumda
我的服务器是 liux+apache ,用作校园内的软件共享(下载站)
奇怪的是,用户经常莫名奇妙的下载不完全,比如几十兆的软件,下载了几兆浏览器就提示下载完成了,当然实际上是用不了的。
也不是下载中断,也不是下载错误,而是下载完成哦!各种浏览器,包括 IE , FF,Chrome,Opera 都是这样。用户自然就反映,下载的有病毒啊,打不开啊,等等等等。
这是什么原因?和缓存什么有关系吗?要怎么设置?
3504 次点击
所在节点    程序员
24 条回复
lightforce
2015-09-06 18:37:04 +08:00
贴日志,说三遍!
zonghua
2015-09-06 18:42:50 +08:00
不怕和谐吗?
invite
2015-09-06 18:49:05 +08:00
抓包
243205964
2015-09-06 18:49:23 +08:00
我宿舍经常在网络不好的,不管在什么网站下东西,都是下一点点就提示完成,然后打不开。最近网络挺稳定的,没出现过这种情况。
newborn
2015-09-06 19:01:52 +08:00
被入侵检测了?
viator42
2015-09-06 19:32:08 +08:00
好像是运营商搞得鬼,隔一段时间就重置一次链接.稍微大点的文件就下载不下来.
解决办法只能把链接拖到迅雷里下载
tkisme
2015-09-06 20:21:35 +08:00
@viator42 我觉得是为了控制流量之类的,找个好点的运营商吧
realpg
2015-09-06 20:29:13 +08:00
1. 你在 apache 端是否开启了限速,且该限速 mod 有缺陷
2. 校园网是否有比较 2B 的设备对用户端进行三层限速,主要是比较便宜的设备?如果是电信联通什么的接入的,是否用户端用了廉价 NAT 设备并开启了 IP 限速功能?
3. 是否网络状况不好,服务器端带宽占满

基本是网络原因,叠加 apache 服务器自身配置的原因导致的。
建议换 nginx , sendfile 模式打开,能比 apache 少遇到这个问题。
salmon5
2015-09-06 20:39:42 +08:00
liux+apache
lumda
2015-09-06 21:07:30 +08:00
@lightforce 日志我看过, error 和 access 都没看出所以然,因为不是每次都出现,出现了这种情况我一定贴出来
@zonghua ?不懂,请指教
@invite 在用户的机器上,而且下下来的都是最开始的部分,抓包应该也抓不出所以然
@243205964 和网络状态有关?我从大的下载站下东西不管多大的文件,如果下不下来都是提示下载失败或者连接中断,应该和 apache 配置有关,我不要求每次下载都能成功,只要下载了一部分不要当作下载完成就好了,用户不是傻子,提示下载失败他会再次尝试的
@newborn 这个答案很新颖,能说得详细点吗?
@viator42 有可能,链接拖到迅雷是用户端的行为吧,而且我们还有内部资料,或者一些作品什么的,不太好都提供迅雷链接
lumda
2015-09-06 21:08:12 +08:00
@salmon5 写快了, linux+apache
lumda
2015-09-06 21:15:01 +08:00
@realpg 信息量好大,我先去学习学习
nginx 的 sendfile 是快一些,试过,不过也会遇到这种情况
如果有网络问题这是正常的,再大的下载站也有下载不成功的时候,就是为什么下载了部分会提示下载完成,这才是重点,好像很少在别的网站上出现过
apache 虽然比 nginx 弱一些,但是作为那么多网站用的服务器,出现这样的问题应该是我配置的问题吧?就是有遇到过类似情况的朋友指点一下就好了
realpg
2015-09-06 21:23:34 +08:00
@lumda
这个问题很普遍,虽然不是常见那种,但是也不是很少见的那种,主要见于大的下载站服务器带宽很足但是单点下载速度很慢的时候,甚至中间会断流的时候,我很少去探寻这个问题的本质,我猜测是带宽满载时候流量整形以及包重发什么的机制导致的。

如果不是带宽满占,多半与操蛋的设备进行三层限速操作有关。我提到 sendfile 并不是说快慢的问题,是 sendfile 的机制我猜测啊可能对文件大小有提前约束。这种问题多见于那种下载列表都探测不到文件大小的链接。 sendfile 模式基本上在各种情况下都会发送完整的文件大小头信息。
publicID321
2015-09-06 21:34:13 +08:00
碰到过同样情况,从 vps 上拖文件, windows 下 IE , chrome 都是下到一半提示完成, linux 下 chrome 和 firefox 也是如此,网络连接还不错的情况下,后来用 axel 下的。
如果不方便服务端上解决,也可以先叫用户用下载工具,应该会好点。
alect
2015-09-06 22:50:49 +08:00
程序最多允许使用内存量 memory_limit 128M
POST 最大字节数 post_max_size 64M
允许最大上传文件 upload_max_filesize 64M
程序最长运行时间 max_execution_time 30 秒
imWBB
2015-09-07 00:19:03 +08:00
校园网内其实用
BTSYNC 共享文件更好哦。
lumda
2015-09-07 07:22:33 +08:00
@realpg 我根据你提供的信息上网查了一下,学到了很多新知识,谢谢,我先按 alect 提供的办法试一试,不行就把服务器换 nginx
lumda
2015-09-07 07:26:35 +08:00
@publicID321 如果能在服务器端解决是最好的了,多谢捧场
@imWBB 不只是共享文件,实际上还是个网站,也有新闻,还有下载内容的介绍等等
lumda
2015-09-07 07:33:26 +08:00
@alect 你的回复是我最希望看到的答案,虽然我不太明白下载不完全和设置 upload 有什么关系,但我还是按你说的改了
因为这种现象不是经常出现,所以暂时还没法验证,如果过一段时间再也没有出现下载不完全就说明你提供的方法是有效的,我到时候会更新这个帖说明结果,以后有朋友遇到类似的情况搜到这个帖也能帮助到他
newborn
2015-09-07 07:47:57 +08:00
我前面说的“被入侵检测”就是网络中有入侵检测设备通过改包的形式阻断了 tcp 连接。可以考虑开 https 再测试下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/218675

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX