最近我发现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企业服务器(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