和墨DBA

Feed Rss

【背景】

最近在测试SSD+Raid,对Raid10和Raid5做了对比测试,同时也恶补了下磁盘知识,发现以前太过小白。

在DB的生产环境中,原先SAS硬盘一般都是Raid10,性能和安全性都有保证;

Raid5虽然有更大的空间(SAS盘的空间不值钱),但写性能不好,所以不选用。

但到了SSD环境可能就会发生点变化~

【基础知识】

条带化:将每块物理硬盘指定strip size大小的单位,组合成完整的一个条带单位,文件依次存入;保证每块盘的IO请求基本一致

strip size:每块盘上用于组成完整条带的单位大小;strip size=Data node(簇)*Strip

fio压测的参数,对ssd和pcie flash所表现出的性能有一定影响;这里采用了厂商推荐和经验相结合的值。

-filename=Raw device
#文件系统的各类限制对设备性能有干扰
-rw模式采用了 随机读/写/混合  顺序读写
-ioengine=psync/libaio
#mysql5.5后可以使用native aio,但很多操作还是通过fake aio(类似psync)的方式进行
-iodepth=64
#该值设置io的队列长度,过小会使设备性能发挥不完全
res.log记录fio本身的输出值,其中iops,bw带宽;和access latency延迟是最重要的
iostat对设备的即时io做了记录,可以看到性能抖动,推断io-QoS

~~~~~~~~~~~~~分割线~~~~~~~~~~~~~~

    

1.CGroup是基于Kernel的轻量级资源隔离工具;他觉有得天独厚的性能优势,发展势头迅猛。在很多领域可以取代虚拟化技术分割资源。

2.Cgroup默认有诸多资源组,可以限制几乎所有服务器上的资源:cpu men iops,iobandwide,net,device acess等

3.使用起来也非常简单,可以只用到两个服务和两个配置文件完成资源隔离、

service cgconfig restart
#重启cgconfig服务,刷新mount列表,作用所有的资源组(包含下面的规则刷新)
service cgred restart
#刷新资源组隔离作用规则

image

pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)

pgfree/s:每秒被放入空闲队列中的页个数

pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB) pgscank/s:每秒被kswapd扫描的页个数fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major +

1.确认支持huge page

grep -i page /proc/meminfo

11469677

2.修改预分配的hugepages大小

sysctl -w vm.nr

今天在测试服务器上,因data下testDB目录属主为root纠正为mysql时,造成mysql实例重启。

alter.log信息如下

thd: 0x2ab6deb4e270
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0x4a5970f0 thread_stack 0x80000
/u01/mysql/libexec/mysqld(my_print_stacktrace+0x35)[0x884b95]
/u01/mysql/libexec/mysqld(handle_segfault+0x31d)[0x5bcfcd]
/lib

sysbench是mysql下非常有效的压测工具,尤其是percona推出的修改版,可实现多表访问,相当实用。mysql压测参考这篇博文

cd ~/sysbench-version/   &&   ./autogen.sh   &&  cp /usr/bin/libtool ./ 

export CC=cc 

export CXX=c++

export CFLAGS=”-m64 -I /u01/oracle/product/10.2/rdbms/public”  

export CXXFLAGS=”$CFLAGS”

export ORACLE_HOME=/u01/oracle/product/10.2

export LD_LIBRARY_PATH=/u01/oracle/product/10.2/lib

在数据库压测中,对于容灾场景有时需要模拟linux系统资源耗尽的情况,以得出DB在极端场景下的生存情况和恢复速率;本文提供了针对CPU,IO,Mem三大资源的耗尽方法

1.CPU

方法一:shell脚本

#! /bin/sh
# filename killcpu.sh
if [ $# != 1 ] ; then
  echo "USAGE: $0 "
  exit 1;
fi
for i in `seq $1`
do
  echo -ne "
i=0;
while true
do
i=i+1;
done" | /bin/sh &
  pid_array[$i]=$! ;
done

for i in "${pid_array[@]}"; do
  echo 'kill ' $i ';';
done

方法二:sysbench CPU

			标签: