V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lumda
V2EX  ›  程序员

apache 下载站的怪现象

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

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

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

    为了排障,你可以直接接到服务器所在的网络测试一下下载。。。。。
    invite
        23
    invite  
       2015-09-07 19:43:57 +08:00
    @lumda 抓包可以看到 HTTP 头是多少,为什么下载了一点,就认为下载全了,是谁断开连接的。
    lumda
        24
    lumda  
    OP
       2015-09-08 17:44:51 +08:00
    @popok 我搜到了,修改 EnableSendfile 为 Off 和 EnableMMAP 为 Off ,作者说得有理有据,我想应该就是这样了
    已经照他说的改了,如果还是有这个现象,我再回复这个帖,非常感谢你!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2718 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 07:34 · PVG 15:34 · LAX 23:34 · JFK 02:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.