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

2020-10-02 19:29:56 +08:00
 Osk

Nextclud 19 @ Ubuntu 20.04

情况:

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

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

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

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

4333 次点击
所在节点    问与答
13 条回复
hjc4869
2020-10-02 23:15:51 +08:00
视频暂停后浏览器仍然在继续缓冲后面的内容吧。关掉浏览器应该就好了。
pupboss
2020-10-02 23:23:03 +08:00
Osk
2020-10-02 23:23:16 +08:00
缓冲速度不可能有 300MBytes/s 吧 🤣
浏览器实际流量很少
pupboss
2020-10-02 23:25:01 +08:00
手滑发出去了,现在也不能贴链接了,求助过好几个帖子,都没卵用,建议不用它存大文件,没别的方案
pupboss
2020-10-02 23:25:15 +08:00
Osk
2020-10-02 23:25:15 +08:00
@pupboss 看来是 bug 了?客户端实际没请求的内容它也去读一遍
pupboss
2020-10-02 23:26:45 +08:00
@Osk 他们内部关于文件处理的部分,需要在文件读取结束做一个操作,所以在现有的框架下,基本上做不到暂停文件读取了,我的解决办法是大文件一般也就是一些视频,用 emby 方案更好一些
Osk
2020-10-02 23:27:45 +08:00
@pupboss 我除了视频还有其它文件也需要操作,看来只能放弃 nextcloud 了
Vneix
2020-10-02 23:29:25 +08:00
我把略缩图功能完全关闭后,用起来就很流畅了,不清楚你的问题是否可以这么解决
parametrix
2020-10-02 23:56:37 +08:00
似乎是个 bug 。可以考虑换到 Owncloud,和 nextcloud 非常类似,个人体验要稳健得多。
Osk
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
2020-10-03 02:05:23 +08:00
ignore_user_abort(false) 好像确实会炸。。。
pupboss
2020-10-03 11:31:41 +08:00
对的,会炸,有一个内部开发人员在我 GitHub issue 下给过这个方案,这行代码万万不能注释掉,老哥你要是懂 php 的话,帮忙看看 require_once $file; 这行代码,详情见这里: https://github.com/nextcloud/server/issues/8161

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

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

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

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

© 2021 V2EX