我有数据库(仅30mb),这个数据库使用4gb ram!我的网站在线最多10人。我认为这很糟糕cnf.my。
mysql> show variables like '%size%'; +---------------------------------+----------------------+ | Variable_name | Value | +---------------------------------+----------------------+ | binlog_cache_size | 32768 | | bulk_insert_buffer_size | 8388608 | | delayed_queue_size | 1000 | | innodb_additional_mem_pool_size | 1048576 | | innodb_buffer_pool_size | 8388608 | | innodb_log_buffer_size | 1048576 | | innodb_log_file_size | 5242880 | | join_buffer_size | 4194304 | | key_buffer_size | 268435456 | | key_cache_block_size | 1024 | | large_page_size | 0 | | max_binlog_cache_size | 18446744073709547520 | | max_binlog_size | 1073741824 | | max_heap_table_size | 268435456 | | max_join_size | 18446744073709551615 | | max_long_data_size | 1048576 | | max_relay_log_size | 0 | | myisam_data_pointer_size | 6 | | myisam_max_sort_file_size | 9223372036853727232 | | myisam_mmap_size | 18446744073709551615 | | myisam_sort_buffer_size | 8388608 | | preload_buffer_size | 32768 | | profiling_history_size | 15 | | query_alloc_block_size | 8192 | | query_cache_size | 268435456 | | query_prealloc_size | 8192 | | range_alloc_block_size | 4096 | | read_buffer_size | 131072 | | read_rnd_buffer_size | 262144 | | sort_buffer_size | 20971520 | | sql_max_join_size | 18446744073709551615 | | thread_cache_size | 4 | | tmp_table_size | 41943040 | | transaction_alloc_block_size | 8192 | | transaction_prealloc_size | 4096 | +---------------------------------+----------------------+ 35 rows in set (0.00 sec)
和my.cnf:
[mysqld]
local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
long_query_time=1
log-slow-queries=/var/log/mysql/log-slow-queries.log
interactive_timeout=180
wait_timeout=180
max_connections=100
innodb_buffer_pool_size=256M
query_cache_size=256M
key_buffer_size=256M
sort_buffer_size=20M
innodb_flush_log_at_trx_commit=0
innodb_flush_method=O_DIRECT
query_cache_type=1
query_cache_limit=2M
table_cache=1024
join_buffer_size=4M
thread_cache_size=4
tmp_table_size=40M
max_heap_table_size=256MB
user=mysql
symbolic-links=0
#bind-address=127.0.0.1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
在我的vps中,我有5.7 gb ram
如何减少内存使用量?
答案 0 :(得分:0)
我怀疑sort_buffer_size和join_buffer_size是这里过多内存使用的主要原因。首先在配置中注释掉这些内容,以便使用默认值。
这些值会对与工作负载相关的内存使用产生影响。
对您的系统知之甚少,看起来您的key_buffer_size和innodb_buffer_pool_size似乎仍然是所需的两倍(并且一个或另一个可能完全不必要,具体取决于您使用的是哪个存储引擎),而您的query_cache_size是可能是必要的2到16倍。与上面提到的设置不同,这可以改变工作负载对内存的影响,这些设置将减少服务器使用的基准内存量,无论工作负载如何。
下次您的系统内存使用率高于预期时,SET GLOBAL THREAD_CACHE_SIZE = 0;
可能也会感兴趣,然后观察服务器的内存分配是否随着客户端断开连接而重新连接。
答案 1 :(得分:0)
my.cnf正在要求
innodb_buffer_pool_size=256M
但是大小列表表明你的ibps只有8M。 需要找出为什么你没有256M,检查日志。
和
max_heap_table_size=256MB needs to be
max_heap_table_size=40M # from 256MB to correct MB and match tmp_table_size