我仔细检查了自己的C api相关代码,并没有自身的内存泄漏,请问高手,客户端的什么操作会导致服务器端mysqld的内存占用稳步上升?mysqld的内存过高后,有什么方法在不停止客户端工作的情况下降低它的内存耗用?客户端运行初期,每个mysqld进程的内存占用大概1MB多,1天后,已经达到9MB!请版主及各高手不吝赐教!!!多谢了!!!如果需要分,500分相送!

解决方案 »

  1.   

    不是锁表,不是linux、也不是mysql产生问题!
    应是mysql与linux搭配产生的一个运行方式。不知你的mysql用的什么版本,什么表类型?我的mysql用的是4.0.12之innodb。linux下,初始每个进程占用60m(内存共512m),11个进程!
    随着进程增加,每个进程占用内存也会动态自动调整!win2000下,我调整他占到了系统的75%的内存(512m*75%=370m)!
    随着程序的运行,占用内存有小许的变化。不管linux,还是win2000.当my.cnf配置占用内存过多,在运行到一定程度,mysql占用内存会急剧下落(对性能有影响,要避免出现)。可以说:mysql占用的内存越多,它的性能体现会越好!关键在配置!!!
      

  2.   

    你的情况产生的原因应是你的mysql配置内存占用过低造成!
      

  3.   

    首先多谢istrue为我提供了思路!我的mysql是3.23.44版本的目前我正在做mysql性能的测试,现在我的mysql服务器每秒大概接受15次查询(C api发出的query),mysql平均占用CPU 1%不到,内存每个进程14MB不到!我总共用了30个并发连接,所以平摊到每个连接,平均每秒0.5次查询我的目标是500个连接,每个连接每秒10次查询(都是c api发出的查询),不知道mysql服务器会出现怎样的情况(mysql所在服务器为4 CPU,1G内存)
      

  4.   

    另,请教一下,mysql对并发的支持不好在哪里?可以举几个具体的数字说明吗?谢谢啊
      

  5.   

    照你的情况,
    1。强烈建议你升级你的mysql至4.0.12以上。
    2。使用innodb表,他提供行级锁,提供事务。
    3。对于两个以上的sql修改语句,使用事务处理。可以保证你的更改操作完整性。
    4。配置mysql占用内存到750M。具体配置请参考手册。
    5。打开mysql的缓存。可以傅系统查询性能得到大幅度提升。
    6。你的查询较多,还应加大索引缓存。
    7。配置双硬盘,加快硬盘读取速度。每秒5000个简单查询不应是问题,至于有的兄弟说mysql的并发支持不好,那早已是过去的事情了,你根本不需多虑。
      

  6.   

    非常感谢istrue的建议,你已经提示至此,剩下的应该需要我自己努力了!有疑难的时候再请教你!:)关于分值得事情我非常抱歉,因为刚知道csdn有限制给分的机制,我还没到中级用户,无法直接给其它的分数,我不是存心欺骗,真的很抱歉!!!