mysql的内存应该如何分配,,我的机器访问量一大 就内存溢出。。

我用的是mysql5.0.51a 不需要编译,直接解压就能用的.机器试8cpu 16GB的内存.数据库用的engine是MyISAM。所以我在my.cnf 里面key_buffer 给了4096M.但是访问量一大就会造成内存溢出。mysql连接不上.我把我的my.cnf贴出来.哪位高手帮我看看 我的配置 那里需要改进.
key_buffer = 4096M
max_allowed_packet = 16M
table_cache = 1024
sort_buffer_size = 32M
read_buffer_size = 32M
read_rnd_buffer_size = 32M
myisam_sort_buffer_size = 256M
thread_cache_size = 32
query_cache_size = 256M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8

Taxonomy upgrade extras:

key_buffer_size 上限就是4G,当然最好不要设这么大; 或者,可以把myisam转成innodb,innod的buffer就没这限制了。你的os是32位还是64位的?

MySQL方案、培训、支持

OS是32位的,不过打了支持大于4gb的内核补丁.这个mysql的内存分配是不是又自己一套算法啊。怎么样合理分配才能使我的mysql性能发挥到最大,又不至于内存溢出呢. 把连接数调小 会不会影响访问呢.还望大侠赐教..

key buffer size 上限4G是硬限制,和os无关。
具体要怎么调只能对线上服务器进行跟踪分析,然后主键修改部分参数,没有固定值。

MySQL方案、培训、支持

那请问大侠,该如何跟踪分析呢?又什么好的工具 或者办法吗?介绍下 不胜感激~~

mysql5.0.51a 这个版本是不有问题我的也出现同样的问题,我的主要是跑discuz论坛有6G的数据,经常出现mysql进程死掉的情况,必需kill掉进程才能重启mysql ,请大侠支招。

如何加入群啊,群号是多少?

尝试把你的sort_buffer_size调整小一些看看。我自己最近的优化经验,这个值太大,然后程序的排序多的话,会经常造成内存不够用。