最近我在 MySQL 错误日志中发现“内存不足”错误,但主机仍然有足够的物理内存和交换空间,根据free -k
:
total used free shared buffers cached
Mem: 4087156 3842396 244760 0 615840 2031416
-/+ buffers/cache: 1195140 2892016
[错误] 内存不足;检查 mysqld 或其他进程是否使用了所有可用内存;如果没有,您可能必须使用 'ulimit' 以允许 mysqld 使用更多内存,或者您可以添加更多交换空间
我担心有一个导致内存泄漏的 MySQL 错误。
MySQL的内存使用量会动态增长吗?如果是,什么因素或事件会导致 MySQL 分配更多内存?MySQL 内存不足时可能产生的影响以及如何避免?
这是机器配置:OS Linux 2.6.18-128.el5PAE i386
MySQL 服务器版本:5.0.50-enterprise-gpl-log MySQL Enterprise Server (GPL)
/etc/my.cnf:
[mysqld]
port = 3306
socket = /tmp/mysql.sock
datadir = /opt/mysql
skip-locking
key_buffer = 1G
max_allowed_packet = 2M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache = 32
query_cache_size= 32M
thread_concurrency = 16
max_heap_table_size = 1G
auto_increment_increment = 10
auto_increment_offset = 1
server-id = 20
log-warnings
log-slow-queries
skip-innodb
skip-slave-start
core-file