14.各种所需内存计算

1.MySQL 需要多少内存

内存计算:
	key_buffer + (sort_buffer+read_buffer) * max_connections // 且总量不能高于物理内存
	key_buffer = 128M
	sort_buffer_size = 2M
	read_buffer_size = 2M
	max_connections = 150
	128*(2+2)*150
MySQL 的每个连接大概 256KB,不包含临时表,排序等
mysql used mem = key_buffer_size + query_cache_size + tmp_table_size
+ innodb_buffer_pool_size + innodb_additional_mem_pool_size
+ innodb_log_buffer_size
+ max_connections * (
read_buffer_size + read_rnd_buffer_size
+ sort_buffer_size+ join_buffer_size
+ binlog_cache_size + thread_stack
)
在mysql 中输入如下命令,可自动计算自己的当前配置最大的内存消耗
SHOW VARIABLES LIKE ‘innodb_buffer_pool_size’;
SHOW VARIABLES LIKE ‘innodb_additional_mem_pool_size’;
SHOW VARIABLES LIKE ‘innodb_log_buffer_size’;
SHOW VARIABLES LIKE ‘thread_stack’;
SET @kilo_bytes = 1024;
SET @mega_bytes = @kilo_bytes * 1024;
SET @giga_bytes = @mega_bytes * 1024;
SET @innodb_buffer_pool_size = 2 * @giga_bytes;
SET @innodb_additional_mem_pool_size = 16 * @mega_bytes;
SET @innodb_log_buffer_size = 8 * @mega_bytes;
SET @thread_stack = 192 * @kilo_bytes;

SELECT
( @@key_buffer_size + @@query_cache_size + @@tmp_table_size
+ @innodb_buffer_pool_size + @innodb_additional_mem_pool_size
+ @innodb_log_buffer_size
+ @@max_connections * (
@@read_buffer_size + @@read_rnd_buffer_size + @@sort_buffer_size
+ @@join_buffer_size + @@binlog_cache_size + @thread_stack
) ) / @giga_bytes AS MAX_MEMORY_GB;
在mysql 中输入如下命令,可显示各占内存参数大小
SHOW VARIABLES LIKE ‘key_buffer_size’;
SHOW VARIABLES LIKE ‘query_cache_size’;
SHOW VARIABLES LIKE ‘tmp_table_size’;
SHOW VARIABLES LIKE ‘innodb_buffer_pool_size’;
SHOW VARIABLES LIKE ‘innodb_additional_mem_pool_size’;
SHOW VARIABLES LIKE ‘innodb_log_buffer_size’;
SHOW VARIABLES LIKE ‘read_buffer_size’;
SHOW VARIABLES LIKE ‘read_rnd_buffer_size’;
SHOW VARIABLES LIKE ‘sort_buffer_size’;
SHOW VARIABLES LIKE ‘join_buffer_size’;
SHOW VARIABLES LIKE ‘binlog_cache_size’;
SHOW VARIABLES LIKE ‘thread_stack’;


2.innodb_buffer_pool_size 的计算 :

	1.从服务器内存总量开始计算
	2.减去操作系统的内存占用,如果不是专用MySQL服务器,还得减去其他应用所占的内存
	3.减去MySQL自身所需的内存,如为每个查询所分配的缓存
	4.减去足够让操作系统缓存InnoDB日志文件的缓存
	5.减去其他配置的MySQL缓冲和缓存所需要的内存,如MyISAM 的键缓存和查询缓存
	6.结果除以 105%
	7.四舍五入,向下取值


3.PHP-FPM QPS 计算

假设一个请求花费 200 ms
一个进程一秒能处理 (1s / 200ms)= 5 个请求
每台机器的PHP-FPM进程数 N
一台服务器的 qps 为 : N * 5
多台服务器的 qps 为 : m * N * 5

4.innodb_thread_concurrency // 限制一次性可以有多少个线程进入内核,0不限制,  并发值=cpu数量*磁盘数量*2


https://www.cnblogs.com/simplelogic/archive/2012/12/06/2804798.html







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值