搭建在软路由上面的Nextcloud是由一个PHP-NGINX-Docker和一个MYSQL-Docker组成的,
本来计划配置源站+OSS+CDN的模式准备给网盘提升一下速度,结果SSL证书我都做好了,发现阿里云只支持443端口的CDN源站,我北京联通443端口被封了,当然就没法用CDN了。
网盘刚搭建好的时候响应还比较快,然而随着文件量的增加,近期点击页面中的按钮会卡好几秒,感觉不像是CPU性能瓶颈(Intel(R) Celeron(R) CPU 3855U),直觉就是MySQL数据库反应慢,于是决定先优化一下本地数据库好了。
性能不够,Redis来凑,先开个Redis-Docker
docker run -d \
--security-opt seccomp:unconfined \ #允许容器执行全部的系统的调用
--restart=always \ #一直运行
--name Redis \ #配置友好名称
--network cloud \ #配置网络,与Nextcloud连到同一网段
--ip 172.19.0.250 \ #指定Redis的IP地址
-p 6379:6379 redis
关闭Nextcloud和MySQL的Docker
找到Nextcloud的配置文件,加上Redis配置/www/nextcloud/config/config.php
'memcache.local' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => '192.168.60.1',
'port' => 6379,
),
大功告成,打开Nextcloud,已经非常明显的加载速度提升了。
Ps: 顺便改一下MySQL配置增加性能:
Docker console到MySQL,在my.cnf里加一条
innodb_flush_log_at_trx_commit = 0 #在提交事务时,InnoDB不会立即触发将缓存日志写到磁盘文件的操作,而是每秒触发一次缓存日志回写磁盘操作,并调用操作系统fsync刷新IO缓存(假装是懂了)。
docker console查下MySQL配置
SHOW VARIABLES like '%flush%'