boxmoe_header_banner_img

欢迎来到YaeMiko小站

加载中

文章导读

NextCloud 使用调优


avatar
Samele 2022-07-31 59

Nextcloud 和 Owncloud 可以说是师出同门。最近折腾了好久,终于能流畅的访问nextcloud。这里记录分享一下优化的方案。

当然第一步,肯定能运行,才能进行访问调优。

通过这几天的折腾。主要集中在两方面:

1、环境问题:(Nginx/Apache的配置、php-fpm/php.ini的配置、redis参数问题、opcache等加速器参数问题)

2、nextcloud本身设置问题。

 


首先:

每台机器的配置设置都不一样,一定要仔细阅读官方文档,根据自己的机器配置,和访问量来设置自己的参数。

官方支持文档:https://docs.nextcloud.com/server/latest/admin_manual/

PHP-FPM Process Calculator:   https://spot13.com/pmcalculator/


1、Nginx的配置问题:

我这里使用的https协议。在访问网页时,白屏时间较长。进入后可以正常使用。且流畅度还可以。这样排除php和mysql的配置问题。查看nginx设置,因为使用的默认推荐设置。

这里的ssl_ciphers非常多:

ssl_certificate /usr/local/nginx/conf/ssl/xxxx.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/xxxx.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers “TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5”;
ssl_session_cache builtin:1000 shared:SSL:10m;

在网上查询了一下加密套件的设置,还要查看cpu和ssl的参数,本人技术小白,所以直接采用了域名方官方推荐配置,这里修改为:

ssl_ciphers “CDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE”;

重启nginx,白屏等待时间有所缓解。

 

这里nginx还有一个需要设置的参数:

client_max_body_size 16G;   //上传文件的大小;
fastcgi_read_timeout 360s;   //fastcgi超时时间
client_body_temp_path /tmp/big_tmp_file;  //临时文件夹

如果设置里没有的话,可以根据自己的需要进行设置;

 


2、php-fpm的配置问题:

这里内容可以百度到,里面涉及php-fpm进程的有这样几个参数:

pm = dynamic   //php-fpm的进程数量为动态调整,还有另外一种是static。这里还是推荐动态,保证在访问量低时释放内存
pm.max_children = 17   //静态方式下开启的php-fpm进程数量
pm.start_servers = 4    //动态方式下的起始php-fpm进程数量
pm.min_spare_servers = 4    //动态方式下的最小php-fpm进程数
pm.max_spare_servers = 12   //动态方式下的最大php-fpm进程数量

这里就可以参考这个网站。去根据自己服务器的配置,设置以上参数

https://spot13.com/pmcalculator/

 

注意:这里的进程数太多会导致内存爆掉,服务器宕机。所以务必要刨除服务器其他服务占用的内存数。理性,保守设置

 


3、php.ini(opcache加速设置)

opcache模块这里直接参考官方文档进行设置即可:

opcache.enable=1

opcache.memory_consumption=128

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=10000

opcache.revalidate_freq=1

opcache.save_comments=1

php的设置也参考官方的设置:

memory_limit = 512M

此处有一项需要注意的设置:

post_max_size = 16G  //这个设置影响到了上传文件的大小。请根据需要设置

 


4、redis参数设置:

redis的加速作用非常明显、非常推荐使用

连接redis的方式有两种:

端口连接,默认127.0.0.1:6379

Unix socket连接

两种连接方式各有利弊,

端口连接方式遵循防火墙设置,安全性较高。但是速度相对较慢

Unix socket 连接速度相对较快,但是在本地创建sock文件。安全性存在问题

根据自己需要选择。

端口模式默认打开,这里就说一下socket模式的参数

unixsocket /tmp/redis.sock  //这里指向socket文件的位置。
unixsocketperm 766  //这里设置socket文件的权限

 

socket 文件的权限有两种解决办法。

第一种是给读取的权限、还有一种需要将把网站服务器的用户和用户组权限添加至redis

 

启动redis之后,可以使用netstat -anp | grep redis 查看到redis 的监听端口

或者在/tmp/文件夹内,找到redis.sock文件

 


5、nextcloud的设置文件:

这里直接使用官方的设置:

‘memcache.local’ => ‘\\OC\\Memcache\\APCu’,     //这里需要添加php的apcu加速模块

‘redis’ =>
array (
‘host’ => ‘/tmp/redis.sock’,                                           //这里使用redis对应的连接方式,如果使用端口连接,地址填写’127.0.0.1’端口填写’6379’或者根据自己设置填写
‘port’ => 0,
),                                                                                           //如果redis设置了密码。也可以在此处填写。

‘memcache.locking’ => ‘\\OC\\Memcache\\Redis’,                //nextcloud使用Redis事物文件锁定
‘memcache.distributed’ => ‘\\OC\\Memcache\\Redis’,         //nextcloud使用Redis分布模式

因为添加了Redis锁定文件,还需要在php.ini 文件中添加以下设置:

redis.session.locking_enabled=1
redis.session.lock_retries=-1
redis.session.lock_wait_time=10000

 


6、crontab的定时任务执行。

官方在介绍文档中,推荐使用crontab执行cron.php文件

详细内容在文档中有介绍:https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html

使用crontab -u 用户 -e       //用户,使用web服务器用户

添加:

*/5 * * * * php -f /var/www/nextcloud/cron.php   //注意:必须将路径替换为/var/www/nextcloud/cron.php当前 Nextcloud 安装的路径。

这里官方还写出了使用apcu配置,需要再加上–define apc.enable_cli=1

组合一下

*/5 * * * * php -f /var/www/nextcloud/cron.php –define apc.enable_cli=1

 


通过这几个模块的修改。nextcloud的访问速度也会有明显的改善。

当然,建议慢慢修改相关配置。出现问题也可及时发现

 



评论(已关闭)

评论已关闭