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系统层面标配的更多相关文章

  1. MySQL 优化之 Linux系统层面调优

    MySQL 一般运行于Linux系统中.对于MySQL的调优一般分为Linux操作系统层面的调优和MySQL层面的调优(当然还有架构层面.业务层面.应用程序层面的调优).操作系统主要是管理和分配硬件资 ...

  2. linux系统层面调优

    linux系统层面调优和常见的面试题 - 云+社区 - 腾讯云 https://cloud.tencent.com/developer/article/1664287

  3. Linux 系统内存分析

    1. 内存基本介绍 1.计算机基本结构: 电脑之父--冯·诺伊曼提出了计算机的五大部件:输入设备.输出设备.存储器.运算器和控制器 如图: 输入设备:键盘鼠标等 CPU:是计算机的运算核心和控制核心, ...

  4. 玩转 Linux 系统的方法论

    Linus 说“Just for fun”,而我要说“Just for 折腾”.想知道我是怎样折腾 Linux 的,请看下面这个截图: 从这个截图可以看出,我为了“折腾” Linux 系统,在我的电脑 ...

  5. [转]linux 系统监控、诊断工具之 IO wait

    1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...

  6. 高可用与负载均衡(1)之linux系统的数据链路层负载均衡

    preface 在蓝厂就职到时候,每台缓存服务器都能够跑到2G的流量,这么大的流量,有人会问,服务器是不是安装的万兆网卡,no no no,仅仅是3张千兆网卡绑定在一块.万兆网卡的服务器少见,大多数都 ...

  7. Linux江湖01:玩转Linux系统的方法论 (转载)

    http://www.blogjava.net/youxia/archive/2015/01/08/linux001.html 2014年上半年,我是在写RCP系列.然后,由于要准备研究生毕业论文和答 ...

  8. Linux系统的Cache工作原理和管理机制

    Linux系统Cache 管理是 Linux 内核中一个很重要并且较难理解的组成部分.本文详细介绍了 Linux 内核中文件 Cache 管理的各个方面,希望能够帮助到你. 操作系统和文件 Cache ...

  9. VMware虚拟机安装Linux系统

    许多新手连 Windows 的安装都不太熟悉,更别提 Linux 的安装了:即使安装成功了,也有可能破坏现有的 Windows 系统,比如导致硬盘数据丢失.Windows 无法开机等.所以一直以来,安 ...

随机推荐

  1. LeetCode第[15]题(Java):3Sum (三数之和为目标值)——Medium

    题目难度:Medium 题目: Given an array S of n integers, are there elements a, b, c in S such that a + b + c  ...

  2. C# 构造函数调用顺序

    了解C#的一个类的加载过程,对于语言机制的理解和写出高效的语言很有帮助,这里简单介绍一下类的实例的构造函数调用过程.C#类的实例的构造过程是,先为实例的数据字段分配内存,并对所有字段按字节置零(0或者 ...

  3. zabbix报警优化

    常见rpc服务介绍 ---远程过程调用协议 常用的框架:阿里巴巴 Dubbo.微博 Motan.阿帕奇 thrift.谷歌 grpc Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架, ...

  4. python扫描proxy并获取可用代理ip列表

    mac或linux下可以work的代码如下: # coding=utf-8 import requests import re from bs4 import BeautifulSoup as bs ...

  5. 【辅助工具】Python实现微信跳一跳

    最近迷上了微信跳一跳小游戏,正好也看到知乎上有大神分享了技术贴,我也参考了好多资料,原理就是通过abd命令截取图片,python计算两个点距离,然后转化按压时间,让电脑来完成游戏.我花了很长时间才把程 ...

  6. 几种常见排序算法的C++描述

    基本的排序算法有如下特点: 1.几种容易的算法都是以O(N2)排序的 2.Shell排序编程简单,其也是以O(N2)排序的,在实践中用的很多 3.复杂的排序算法往往都是按照O(NlogN)尽心排序的 ...

  7. New Concept English three (32)

    26w/m 68 The salvage operation had been a complete failure. The small ship, Elkor, which had been se ...

  8. HTTPS 性能优化 -- 基于协议和配置的优化

    基于协议和配置的优化 1 前言 上文讲到 HTTPS 对用户访问速度的影响. 本文就为大家介绍 HTTPS 在访问速度,计算性能,安全等方面基于协议和配置的优化. 2 HTTPS 访问速度优化 2.1 ...

  9. PostBack IsPostBack

    这涉及到aspx的页面回传机制的基础知识 postback是回传 即页面在首次加载后向服务器提交数据,然后服务器把处理好的数据传递到客户端并显示出来,就叫postback, ispostback只是一 ...

  10. [Scala]Scala学习笔记二 数组

    1. 定长数组 如果你需要一个长度不变的数组,可以使用Scala中的Array. val nums = new Array[Int](10) // 10个整数的数组 所有元素初始化为0 val str ...