系统配置
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配置文件请大家结合实际给一个优化方案 最好有设定的实际参数值
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配置文件请大家结合实际给一个优化方案 最好有设定的实际参数值
参考:
http://blog.csdn.net/mr_mablevi/archive/2010/05/13/5587878.aspx
现在用MySql-Bench测试 感觉效果不是很好 不过那个结果也没个参考范围 不好分析
告诉我下,你的并发量是多少,mysql的myisam存储引擎的参数设置跟并发有很大的关系,因为这涉及到内存参数的调整值。
-----------------------------------------
并发量最大应该不会超过1500 一般应该在400到800之间 我现在估计的
我把my.cnf里增加了
max_connections = 2048系统内核的连接数相关
net.ipv4.ip_conntrack_max = 65536
根据通用的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个
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。你自己可以算算,如何分配你的内层,我的数据库跟以及应用跟你的类似。
---------------
先谢谢你给的配置 因为用户同时在线的数量5k到1W 就是根据这个估计的 实际上可能没有那么多 因为用户只是在登录和登出的时候才会查询和写入数据库 根据以往的经验 用户登入和登出非常频繁 当时选机器的时候我选的也是双CPU+16G内存 可是上司减半。我先按你说的调整一下参数 试试
你应该报8核双cpu+32G内存,这也才是中端的pc机服务器,便宜的很啊,几万块钱而已。
这些buffer 怎么配置的这么大...
如果正式上线一台不行的话 就2台一起上 看看效果
join_buffer_size:2M
read_buffer_size:2M
read_rnd_buffer_size:4M
[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
就比如join_buffer_size 来讲,你都没什么连表查询的话,这个就不需要配置2M;注意的就是不要忘记是每个
Thread 都会创建自己独立的Buffer,而不是整个系统共享的Buffer,不要因为设置过大而造成系统内存
不足。清楚这些,按照需要自己配置就OK了.
看具体业务逻辑了,如果经常有join表操作的话,那些只举需要设置大一些。
但我还是负责地建议你重装~~1 装64位系统。
2 用innodb,Innodb Buffer Pool=5---6G即可。
3 最好用mysql5.5
再精调下其他参数,能抗300-600个连接。