Nextcloud打开缓慢\卡顿的一些优化
有些朋友问道我关于Nextcloud优化的问题,基本上就是新装NC后缓慢,打开网页一卡一卡的
其实之前这个我之前也写过:宝塔面板下nextcloud完美优化配置
这次就单独提出来,详细说说,本文环境为CentOS 7 + 宝塔,root用户权限,实际命令请根据实际情况修改
官方文档
NC的官方文档其实写的很详细了,本文也是基于这个文档来操作的,最新版(18)也新增了一些优化选项,建议阅读
https://docs.nextcloud.com/server/18/admin_manual/installation/server_tuning.html
开始
后台任务
NC的后台任务执行方式分为3中,AJAX
、Webcron
、Cron
默认是AJAX即在每次访问Nextcloud任意页面都会通过AJAX的方式发起定时任务的执行请求,这种方式如果没有自己的独立服务器或者VPS的话还是比较方便省心的
但官方推荐使用Cron
,和Nginx或Apache等WEB服务独立开来,互不影响
在Nextcloud设置 — 基本设置里,选择为 Cron
然后SSH到服务器,添加crontab定时任务
crontab -e
添加一行,并保存
*/5 * * * * sudo -u www php -f /www/wwwroot/file.bugxia.com/cron.php
内存缓存
通过使用内存作为数据缓存的话,可以提高NC的性能,以加快WEB端的访问速度,并且Nextcloud支持多个内存缓存后端,如APCu
、Redis
、Memcached
这里以APCu+Redis为例,并且官方推荐的缓存组合就是APCu和Redis,其他的缓存后端配置请参阅:Nextcloud内存缓存优化的官方文档
安装PHP的APCu+Redis扩展
配置
安装完毕后,打开/www/wwwroot/file.bugxia.com/config/config.php
,在其尾部添加以下代码
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => [
'host' => '127.0.0.1',
'port' => 6379,
],
'memcache.locking' => '\OC\Memcache\Redis',
开启HTTP2
宝塔面板安装的Nginx默认已支持http2,这里不再赘述
[root@ali-sg ~]# nginx -V
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.1.1b 26 Feb 2019
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/www/server/nginx --with-openssl=srclib/openssl --add-module=srclib/ngx_devel_kit --add-module=srclib/lua_nginx_module --add-module=srclib/ngx_cache_purge --add-module=srclib/nginx-sticky-module --add-module=srclib/nginx-http-concat --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-pcre=srclib/pcre-8.42
优化PHP-FPM参数
这里也是需要根据自身服务器环境进行设置,不过基本的前提就是并发量足够大,内存就要足够大
宝塔的配置文件路径在 /www/server/php/73/etc/php-fpm.conf
官方给的参数是
pm = dynamic
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18
宝塔面板上可以很方便的进行PHP-FPM参数设置
开启PHP OPcache
通过安装OPcache扩展,也可以在一定程度上提升PHP的性能
实测
简单测试,可以用Chrome自带的控制台关闭Chrome缓存,连续打开几次同一个页面记录加载时间
优化前
平均加载时间都在5秒左右
优化后
平均加载时间缩短至在2秒左右
效果还是很明显的
14 条评论
博主,请教一下,这条是请求什么的 提示404,还是3秒多。
http://192.088/index.php/core/preview?fileId=319&c=308fa1e895cdcf010b9f452b58e132d1&x=250&y=250&forceIcon=0
@lkainan
这个看着好像是某个文件的预览链接,不过我也没头绪……
@Bug侠
最后查到了,是开了预览。 它在预览1个加密的word文件的时候,由于有密码保护,预览失败,超时了。
我更新到18.0.3以后发现NC会经常出现加载页面出现问题的倒计时,然后后台直接点前端就会要一直登陆,把链接重置以后就好了
目前觉得NC更新太快了,好多东西都拉垮了。我是Win7,用Webdav添加网络磁盘有容量不正常,目录不显示但是能同步的问题
@陈·锋
我这边也是18.0.3,目前看还正常。
确实如你所说,NC本身基于Owncloud,代码量比较大,后期更新bug也越来越多
它Windows的客户端从2.6.3就不支持Win7了,见这里:https://github.com/nextcloud/desktop/pull/1727
快更新Win10吧
@Bug侠
Win7钉子户表示没办法忍受危软的Windows Bug更新,为了稳定还是钉在Win7,现在越更新NC越觉得漏洞太多,希望能够有所改善吧
@陈·锋
请问 19.0.1登陆后就出现, 加载页面出现问题,将在 5 秒后重新加载
然后就返回登录页面 这个是什么问题 怎么修复?
@ccCloud
没法具体说明原因,得结合日志分析 /data/nextcloud.log
另外也有个思路,和php的session机制有关
他的方法是在php设置里修改\添加
session.gc_probability = 0
参考:
https://help.nextcloud.com/t/clean-install-nextcloud-18-0-2-problem-loading-page-reloading-in-2-seconds-error/74854/5
这两天在搞nextcloud18,在原有的网站上使用子目录的方法架设,但原站不能使用443端口。怎么禁用https。安装完成后,打开网站会自动重定向到https,我在nginx里已经把关于https的设置全部关了。url重定向也关。但是还是每次打开网站还是自大动转到https下,怎么破?
@ada
我这边测试了一下使用nginx同时监听80和443,访问80端口,使用chrome确实会自动跳转到443,但是单独开一个隐身窗口,就不会自动跳转443。
然后使用Edge,直接就打开了80,没有跳转443
所以大概率是浏览器的缓存导致的……
您好,请教下nextcloud 安装完成后通过webdav 链接无法链接到服务器(已经绑定ssl证书),是什么原因?
@leroy
不好意思啊,我这边手机上使用webdav是正常的,之前也没有遇到过类似的问题,所以没法帮到你。另外,貌似有一些软件,webdav协议的前缀不太一样,有些可能是https://有些可能是davs://
可以再排查一下