Nextcloud 20 使用笔记 – 性能优化

  本篇用于记录在 Nextcloud 20.0.4 使用过程中尝试过的性能优化方法

1.内存缓存配置

  在安装好 Nextcloud 后,设置中会建议安装 APCu 作为内存缓存,而配置内存缓存可以显着提高 Nextcloud 服务器的性能,详见管理员手册-Memory caching。一般情况下只需要安装并配置 APCu 即可消除警告,但是如果想尝试进一步优化,官方的建议是同时使用本地和分布式缓存(APCu+Redis),操作步骤如下

  在 PHP 扩展中安装 APCu 和 Redis,然后编辑 Nextcloud 目录下的 /config/config.php 文件,添加如下配置(以下配置为当 Redis 和 Nextcloud 运行在同一个服务器时使用)

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => [
     'host'     => 'localhost',
     'port'     => 6379,
     'dbindex'  => 0,
     'password' => '',
     'timeout'  => 1.5,
],

2.使用 Redis 作为文件锁(强烈建议)

  Nextcloud 的文件锁是为了防止出现数据损坏(比如多用户编辑同一个文件时,同时进行保存),详见管理员手册-Transactional file locking。默认情况下是使用的基于数据库的文件锁,但是这会对数据库造成很大的负担(并出现错误),典型例子就是在配置较低的服务器删除大量文件时出现错误然后删除失败的情况。官方针对这种情况给出的建议是使用Redis作为文件锁,配置方法为在 Nextcloud 目录下的 /config/config.php 中添加文件锁配置(在第一条的基础上添加了文件锁配置)

'memcache.local' => '\OC\Memcache\APCu',
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => [
     'host'     => 'localhost',
     'port'     => 6379,
     'dbindex'  => 0,
     'password' => '',
     'timeout'  => 1.5,
],

  如果只是一个人使用,而且不想用文件锁功能,则可以使用如下配置关掉文件锁(不建议,因为关掉文件锁后在设置中会一直有文件锁关闭的警告,强迫症是受不了的)

'filelocking.enabled' => false,

3.定时任务

  在设置中有一个定时任务选项,官方推荐的方法是使用 cron,详见管理员手册-Background jobs。使用 cron 的配置方法如下

  打开命令行终端执行(www-data 根据自身情况替换为网站文件归属用户如 www)

crontab -e -u www-data

  按 i 进入编辑模式,添加下列代码,即每5分钟执行一次任务

*/5 * * * * php -f /服务器上的网站文件路径/cron.php

  然后按键盘上的 ESC(无提示),输入

:wq

  按回车键确认保存更改并退出。