美文网首页一个程序猿的奋斗史php开发
数据库性能优化:服务器硬件

数据库性能优化:服务器硬件

作者: 快乐的提千万 | 来源:发表于2019-11-02 09:42 被阅读0次
    1. CPU
    注意事项
    • 64位的CPU一定要在64的系统下。
    • 对于并发比较高的场景,CPU数量比频率重要。
    • 对于CPU密集型场景和复杂SQL,频率更重要。
    2. 内存
    3. 磁盘IO
    选择:
    • 机械硬盘:存储空间大,价格低,但是读写较慢。
      • 选择:容量,速度,访问时间,主轴转速,物理尺寸。
    • 固态硬盘:
      • 随机读写也非常快,适合并发。
    • RAID:磁盘冗余队列,将多个小硬盘组成大硬盘
      • RAID0: 串联,速度和容量N,但是丢失率也N。但是没有冗余。
      • RAID1:镜像,速度和成本*N,但是丢失率/N,类似于主从库。
      • RAID5:分布式奇偶校验,随机读,顺序读都很快,但是一个坏了就都坏了。
      • RAID10:先1再0,成本最高,但是可以提高速度,也降低了丢失率。
    • 网络存储
      • SAN:通过光钎连接到服务器,设备通过块设备访问,服务器可以将其当做硬盘使用。
      • NAS:通过网络连接,基于文件的NFS或SMB协议来访问。
    注意事项
    • 大型活动的时候不要开计划任务,会导致磁盘IO突然暴增。
    • 磁盘的维护比升级更重要。
    4. 网卡带宽
    注意事项
    • 减少从服务器
    • 分级缓存
    • 减少select *
    • 分离业务服务器和数据库服务器网络

    2.服务器系统

    1.参数优化

    网络和内存相关

    /etc/sysctl.conf
    net.core.somaxconn = 65535   //每个端口最大监听队列长度
    net.core.netdev_max_backlog = 65535  //接包速率
    net.ipv4.tcp_max_syn_backlog = 65535 //等待队列长度
    //加快TCP回收
    net.ipv4.tcp_fin_timeout = 10 //等待队列超时设置 
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    //TCP缓冲区相关
    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_keepalive_intvl = 30  //重发时间间隔
    net.ipv4.tcp_keepalive_probes = 3 //重发次数
    //内存设置
    kernel.shmmax = 4294967295 //最重要的参数之一,用于定义单个共享内存段的最大值
    注意:这个参数应该设置的足够大,以便能在一个共享内存内存段下容纳整个Innodb缓冲池的大小。建议值为物理内存的一般,或者物理内存-1byte
    vm.swappiness = 0 //当内存不足时会有影响,linux内存交换区,为0表示除非虚拟内存满了,否则不使用交换区。
    

    文件相关

    /etc/security/limit.conf
    PAM,插入式认证模块,打开文件数的限制。
    * soft/hard nofile 65535
    *表示对多有用户有效。
    soft表示当前值,hard表示最大值。
    nofile 表示打开文件句柄
    63335 表示最大值。
    两句话加到limit文件后面,重启生效。
    

    磁盘相关

    /sys/block/devname/quque/scheduler
    cfq策略 完全公平策略,会插入一些不必要的请求。
    noop电梯式调度策略。倾向于饿死读,利于写。适用于闪存设备,RAM,嵌入式设备。
    deadline 截止时间调度策略。默认读期限小于写期限,防止饿死。对数据库是最好的。
    anticipatory 预料IO调度策略。本质上和deadline一样,但是最后一次读操作后,要等待6秒,才能继续调度。会在每个6秒钟插入一个新的IO操作,而会将一些小的写入流合并成大写入流,用写入延迟换区最大的吞吐量。使用与写入较多的环境。比如文件服务器。
    

    文件系统
    /etc/fstab
    data = writeback | ordered | journal
    noatime,nodiratime
    一般选择writeback

    相关文章

      网友评论

        本文标题:数据库性能优化:服务器硬件

        本文链接:https://www.haomeiwen.com/subject/jmscbctx.html