有人用 NextCloud 同步大文件出错的吗?

2022-08-11 02:32:16 +08:00
 jackey007

用 NC 客户端同步文件,1G 左右的文件同步报错,修改 apache 的 php.ini 和 NC 的.user.ini 文件解决了。我把 upload_max_filesize ,post_max_size 和 memory_limit 都修改为 16G 了,连一个 3.6G 的文件都同步不了。请问有遇到过类似问题的筒子吗?

报错:Class 'OC\Log\ExceptionSerializer' not found at ./nextcloud/web/lib/private/Log.php#318

搜索过这个问题,github 上也没看出一个明确的解决方案。

4757 次点击
所在节点    Linux
31 条回复
jackey007
2022-08-11 02:33:35 +08:00
实在解决不了,怕是还得折腾 seafile ,悲催……
T0m008
2022-08-11 03:43:58 +08:00
apache 的 LimitRequestBody 也要提高
documentzhangx66
2022-08-11 06:42:06 +08:00
1.传输文件的大小,与 upload_max_filesize 、post_max_size 、memory_limit 这些参数,其实都没什么关联。无论分时还是切片,都可以绕过这些东西。

2.我很怀疑,NextCloud 连个传输文件都做不好,checksum 这种事情,它更不可能做了吧?

3.搜了一下,隔壁 ownCloud 也有这个问题。

4.不过回头想想,这种开源软件开发商,本质上其实就是个前端公司,技术实力并不是他们的强项,他们的主要任务是,提供一个罗永浩式的可用的功能,然后主要精力是美化软件。几年前 syncthing 连文件同步逻辑都没做好。真要技术强了,早就去做商业化了,干嘛还开源。

5.所以,不建议用这些玩意同步你的重要数据。如果一定要,外面打个包,zip 都行,这样自己还可以检查数据的正确性,或者在解压时被动检查。另外自己还要再搞一套文件备份机制,别拿它当做备份。
bs10081
2022-08-11 06:42:07 +08:00
@jackey007 我主流的 self-hosting 網盤基本都用過,最後還是得群暉 + Seafile ,Seafile 拿來掛載使用非常 nice ,群暉則拿來同步檔案。
Osk
2022-08-11 07:40:40 +08:00
nextcloud 传大文件的时候, 是有点折腾, 一个是 httpd 的一些设置, 你已经改了.


另一个可能是: nextcloud 默认分片传输, 所有分片传完后, 后台会执行复制来合并分片, NVMe 这种还好, HDD 容易超时... 可以关闭分片试试.


最后: nextcloud 的核心功能有大问题, 慎用... 不知道现在解决动不动读取整个文件内容这个 bug 没有.
hhacker
2022-08-11 08:36:01 +08:00
nextcloud 最大的问题是大版本升级很容易升挂,不能跨版本升级,如果跨了大版本,不会有提示然后系统就挂了
rshun
2022-08-11 08:38:19 +08:00
如果你走的是 CF ,你可以直连试试
dototototo
2022-08-11 09:48:09 +08:00
说下我的经历,我最大上传过 12 G 的文件没出现问题,你可以先看下官方指导里说的一些设置对不对。https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html

还有看下 Nextcloud 的后台检测结果,是不是什么配置没弄好?如果没弄好的话它会有提示的。
neroxps
2022-08-11 09:54:20 +08:00
@jackey007 #1 seafile 客户端传输文件时候需要提前切片,web 传输文件需要服务器切片,多人同时在 web 端传输大文件的话,会耗尽服务器 CPU 资源。

seafile 还是适合做文本文档小文件备份,大量大文件(如视频、照片)没有极致的版本管理需求的,不太合适。

我用了 3 年 seafile 社区版,最终还是换回群辉。手机客户端找文件比 seafile 方便(企业版才能搜索)。
bubbleteaclub
2022-08-11 13:30:46 +08:00
我也是同步大文件出错,我按照这个修改了的
https://www.wuwenlong.net/archives/220
看起来是比你的多改了一行:
> max_execution_time=0#默认是 30 秒,改为 0 ,表示没有上传时间限制
gengchun
2022-08-11 13:58:21 +08:00
我用 NC 这种的原因就是出问题自己能修,而且能直接在线调。NC 这种算是最简单的架构。有一些基础,很多问题可以自己处理。数据也容易恢复。

类似 seafile 这种直接用 C 实现的,反正我是不会用的,因为不想花时间去看代码。

要防止文件损坏,建议用 raid 或者支持类似功能的文件系统,比如说 btrfs, zfs 这种。这个其实和同步是两个问题。


@neroxps 强调分布式都有这个问题,tidb 一开始的实现也是 QPS 因为 CPU 限制上不去,这个是很要命的。没有现成方案,要优化需要相当的技术,不是堆工时可以解决的事情。
jackey007
2022-08-11 16:10:12 +08:00
@bs10081 我用的是基于 debian 的 UNAS ,一个国产 NAS 软件。挂载我用的 UNAS 自带的,之前也用它自带的同步,一直没有问题,但是这个同步软件没有移动端,所以才开始折腾
jackey007
2022-08-11 16:21:25 +08:00
我看了一下,我的 php.ini 和.htaccess 文件里都没有这个选项,请问这个选项是在哪个文件的设置里?
jackey007
2022-08-11 16:23:56 +08:00
@bs10081 看来要做好同步盘不容易啊。我之前用的 UNAS 自带的同步,用了几年,倒是没出问题,只是这玩意儿没有移动端
jackey007
2022-08-11 16:24:20 +08:00
@hhacker 调稳定,就没打算升级,哈哈
jackey007
2022-08-11 16:24:51 +08:00
@rshun 不是的,我的测试都是在内网 ip 直连的
jackey007
2022-08-11 16:25:58 +08:00
@dototototo 好的,谢谢,我确认一下。Nextcloud 小白,请问后台检测结果要在哪里看?
jackey007
2022-08-11 16:35:10 +08:00
@bubbleteaclub 这个链接我打不开。但是这个应该不是问题,我内网测试的,max_execution_time=3600 ,这里不会超时。对了,请问您用得 NC 是哪个版本的?我的是 20.0.0 ,不止是不是后续版本解决了这个问题。我搜索报错信息,github 上有讨论过:
https://github.com/nextcloud/server/issues/24558
jackey007
2022-08-11 19:04:14 +08:00
感谢大家的回复,我的问题解决了。最终的问题其实很简单。
官方文档里关于 output_buffering 的修改陈述是这样的:
Output Buffering must be turned off in .htaccess or .user.ini or php.ini
我之前看.htaccess 和.user.ini 里都已经设置为 output_buffering = 0 了,就没有在 php.ini 里设置,今天才发现其实不行。把 php.ini 里的相应项设置为 output_buffering = OFF 就正常工作了。目前测试过 7.3GB 的文件同步,没有发现问题。
再次感谢大家。
bs10081
2022-08-11 19:52:50 +08:00
@jackey00 #12 #14 是這樣的,Seafile 最大的問題我覺得倒不是 @neroxps #9 所說的性能問題,畢竟以我的帶寬( 1Gbps/1Gbps )及樹莓派 4B 4G 的弱雞性能條件下,多人( 5 人)使用的時候,CPU 也沒有超過 50%,一般都在 5~15%徘迴,系統是官方 64bit 。

Seafile 最大的問題是,它的手機 App 非常難用,特別是當打開一個存滿了照片或影片的資料夾,就會出現瀕臨卡死的狀態,得等到整個資料夾都 cache 下來以後才會恢復正常,這個沒辦法忍受,太難用了。

但是電腦的 App 我覺得算是目前同步盤中的佼佼者,速度快( Seafile 同步完 5 萬個檔案細小零碎檔案以後,Synology Drive 才同步了 4000 多個檔案),穩定不吃性能(相較與 PHP 的 NextCloud 及 Synology Drive ,C 寫的 Seafile 完勝 )。

特別是 SeaDrive ,緩存式的掛載非常舒服,我都拿來存截圖,永遠用不完的截圖空間(檔案會先存在本地,後臺上傳至 Server 後,且超過 Cache 留存條件,就會從本地刪除),哈哈哈。下面這張圖就是通過 Seafile 分享的。

![]( https://sync.bs10081.com/seafhttp/files/f91d6d94-7b00-4182-8b3a-6361b7b793bd/CleanShot%202022-08-11%20at%2019.49.31%402x.png)

結論,如果需要一個好用的手機 App ,還是乖乖買群暉比較好,Seafile 和 Synology Drive 配合使用。

附上我使用的 Seafile Image ⬇️ (純 Docker 容器)

https://github.com/ggogel/seafile-containerized

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

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

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

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

© 2021 V2EX