暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Mysq 服务器优化

原创 南风 2020-11-23
1023

Mysq 服务器优化

如何配置一个进程只跑在单个CPU上?
CPU性能调优方法之一:把进程或线程绑定在单个CPU上,这可以增加进程的CPU缓存速度,提高它的内存I/O性能。方法如下:

启动MySQL,将该进程绑定到CPU1上

taskset -c 1 mysqld_safe --defaults-file=/u01/conf/my3306.cnf &

使用sysbench压测工具查看CPU绑定后效果

drop database test;
create database test;

sysbench /usr/local/share/sysbench/tests/include/oltp_legacy/select.lua
–oltp-table-size=100000 --mysql-table-engine=innodb --db-driver=mysql
–mysql-user=root --mysql-password=root123 --mysql-port=3306
–mysql-host=10.245.231.202 --mysql-db=test
–events=0 --time=60 --oltp-tables-count=20 --report-interval=10 --threads=2 prepare

sysbench /usr/local/share/sysbench/tests/include/oltp_legacy/select.lua
–oltp-table-size=100000 --mysql-table-engine=innodb --db-driver=mysql
–mysql-user=root --mysql-password=root123 --mysql-port=3306
–mysql-host=10.245.231.202 --mysql-db=test
–events=0 --time=60 --oltp-tables-count=20 --report-interval=10 --threads=2 run

基于Linux中可用内存即将耗尽时为了释放更多内存会采取的步骤

释放前

free -m
#------------------------------------------------------------------------------
total used free shared buffers cached
Mem: 7982 5165 2816 0 180 3661
-/+ buffers/cache: 1324 6658
Swap: 16143 19 16124
#------------------------------------------------------------------------------

cat /proc/sys/vm/drop_caches
0

sync
echo 3 > /proc/sys/vm/drop_caches
cat /proc/sys/vm/drop_caches
3

drop_caches 的值可以是 0-3 之间的数字,代表不同的含义:

0:不释放(系统默认值)

1:释放页缓存

2:释放 dentries 和 inodes

3:释放所有缓存

释放后

free -m
#------------------------------------------------------------------------------
total used free shared buffers cached
Mem: 7982 1196 6785 0 2 28
-/+ buffers/cache: 1165 6816
Swap: 16143 19 16124
#------------------------------------------------------------------------------

释放完内存后改回去让系统重新自动分配内存。

echo 0 >/proc/sys/vm/drop_caches

逻辑I/O和物理I/O有什么区别?随机I/O和连续I/O有什么区别?
逻辑I/O和物理I/O区别
逻辑I/O是指指读取内存中的数据
物理I/O是指直接读取物理磁盘中的文件
随机I/O和连续I/O区别
随机I/O需要花费昂贵的磁头旋转和定位来查找
连续IO访问的速度远远快于随机IO
连续I/O一般只需扫描一次数据,缓存连续I/O的用处不大
缓存随机I/O可以节省更多的workload
描述一个网络接口工作超负荷会发生什么,包括对应用程序性能的影响。
ping值过高,丢包严重,应用程序连接访问缓慢

杂记
解决free内存不足和numa架构内存分配不均
保证系统有足够多free内存,这个可以通过设置内存参数
vm.min_free_kbytes= NNNNN 当系统free内存少于这个时,内核会启动回收内存,进程在分配内存时也会启动回收内存
vm.extra_free_kbytes= NNNNN 当系统free内存少于这个时,内核会从pagecache回收内存(用户进程不会回收内存)
在突然大量连接到来之前保留足够free内存
采用交叉内存分配模式启动mysql或其它需要大内存的系统,保持多个节点之间内存分配平衡numactl–interleave all command
优化mysql的%buffer%等参数内存分配,避免过大不合理参数
其他
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel® Xeon® CPU E5-2640 v3 @ 2.60GHz

numactl --hardware

内存带宽计算工具

/ptu40_005_lin_intel64/bin/vtbwrun-c -A

下载地址:

http://www.processorportal.com/Download_Intel_Performance_Tuning_Utility_4_0_Update_5/tree3f-aggregator_news_item–103398-/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论