Linux系统层面标配
1.MySQL中出现存SWAP,主要会是哪些原因?
--物理内存切实不足
--numa导致内存分配不均,出现物理内存未使用完,就出现大量swap的使用
2.MySQ中CPU负载很高,是什么原因?给出查找的步骤及解决思路?
推荐Linux操作系统
主机及操作系统 $ uname -a
Linux MyDB1 2.6.32-504.23.4.el6.x86_64 #1 SMP Tue Jun 9 20:57:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
内核版本 $ cat /proc/version
Linux version 2.6.32-504.23.4.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org) (gcc version
4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) ) #1 SMP Tue Jun 9 20:57:37 UTC 2015
发行版本 $ cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m
设定主机名
vim /etc/sysconfig/network
HOSTNAME=XXX(按照命名规范)/idc_name_035076_mysql_idc.baidu.com
设定时区
vim /etc/sysconfig/clock
ZONE=Asia/Shanghai
UTC=false
ARC=false
rm /etc/localtime
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
设定NTP同步
ntpdate 182.92.12.11
sudo crontab -l
0 * * * * /usr/sbin/ntpdate 192.168.50.21; hwclock -w 1>/dev/null 2>&1
30 23 * * * /usr/sbin/ntpdate 192.168.50.22; hwclock -w 1>/dev/null 2>&1
关闭 SELinux
# sestatus
# setenforce 0
# getenforce
删除操作系统多余组
删除操作系统多余账户
清理不需要的服务
设置口令有效期
vim /etc/login.defs文件,修改如下行
将PASS_MAX_DAYS值设置为90(天)
PASS_MAX_DAYS 99999
设置密码复杂度
vim /etc/pam.d/login
增加如下内容
password required pam_cracklib.so difok=5 dcredit=-1 retry=1
新密码与旧密码必须有5个不同字符
必须有一个数字
一次失败后passwd程序返回错误信息
设置缺省密码长度限制
vim /etc/login.defs文件,修改如下行
? vim /etc/login.defs
? 把下面这行
? PASS_MIN_LEN 5 改为
? PASS_MIN_LEN 8
SSH安全配置
vim /etc/ssh/sshd_config
Procotol 2(强制使用协议)
PermitRootLogin no(不允许root远程登录)
给用户sudo权限
[root@mysql1 ~]# chmod u+w /etc/sudoers #添加文件的写权限
[root@mysql1 ~]# vim /etc/sudoers
"root ALL=(ALL) ALL"在起下面添加"mysql ALL=(ALL) ALL
[root@mysql1 ~]# chmod u-w /etc/sudoers #撤销文件的写权限
设置历史命令记录增加时间戳
vim /etc/profile
在文件中增加如下内容:
HISTTIMEFORMAT="%Y:%M:%D %H-%m-%s"
export=HISTTIMEFORMAT
chmod 600 用户当前目录下.bash_history(修改文件权限)
防止rm误删文件
alias
[root@mysql1 ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
设置系统启动时运行等级
编辑/etc/inittab文件:
id:5:initdefault:改为:id:3:initdefault:
? 注:5为带X-Windows桌面系统的运行级别,3为多用户运行级别。
内核参数优化
# vim /etc/sysctl.conf
fs.file-max=655350
kernel.shmmax
kernel.shmall
vm.swappiness =10
ulimit参数优化
# vim /etc/security/limits.conf
mysql soft nproc 65535
mysql hard nproc 65535
mysql soft nofile 65535
mysql hard nofile 65535
##mysql hard memlock unlimited
##mysql soft memlock unlimited
调整操作系统预读
df -Th
[root@mysql1 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_mysql1-lv_root
ext4 50G 15G 33G 31% /
tmpfs tmpfs 1004M 76K 1004M 1% /dev/shm
/dev/sda1 ext4 485M 55M 405M 12% /boot
/dev/mapper/vg_mysql1-lv_home
ext4 45G 1.2G 42G 3% /home
[root@mysql1 ~]# cat /sys/block/sda/queue/read_ahead_kb
128-->>16
这个参数默认是128,没有准确的答案,针对不同的应用场景有不同的合理值,这个不大适合统一标准化,知道就好
调整CPU亲和性
#该参数Centos 6.x有,默认是0(6.3) 1(6.4+),调整CPU亲和性, 确保每个io都被其发起的
CPU处理
[root@hongquan1 mapper]# more /sys/block/sda/queue/rq_affinity
1
? 设置为1,表示io请求来自于哪一个cpu node,完成就返回这个node,设置为2,具体到是那个
cpu发起,就原路返回,比较好的分散到各个cpu,且减少cpu之间的循环
#rotational、 read_ahead_kb、 rq_affinity参数的调整对SSD硬盘性能几乎没有影响,建议使用默认配置,
没遇到跟该参数有关的问题
--cpu节能模式--关闭
#vi /etc/powersave/cpufreq
CPUFREQ_ENABLED=”no”
重启/etc/init.d/powersave即可
提高调度器请求队列
Fusion-io默认是1024,Shannon-io默认是128
[root@mysql1 ~]# more /sys/block/sda/queue/nr_requests
128
#当有较大的io压力时,能减小系统load和提高IO吞吐量
[root]# vim /sys/block/dfa/queue/nr_requests
4096
我们的生产环境
这个就保持默认就好,没遇到跟该参数有关的问题,SSD下改了不会有很大区别
关闭透明大内存页动态管理
#永久关闭,就将下面的命令写入到/etc/rc.local文件中
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
[root@mysql1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
NUMA使用规则
关闭NUMA,对SSD硬盘性能提高较大
统一关闭NUMA
mysql启动脚本修改为 sudo /usr/bin/numactl --interleave=all
$MYSQL_BASE/bin/mysqld_safe --defaults-file=$MYSQL_CONF/mysql.cnf
Linux网络优化
#ringbuffer设置为最大的4096
? /sbin/ethtool -G eth0 tx 4096
? /sbin/ethtool -G eth1 rx 4096
? #这个功能原本是为了在多队列网卡下做流量hash的。我们过去的网卡驱动因为版本问题没这个功
能,但这台机器的网
? 卡驱动还是芯片问题默认开启了这个功能,但没有设过相应的buffer所以容易出现丢包。 (ethtool
-S eth0 | grep fdir
? 可以看到很多overflow是这个造成的),这个功能对后端没用,应当关闭
? /sbin/ethtool -K eth0 ntuple off
? /sbin/ethtool -K eth1 ntuple off
磁盘调度算法设置
#Flash卡
Fusion厂商使用 noop;Shannon厂商屏蔽了用户不可设置,使用noop
IO调度算法设置为noop ,因为IO调度算法采用Deadline和Noop性能差距不大,Noop调度算法
性能略高于Deadline;
?#SAS盘
echo "deadline" >/sys/block/sdb/queue/scheduler
#SSD推荐noop,其它推荐deadline
禁用设备轮转
2.6.29内核以后,linux就自动判断是SSD还是HDD,通过如下参数可以得知,除非有人为更改,0
是SSD,1是HDD
[root@mysql1 ~]# cat /sys/block/sda/queue/rotational
1
文件系统优化
##xfs在大多数场景下整体IOPS表现还是要比ext4来得更高、更稳定,延迟也更小。
采用XFS文件系统, mount with noatime
#格式化标准命令
mkfs.xfs -f -i attr=2 -l lazy-count=1,sectsize=4096 -b size=4096 -d sectsize=4096 -L data /dev/sda1
#mount标准命令
mount -o rw,noatime,nodiratime,noikeep,nobarrier,allocsize=100M,attr2,largeio,inode64,swalloc
/dev/sda1 /apps
----
1、使用 deadline/noop这两种I/O调度器,千万别用 cfq (它不适合跑DB类服务);
2、使用xfs文件系统,千万别用ext3;ext4勉强可用,但业务量很大的话,则一定要用xfs;
3、文件系统mount参数中增加:noatime, nodiratime, nobarrier几个选项(nobarrier是xfs文件系统特有的);
1、将vm.swappiness设置为5-10左右即可,甚至设置为0(RHEL 7以上则慎重设置为0,除非你允许OOM kill发生),以降低使用SWAP的机会;
2、将vm.dirty_background_ratio设置为5-10,将vm.dirty_ratio设置为它的两倍左右,以确保能持续将脏数据刷新到磁盘,避免瞬间I/O写,产生严重等待(和MySQL中的innodb_max_dirty_pages_pct类似);
3、将net.ipv4.tcp_tw_recycle、net.ipv4.tcp_tw_reuse都设置为1,减少TIME_WAIT,提高TCP效率;
4、至于网传的read_ahead_kb、nr_requests这两个参数,我经过测试后,发现对读写混合为主的OLTP环境影响并不大(应该是对读敏感的场景更有效果),不过没准是我测试方法有问题,可自行斟酌是否调整;
Linux系统层面标配的更多相关文章
- MySQL 优化之 Linux系统层面调优
MySQL 一般运行于Linux系统中.对于MySQL的调优一般分为Linux操作系统层面的调优和MySQL层面的调优(当然还有架构层面.业务层面.应用程序层面的调优).操作系统主要是管理和分配硬件资 ...
- linux系统层面调优
linux系统层面调优和常见的面试题 - 云+社区 - 腾讯云 https://cloud.tencent.com/developer/article/1664287
- Linux 系统内存分析
1. 内存基本介绍 1.计算机基本结构: 电脑之父--冯·诺伊曼提出了计算机的五大部件:输入设备.输出设备.存储器.运算器和控制器 如图: 输入设备:键盘鼠标等 CPU:是计算机的运算核心和控制核心, ...
- 玩转 Linux 系统的方法论
Linus 说“Just for fun”,而我要说“Just for 折腾”.想知道我是怎样折腾 Linux 的,请看下面这个截图: 从这个截图可以看出,我为了“折腾” Linux 系统,在我的电脑 ...
- [转]linux 系统监控、诊断工具之 IO wait
1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...
- 高可用与负载均衡(1)之linux系统的数据链路层负载均衡
preface 在蓝厂就职到时候,每台缓存服务器都能够跑到2G的流量,这么大的流量,有人会问,服务器是不是安装的万兆网卡,no no no,仅仅是3张千兆网卡绑定在一块.万兆网卡的服务器少见,大多数都 ...
- Linux江湖01:玩转Linux系统的方法论 (转载)
http://www.blogjava.net/youxia/archive/2015/01/08/linux001.html 2014年上半年,我是在写RCP系列.然后,由于要准备研究生毕业论文和答 ...
- Linux系统的Cache工作原理和管理机制
Linux系统Cache 管理是 Linux 内核中一个很重要并且较难理解的组成部分.本文详细介绍了 Linux 内核中文件 Cache 管理的各个方面,希望能够帮助到你. 操作系统和文件 Cache ...
- VMware虚拟机安装Linux系统
许多新手连 Windows 的安装都不太熟悉,更别提 Linux 的安装了:即使安装成功了,也有可能破坏现有的 Windows 系统,比如导致硬盘数据丢失.Windows 无法开机等.所以一直以来,安 ...
随机推荐
- python学习笔记(excel+requests)
已经可以对excel简单的操作后 可以开始通过excel写测试用例 读取用例 执行用例 提前写好execl 如图: 下面是代码: #!/usr/bin/env python # -*- coding: ...
- 卸载oracle11g
完全卸载oracle11g步骤:1. 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务.2. 开始->程序->Oracle - OraHome ...
- Linux grep 命令大全
grep: 用于模糊查找,在标准输入或者文件中 格式: grep [选项参数]... PATTERN |FILE ... 选项参数说明: -E, --extended-regexp PATTERN ...
- docker安装脚本
此docker安装脚本为官方提供的,可以从网上下载,此处直接把脚本内容贴上. #!/bin/sh set -e # This script is meant for quick & easy ...
- 图片与路径(Path)的应用
图片的应用:软盘样式的保存按钮,笔记本样式的编辑按钮:只能用图片 路径(Path)的应用:异形轮廓(各种气泡框,普通控件无法描述):异形线条(普通控件无法描述):图片(不建议,因为展现效果不好,比如: ...
- Solr快速入门
1. 什么是Solr Solr是基于lucene的全文检索服务器.不同于lucene工具包,solr是一个web应用,运行在servlet容器,屏蔽了底层细节,并对外提供服务. 点我lucene快速入 ...
- EL标签
1.EL的作用 jsp的核心语法: jsp表达式 <%=%>和 jsp脚本<% %>. 开发jsp的原则: 尽量在jsp页面中少写甚至不写java代码. 使用EL表达式替换掉 ...
- L130
Trump Administration Backs Asian-Americans in Harvard CaseThe United States Justice Department on Th ...
- mysql中delete的表别名使用方法
在 mapper.xml 中的 dynamicWhere 动态查询中使用了表别名,Delete 语句引用了动态查询,如下: <delete id="delete" param ...
- Linux字符界面访问U盘
首先查看U盘所在位置 fdisk -l 只需查看最后分区情况,例如找到U盘的位置为:/dev/sda1(视系统而定) 创建文件夹(用于挂载U盘内容) mkdir /mnt/usb 挂载 mount / ...