V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Osk
V2EX  ›  问与答

有用 NextCloud 的大佬没, 文件系统 IO 巨高

  •  
  •   Osk · 2020-10-02 19:29:56 +08:00 · 4259 次点击
    这是一个创建于 1301 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Nextclud 19 @ Ubuntu 20.04

    情况:

    我有一个 SMB 共享,由于 Nextcloud 使用的 smbclient 不知道是不是不支持 smb3 的挂载, 外部存储添加 smb 死活添加不上。

    只能走迂回方法:本地挂载 cifs,然后 NextCloud 里面添加本地存储访问它。

    另人窒息的来了: 我在浏览器上访问文件(视频文件)在线播放,然后 SMB 服务器的磁盘 IO 就被吃满了,感觉 NextCloud 在把文件本身全部读取一遍那种动作,巨卡。即使停止播放仍然占用大量 IO 到很久,资源监视里面可以看到被点击的文件和同文件夹的其它文件被读取中。

    怀疑是 SMB 的问题,拷了几个大文件到本地磁盘,结果发现 NextCloud 的行为仍然一致,web 上点击文件播放,NextCloud 后台就能把磁盘 IO 吃满。

    13 条回复    2020-10-03 11:31:41 +08:00
    hjc4869
        1
    hjc4869  
       2020-10-02 23:15:51 +08:00
    视频暂停后浏览器仍然在继续缓冲后面的内容吧。关掉浏览器应该就好了。
    pupboss
        2
    pupboss  
       2020-10-02 23:23:03 +08:00
    Osk
        3
    Osk  
    OP
       2020-10-02 23:23:16 +08:00 via Android
    缓冲速度不可能有 300MBytes/s 吧 🤣
    浏览器实际流量很少
    pupboss
        4
    pupboss  
       2020-10-02 23:25:01 +08:00
    手滑发出去了,现在也不能贴链接了,求助过好几个帖子,都没卵用,建议不用它存大文件,没别的方案
    Osk
        6
    Osk  
    OP
       2020-10-02 23:25:15 +08:00 via Android
    @pupboss 看来是 bug 了?客户端实际没请求的内容它也去读一遍
    pupboss
        7
    pupboss  
       2020-10-02 23:26:45 +08:00
    @Osk 他们内部关于文件处理的部分,需要在文件读取结束做一个操作,所以在现有的框架下,基本上做不到暂停文件读取了,我的解决办法是大文件一般也就是一些视频,用 emby 方案更好一些
    Osk
        8
    Osk  
    OP
       2020-10-02 23:27:45 +08:00 via Android
    @pupboss 我除了视频还有其它文件也需要操作,看来只能放弃 nextcloud 了
    Vneix
        9
    Vneix  
       2020-10-02 23:29:25 +08:00 via Android
    我把略缩图功能完全关闭后,用起来就很流畅了,不清楚你的问题是否可以这么解决
    parametrix
        10
    parametrix  
       2020-10-02 23:56:37 +08:00
    似乎是个 bug 。可以考虑换到 Owncloud,和 nextcloud 非常类似,个人体验要稳健得多。
    Osk
        11
    Osk  
    OP
       2020-10-03 01:47:25 +08:00
    @hjc4869 @pupboss @Vneix @parametrix 确认这是一个 "feature":github.com/nextcloud/server/pull/4491/files

    不知道是不是我没配置对,带来的体验及其糟糕:一旦服务端开始读取一个文件,不管客户端这边是否取消,服务器那边都要把它读完。
    比如:点击一个超大文件下载,然后点击取消,接下来的几分钟都别想用了,等服务端占着 io 把文件读完了再说。。。。


    搜索代码中 `ignore_user_abort(true)`,改成 `ignore_user_abort(false)`. 测试了一下视频在线预览,拖进度条流畅多了,后台看看 io 也正常了,不像之前动不动 100%读文件。
    但是不懂 php 不知道 nextcloud/owncloud 官方加入这个这个的作用,怕乱改代码炸服务器。

    终于像个正常网盘该干的动作了,有意思的是,有人提过 issue,被关了。。。
    Osk
        12
    Osk  
    OP
       2020-10-03 02:05:23 +08:00
    ignore_user_abort(false) 好像确实会炸。。。
    pupboss
        13
    pupboss  
       2020-10-03 11:31:41 +08:00
    对的,会炸,有一个内部开发人员在我 GitHub issue 下给过这个方案,这行代码万万不能注释掉,老哥你要是懂 php 的话,帮忙看看 require_once $file; 这行代码,详情见这里: https://github.com/nextcloud/server/issues/8161
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1424 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:32 · PVG 01:32 · LAX 10:32 · JFK 13:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.