最近在做mariadb 数据库性能调优时发现,配置文件影响着整个数据库的性能的百分之80(这么说不为过),现在就我出现的问题来分析。
在压测mariadb时,tail 日志。发现压测到一半 ,数据库会发生事务回滚,开始不知道什么情况,日志也没有报错,只是给了一个kill的 信号给mysql。后来通过zabbix 发现是内存耗尽,楼主这里是(32G+8Gswap)
经过一番搜寻,还有坑,发现网上给出的计算公式计算的不对。(请躲避)
这里提供一个专门计算 数据库最大内存的 站点。。。。如果你是数学家也可以自己手动计算。
http://www.mysqlcalculator.com/
当然,内存最好不要使用到swap,不然会性能降低。 这里我的max_connections 这个参数是1200 ,现在改成500. 可以理解为一个 为 一个用户连接。因为我测试的100,所以不需要那么大。还有一个参数 read_rad_buffer_size 。这个对随机读的性能提升特别大,当然 影响最大值的也就这2个值。innodb_buffer_pool 这个就最好不要减小了。