网站首页 文章专栏 nextcloud性能调优
将定时任务从ajax换到cron
输入以下命令在宿主机上增加cron任务:
crontab -u www-data -e
然后在出现的编辑框中复制粘贴下列命令
*/15 * * * * docker exec --user www-data nextcloud_nextcloud_1 php cron.php
列出cron任务:
crontab -u www-data -l
你可以直接在宿主机运行后面的命令,
docker exec --user www-data nextcloud_nextcloud_1 php /var/www/html/cron.php
还可以查看cron执行记录:
tail -f /var/log/cron.log
参考:
给出了几点建议
默认的nextcloud是Apache web, 我们将其换为nginx,通过搭配nextcloud-fpm和nginx两个docker完成。
实测用nginx可以解决页面卡死的问题。
参考: nginx rewrite
查看是否是gzip传输 - 方法一:浏览器调试界面 - 方法二:curl
curl localhost/css/icons/icons-vars.css -I -H "Accept-Encoding: gzip, deflate"
webdav的PROPFIND方法不会开启gzip
实测开启gzip传输后页面的加载速度很快,打开页面的感觉也打开大公司高度优化过的页面相同。
gzip module doesn't handle all certain HTTP verbs/statuses
参考: Nginx配置HTTP2.0
打开/www/wwwroot/你的nextcloud目录/config/config.php
,在其尾部添加以下代码
'memcache.local' => '\OC\Memcache\APCu', 'memcache.distributed' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, )
第1行为指定本地缓存为APCu,第2、3行为指定分布式缓存为redis
本优化过程中使用了多个docker,每次启动其ip地址都会变化。所以采用别名的方式来让docker自动确定其ip地址。
我们已经指定了别名,那么在conf文件中不要写ip地址,直接写别名就可以
在docker-compose.yaml中指定php-fpm别名:
nextcloud: image: nextcloud:16.0-fpm links: - mysql
比如在nginx.conf中的一行:
fastcgi_pass nextcloud:9000;
另外,nextcloud会自动修改config.php中mysql服务器的地址,只要mysql docker container的别名是mysql