zoukankan      html  css  js  c++  java
  • 2019年春阅读笔记9——一些基础优化

    优化思路
    定位问题点吮吸:硬件-->系统-->应用-->数据库-->架构(高可用、读写分离、分库分表)。
    处理方向:明确优化目标、性能和安全的折中、防患未然。
    硬件优化
    主机方面:
    根据数据库类型,主机CPU选择、内存容量选择、磁盘选择:
    1)平衡内存和磁盘资源;
    2)随机的I/O和顺序的I/O;
    3)主机 RAID卡的BBU(Battery Backup Unit)关闭。
    CPU的选择:
    CPU的两个关键因素:核数、主频
    根据不同的业务类型进行选择:
    1)CPU密集型:计算比较多,OLTP - 主频很高的cpu、核数还要多
    2)IO密集型:查询比较,OLAP - 核数要多,主频不一定高的
    内存的选择:
    OLAP类型数据库,需要更多内存,和数据获取量级有关。
    OLTP类型数据一般内存是Cpu核心数量的2倍到4倍,没有最佳实践。
    存储方面:
    1)根据存储数据种类的不同,选择不同的存储设备;
    2)配置合理的RAID级别(raid5、raid10、热备盘);
    3)对与操作系统来讲,不需要太特殊的选择,最好做好冗余(raid1)(ssd、sas、sata)。
    4)raid卡:
    主机raid卡选择:
    实现操作系统磁盘的冗余(raid1);
    平衡内存和磁盘资源;
    随机的I/O和顺序的I/O;
    主机raid卡的BBU(Battery Backup Unit)要关闭。
    网络设备方面:
    使用流量支持更高的网络设备(交换机、路由器、网线、网卡、HBA卡)
    服务器硬件优化
    1)物理状态灯
    2)自带管理设备:远程控制卡(FENCE设备:ipmi ilo idarc)、开关机、硬件监控。
    3)第三方的监控软件、设备(snmp、agent)对物理设施进行监控。
    4)存储设备:自带的监控平台。EMC2(hp收购了)、 日立(hds)、IBM低端OEM hds、高端存储是自己技术,华为存储。
    系统优化
    Cpu:
    基本不需要调整,在硬件选择方面下功夫即可。
    内存:
    基本不需要调整,在硬件选择方面下功夫即可。
    SWAP:
    MySQL尽量避免使用swap。
    阿里云的服务器中默认swap为0。
    IO :
    raid、no lvm、ext4或xfs、ssd、IO调度策略。
    Swap调整(不使用swap分区)
    /proc/sys/vm/swappiness的内容改成0(临时),/etc/sysctl. conf上添加vm.swappiness=0(永久)
    这个参数决定了Linux是倾向于使用swap,还是倾向于释放文件系统cache。在内存紧张的情况下,数值越低越倾向于释放文件系统cache。
    当然,这个参数只能减少使用swap的概率,并不能避免Linux使用swap。
    修改MySQL的配置参数innodb_flush_ method,开启O_DIRECT模式:
    这种情况下,InnoDB的buffer pool会直接绕过文件系统cache来访问磁盘,但是redo log依旧会使用文件系统cache。
    值得注意的是,Redo log是覆写模式的,即使使用了文件系统的cache,也不会占用太多。
    IO调度策略:
    #echo deadline>/sys/block/sda/queue/scheduler 临时修改为deadline
    永久修改
    vi /boot/grub/grub.conf
    更改到如下内容:
    kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ elevator=deadline rhgb quiet
    系统参数调整
    Linux系统内核参数优化:
    vim/etc/sysctl.conf
    net.ipv4.ip_local_port_range = 1024 65535:# 用户端口范围
    net.ipv4.tcp_max_syn_backlog = 4096
    net.ipv4.tcp_fin_timeout = 30
    fs.file-max=65535:# 系统最大文件句柄,控制的是能打开文件最大数量
    用户限制参数(MySQL可以不设置以下配置):
    vim/etc/security/limits.conf
    * soft nproc 65535
    * hard nproc 65535
    * soft nofile 65535
    * hard nofile 65535
    应用优化
    业务应用和数据库应用独立;
    防火墙:iptables、selinux等其他无用服务(关闭):
    chkconfig --level 23456 acpid off
    chkconfig --level 23456 anacron off
    chkconfig --level 23456 autofs off
    chkconfig --level 23456 avahi-daemon off
    chkconfig --level 23456 bluetooth off
    chkconfig --level 23456 cups off
    chkconfig --level 23456 firstboot off
    chkconfig --level 23456 haldaemon off
    chkconfig --level 23456 hplip off
    chkconfig --level 23456 ip6tables off
    chkconfig --level 23456 iptables off
    chkconfig --level 23456 isdn off
    chkconfig --level 23456 pcscd off
    chkconfig --level 23456 sendmail off
    chkconfig --level 23456 yum-updatesd off
    安装图形界面的服务器不要启动图形界面runlevel 3。
    另外,思考将来我们的业务是否真的需要MySQL,还是使用其他种类的数据库。用数据库的最高境界就是不用数据库。

  • 相关阅读:
    阿里巴巴的字体图标库不错
    SQL语句一次INSERT多条记录的方法
    Oracle中改变表的Owner和tablespace
    QQ在线状态的使用
    gtest
    Git
    gRPC安装的小问题
    蓝桥杯试题 基础练习 查找整数
    Product Backlog
    本周工作量统计
  • 原文地址:https://www.cnblogs.com/kangxy/p/11053803.html
Copyright © 2011-2022 走看看