[原创]解决Mysql 和 PHP的 php-fpm 内存占用非常多的问题

转载请注明出处 http://www.bgegao.com/2019/04/1109.html

PHP 和 MYSQL的默认配置对于物理机来说是没什么问题的,但是对虚拟机就问题大了,有些虚拟机只有512的内存,甚至256的内存,根本跑不动啊,而且这些VPS虚拟机平时很少会有大的并发任务出现,所以说内存完全被浪费掉了. ———这里是MYSQL段 设置成这些值就行,不过并发能力要小一些。

修改 /etc/my.cnf

将里面的几个值改成下面的,特别是max_connections,这个是决定占用内存的关键

performance_schema_max_table_instances = 100
table_definition_cache = 50
table_open_cache = 25
max_connections = 100

———下面是PHP段

这个问题是由于php-fpm采用了缓存机制,意思就是不管用不用内存,先把它给自己留着,但是这样一样对于小内存用户而言就悲剧了,比如只有256M,512M的.

废话不多说,直接开始正确操作姿势

首先打开你的php-fpm.conf 这个文件(用什么工具打开?你随意. 这个文件在哪里? 你自己查找

 

find / -name php-fpm.conf
然后把里面的相应东西改成这样
pm = dynamic 
pm.max_children = 1
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 1

不要问我为什么这样改, 因为我不想说那么多的废话,不想给你讲原理,只想让你知道这样能让小内存用户更幸福,如果你想知道为什么,可以自行Google学习.

 

我的文件位置在这里

/www/server/php/54/etc/php-fpm.conf

最后重启一下

/etc/init.d/php-fpm-54 restart

下面这个是PHP 7.4的原始配置文件备份
[global]
pid = /www/server/php/74/var/run/php-fpm.pid
error_log = /www/server/php/74/var/log/php-fpm.log
log_level = notice

[www]
listen = /tmp/php-cgi-74.sock
listen.backlog = 8192
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.status_path = /phpfpm_74_status
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 20
request_terminate_timeout = 100
request_slowlog_timeout = 30
slowlog = var/log/slow.log

 

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

− 3 = 6