博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
服务器性能指标与内核参数优化
阅读量:5325 次
发布时间:2019-06-14

本文共 3414 字,大约阅读时间需要 11 分钟。

MySQL相关的优化

一、CPU资源和可用内存大小

1、如何选用CPU     问?我们需要更快的cpu还是更多的cpu     答:我们想要更快的cpu还要更多的cpu颗数(痴心做梦)         解答:首先我们需要判断我们的服务是否为cpu密集型的业务,如果是,则应该选择更快的cpu,以加快SQL语句的查询速度。其次我们应该考虑我们系统的并发量的问题,单个cpu无法利用多核心的资源,我们要提高系统的吞吐量和并发量应该选择更多的cpu,再有我们应该考虑我们本身业务需要使用过的MySQL的版本,对于5.0以前的MySQL,并不能充分的使用多核心cpu。建议使用5.6+的版本         注意:如果服务器的性能很好,别手残的选择安装32位的操作系统,因为pow(2, 32)=4G,也是我们艹内存,只能最多艹4G,多余的4G的内存无法使用    2、内存     问?内存应该怎么优化     答:内存越多越好,但是对性能影响有限并不能无限的增加性能     解答:服务器的内存,我们应该组成购买升级,并且每个通道的内存应选择相同品牌、颗粒、频率、电压、校验技术和型号,另外我们需要根据数据库的大小来选择内存,另外应该配置更多内存以避免内存不足造成性能下降(选用128G或者256G以上的内存)!

二、磁盘的配置和选择

可用选择: 1、使用传统机器硬盘    优点:存储空间大、价格低廉    缺点:读写速度较慢,但是选择使用的较多    需要考虑的点:存储容量、传统速度、访问时间、主轴的转速(7200转或更高的转速)、物理磁盘的尺寸 2、使用RAID增强传统机器磁盘的性能     简介:RAID是磁盘冗余队列的简称(Readundant Arrays of Independent Disks),简单来说就是RAID的作用就是可以把多个容量小的磁盘组成一组容量更大的磁盘,并提供数据完整性的技术      raid0:具有读写加速的技术,磁盘使用率是3块磁盘的和,但是磁盘的损坏率是一块盘的n倍(N块磁盘),适用于MySQL的salve端      raid1:具有冗余的功能,磁盘利用率为n/2,因为需要把另外的一半磁盘作为备份盘使用,适用对数据要求安全速度无要求的业务,例如日志或者传统的监控系统      raid5:通过分布式奇偶校验块的把数据分散到多个磁盘上,这样如果任何一块盘数据失效,都可以从奇偶盘中重建,如果两块盘挂掉了,整个磁盘阵列就GG了!比较中庸的解决方案,需要损失一块盘的空间作为奇偶校验盘~      raid10:它是对磁盘先做raid1以后再对两组raid1磁盘做raid0,所以对读写都有良好的性能,相对于raid5重建起来更简单,速度也更快!适用于存储的主节点或者MySQL的主节点~         3、使用固态存储SSD和PCIE卡      优点:相比机械磁盘固态磁盘有更好的随机读写性能,相比机械磁盘能更好的支持并发      缺点:更容易的损坏,成本高      使用场景:适用于大量的随机I/O的场景,使用于解决单线程负载的I/O瓶颈              注意:          如果只有一块固态磁盘,我们应该给他放到主服务器还是从服务上?          如果只有一块固态磁盘的话,建议放到从服务器上,以减少主从同步的时间,减少固态的读写

三、CentOS系统参数调优

相关的参数调整: 1、内核相关的参数(/etc/sysctl.conf)    net.coro.somaxconn=65535    net.coro.netdev_max_backlog=65535    net.ipv4.tcp_max_syn_backlog=65535    net.ipv4.tcp_fin_timeout=10    net.ipv4.tcp_tw__reuse=1    net.ipv4.tcp_tw_revycle=1    net.core.wmem_default=87380    net.core.wmem_max=16777216    net.core.rmem_default=87380    net.core.rmem_max=16777216    net.ipv4.tcp_keepalive_time=120    net.ipv4.tcp_keppalive_intvl=30    net.ipv4.tcp_keepalive_probes=3    kernel.shmmax=4294967295    注意:这个值的大小对于64位的Linux系统,可取的最大值为物理内存值-1byte,建议值为大于物理内存的一半,一般取值大于Innodb缓存池的大小即可,可以取物理内存-1bytes             2、增加资源限制(/etc/security/limit.conf)     * soft nofile 65535     * hard nofile 65535     解释:       *       表示对所有用户有效       soft    指的是当前系统生效的设置       hard    表明系统中所能设定的最大值       nofile  表示所限的资源是打开文件的最大数目       65536   就是限制的数量           3、磁盘调度策略(/sys/block/devname/queue/scheduler)        cat /sys/block/sda/queue/scheduler        noop anticipatory deadline [cfq]          noop(电梯式调度策略):    NOOP实现了一个FIFO队列,它像是电梯的工作方法一样对I/O请求进行组织,当有一个新的请求过来时,它将请求合并到最近的请求以后,以此来保证请求同一个介质,NOOP倾向于饿死读而利于写,因此NOOP对于闪存设备、RAM及嵌入式系统是最好的选择。  deadline(截止时间调度策略)    Deadline确保了在一个截止时间内服务请求,这个截止时间是可调整的,而默认读期限短与写期限。这样就能防止写操作因为不能被读取而饿死的现象,Deadline对数据库类是最好的选择   anticipatory(预料I/O调度策略)    本质上与Deadline一样,但是最后一次读操作后,要等待6ms,才能继续进行对其他I/O请求进行调度。它会在每个6ms,才能中插入新的I/O操作,而会将一些小写入流合并为一个大写入流,用写入延迟换取最大的写入吞吐量。AS时而好与写入较多的环境,比如文件系统,AS对数据库表现极差!      更改调度策略的方法:      echo "schedulername" /sys/block/devname/deque/scheudler

四、文件系统对性能的相应

EXT3/4系统的挂载参数(/etc/fstab)   data = writeback | ordered | journal     writeback:非同步的写入,速度最快     ordered:   不记录元数据,但是提供了一致性的保证,在写原元数据之前,先写入数据,使他们保存一致,稍慢与writebak     journal:   日志   noatime, nodiratime (挂载选项的时候可以设置的相关参数,例如不更新访问时间,目录的时间,以提升I/O的性能)       /dev/sda1/ etx4 notime, nodiratime, data=writeback 1  1  (fstab中的优化参数)       可以通过追加重定向的命令把参数传递到fstab中      #] echo "/dev/sda1/ etx4 notime, nodiratime, data=writeback 1  1" >> /etc/fstab

原创作品,转载请注明出处:

转载于:https://www.cnblogs.com/demon89/p/mysql_optimization.html

你可能感兴趣的文章
Ajax对数据的删除与查看
查看>>
201521123100 《Java程序设计》第3周学习总结
查看>>
try catch finally 用法
查看>>
js常用工具
查看>>
从数组中每次取一个不同的数组成员 getRandomItem(arr)
查看>>
搜索:圆排列的计数问题
查看>>
深入理解java虚拟机(十三) Java 即时编译器JIT机制以及编译优化
查看>>
获取日期所属周一至周日时间点
查看>>
二叉查找树
查看>>
HDU 4045 Machine scheduling (第二类斯特林数+DP)
查看>>
杭电1002
查看>>
android开发相关资料整理【2011-10-20】
查看>>
Python基本格式化输出
查看>>
Mysql优化与使用集锦
查看>>
Angular开发实践(八): 使用ng-content进行组件内容投射
查看>>
JavaScript getElementByID() not working
查看>>
uva11988
查看>>
笔试题真题
查看>>
《大话重构》免费送书活动开始啦
查看>>
第1章 数据结构绪论
查看>>