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 无法开机等.所以一直以来,安 ...
随机推荐
- ng2 学习笔记(一)
ng2发布了一段时间,最近才开始着手学习一下,ng2可以说变化海是比较大的,现在写一些学习过程中要注意的点,新手可以参考,大神可以指导: 按照文档来吧: 1.快速开始:没什么可说的,直接上git 克隆 ...
- spring3: AOP 之 通知顺序
如果我们有多个通知想要在同一连接点执行,那执行顺序如何确定呢?Spring AOP使用AspectJ的优先级规则来确定通知执行顺序.总共有两种情况:同一切面中通知执行顺序.不同切面中的通知执行顺序. ...
- C++(十八) — 内存模式、堆和栈
1.内存模式 一个程序执行时,先复制到内存,然后CPU逐句读取指令执行. 每个存储单元存放一个字节(8bit)数据,每个有一个唯一的地址,地址是顺序编码的.比如:一台计算机256MB内存,则有256* ...
- centos 使用yum安装MySQL 5.7
想在centos上安装一个MySQL,使用yum install mysql-server 安装提示仓库没有包,也是醉了. 找了很多博客,发现一个很好用的,推荐给大家. 地址:https://blog ...
- static-静态类型
1.基本概念 好像没什么概念. 2.作用 主要是两个:隐藏和保持值 01.隐藏 当在一个文件中定义了一个static全局变量,则该变量对该文件是可见的,对其他的文件不可见,也就减少了变量冲突的问题. ...
- JSON和list之间的转换
谷歌的Gson.jar: //list转换为json Gson gson = new Gson(); List<Person> persons = new ArrayList<Per ...
- JS 页面加载触发事件 document.ready和onload的区别
document.ready和onload的区别——JavaScript文档加载完成事件页面加载完成有两种事件: 一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件): 二是onlo ...
- How to handle your webdriver exceptions
The most common exceptions and their solutions: NoAlertPresentException Indicates that a user has tr ...
- 基于Photon 的 PUN+ 如何自动实现RPC呼叫的.
基于Photon 的 PUN+ 如何自动实现RPC呼叫的. 简单说函数标记成 RPC 类型的. void Hello() { Debug.Log("Hello"); PhotonV ...
- findContours()的使用崩溃问题
之前用的好好的,不知咱弄得就突然崩溃.然后网上搜了半天. 各种试,不行. 有一种改变代码方式的做法,可行,但是心里用着很是不爽.vector<vector<Point>>con ...