系统配置
CPU:Xeon E5640 2.66GHz 4Core
内存:8G
硬盘:300G 10krpm 6G SAS  x 4   raid1+0
OS:RHEL5.6 32bit跑2个服务
MySql+RadiusMySql查询/插入数据频繁  只用MyIsam引擎
现在用的MySql默认带的my-huge.cnf配置文件请大家结合实际给一个优化方案 最好有设定的实际参数值

解决方案 »

  1.   

    MySql查询/插入数据频繁,有更新的动作吗?优化这些参数值要根据实际情况来的,楼主要先知道这些参数值的意思:
    参考:
    http://blog.csdn.net/mr_mablevi/archive/2010/05/13/5587878.aspx
      

  2.   

    主要是这机器一上线  就不好做更改了
    现在用MySql-Bench测试 感觉效果不是很好 不过那个结果也没个参考范围 不好分析
      

  3.   


    告诉我下,你的并发量是多少,mysql的myisam存储引擎的参数设置跟并发有很大的关系,因为这涉及到内存参数的调整值。
      

  4.   

    告诉我下,你的并发量是多少,mysql的myisam存储引擎的参数设置跟并发有很大的关系,因为这涉及到内存参数的调整值。
    -----------------------------------------
    并发量最大应该不会超过1500  一般应该在400到800之间 我现在估计的
    我把my.cnf里增加了
    max_connections = 2048系统内核的连接数相关
    net.ipv4.ip_conntrack_max = 65536
      

  5.   

    我给你一个我的8G的数据库服务器的配置方案:数据库服务器内存8G,4核双cpu。

    根据通用的mysql内存计算公式: 
    1) 系统使用,假设预留800M;
    2) 线程独享,约4.5GB = 151 * (8M + 8M + 4M + 4M + 512K),组成大概如下:
    sort_buffer_size:8M
    join_buffer_size:8M
    read_buffer_size:4M
    read_rnd_buffer_size:4M
    thread_stack:512KB
    3)MyISAM Key Cache
    key_buffer_size 2.4G
    4)Innodb Buffer Pool:忽略,目前系统没有innodb存储引擎的表。总计算:内存使用量 系统占用+峰值所有线程占用+MyiSAM Key Cache占用:800M+3.6G+2.4G=6.8G,还余有1.2G。经过近段时间以来观察(使用show processlist;),峰值线程数量最大为68,这个峰值持续时间仅仅几秒钟,所以目前峰值占用内存值为4.5G,
    平常通过show peocesslist;查看一般线程数量在30左右。现在192.168.250.20上面数据库的配置,计算下来,在151个线程峰值的时候,占据的内层总共为4.0G,所以为了提高内存利用率以及将来的业务
    扩展需要有必要对mysql参数进行调整。保守的调整参数值如下:key_buffer_size = 2457M
    max_allowed_packet = 20M
    table_open_cache = 1024
    sort_buffer_size = 8M
    read_buffer_size = 8M
    read_rnd_buffer_size = 4M
    read_rnd_buffer_size = 4M
    myisam_sort_buffer_size = 64M
    thread_cache_size = 8
    query_cache_size = 132M
    thread_concurrency = 8
    tmp_table_size = 32M这些参数的设置,192.156.250.20数据库可以支持并发用户线程151个
      

  6.   

    根据通用的mysql内存计算公式:  
    1) 系统使用,假设预留800M;
    2) 线程独享,约4.5GB = 151 * (8M + 8M + 4M + 4M + 512K),组成大概如下:
    sort_buffer_size:8M
    join_buffer_size:8M
    read_buffer_size:4M
    read_rnd_buffer_size:4M
    thread_stack:512KB
    3)MyISAM Key Cache
    key_buffer_size 2.4G
    4)Innodb Buffer Pool:忽略,目前系统没有innodb存储引擎的表。总计算:内存使用量 系统占用+峰值所有线程占用+MyiSAM Key Cache占用:800M+3.6G+2.4G=6.8G,还余有1.2G。你自己可以算算,如何分配你的内层,我的数据库跟以及应用跟你的类似。
      

  7.   

    你800的并发量,内存配置才8G啊,那是有点少了。
    ---------------
    先谢谢你给的配置 因为用户同时在线的数量5k到1W  就是根据这个估计的  实际上可能没有那么多 因为用户只是在登录和登出的时候才会查询和写入数据库  根据以往的经验 用户登入和登出非常频繁 当时选机器的时候我选的也是双CPU+16G内存 可是上司减半。我先按你说的调整一下参数 试试
      

  8.   


    你应该报8核双cpu+32G内存,这也才是中端的pc机服务器,便宜的很啊,几万块钱而已。
      

  9.   


    这些buffer 怎么配置的这么大...
      

  10.   

    现在已经买了 另外还有一台配置一样的 作为hot standby
    如果正式上线一台不行的话 就2台一起上 看看效果
      

  11.   

    我的mysql查询语句都是比较简单的 而且不多  我调整了一下sort_buffer_size:2M
    join_buffer_size:2M
    read_buffer_size:2M
    read_rnd_buffer_size:4M
      

  12.   

    现在的配置
    [client]
    port            = 3306
    socket          = /var/lib/mysql/mysql.sock
    default-character-set = utf8[mysqld]
    default-character-set   = utf8
    collation-server        = utf8_general_ci
    init-connect            = SET NAMES utf8
    port               = 3306
    socket             = /var/lib/mysql/mysql.sock
    skip-locking
    key_buffer         = 384M
    max_allowed_packet = 32M
    table_cache        = 256M
    sort_buffer_size   = 2M
    join_buffer_size   = 2M
    read_buffer_size   = 2M
    read_rnd_buffer_size    = 4M
    myisam_sort_buffer_size = 128M
    thread_cache_size       = 24
    query_cache_size        = 256M
    thread_concurrency      = 8
    max_connections = 1024skip-federatedserver_id                = 1
    log_bin                  = /var/lib/mysql/log/mysql-bin
    log_bin_index            = /var/lib/mysql/log/mysql-bin.index
    relay_log                = /var/lib/mysql/log/mysql-relay-bin
    relay_log_index          = /var/lib/mysql/log/mysql-relay-bin.index
    sync_binlog              = 1
    max_binlog_size          = 200M
    slave-skip-errors        = all
    expire_logs_days         = 30skip-innodb[mysqldump]
    quick
    max_allowed_packet      = 16M
    default-character-set   = utf8[mysql]
    no-auto-rehash
    default-character-set   = utf8[mysqld_safe]
    log-error=/var/log/mysql/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid[isamchk]
    key_buffer = 256M
    sort_buffer_size = 256M
    read_buffer = 2M
    write_buffer = 2M[myisamchk]
    key_buffer = 256M
    sort_buffer_size = 256M
    read_buffer = 2M
    write_buffer = 2M[mysqlhotcopy]
    interactive-timeout
      

  13.   

    楼主最好还是了解这些参数的意义,不然配置小了(影响性能),大了(浪费);
    就比如join_buffer_size 来讲,你都没什么连表查询的话,这个就不需要配置2M;注意的就是不要忘记是每个
    Thread 都会创建自己独立的Buffer,而不是整个系统共享的Buffer,不要因为设置过大而造成系统内存
    不足。清楚这些,按照需要自己配置就OK了.
      

  14.   


    看具体业务逻辑了,如果经常有join表操作的话,那些只举需要设置大一些。
      

  15.   

    wo最讨厌某人不负责任地说"重装系tong"
    但我还是负责地建议你重装~~1 装64位系统。
    2 用innodb,Innodb Buffer Pool=5---6G即可。
    3 最好用mysql5.5
    再精调下其他参数,能抗300-600个连接。