데이터 베이스 MySQL 튜토리얼 MySQL 优化之 Linux系统层面调优_MySQL

MySQL 优化之 Linux系统层面调优_MySQL

May 30, 2016 pm 05:10 PM
체계

MySQL 一般运行于Linux系统中。对于MySQL的调优一般分为Linux操作系统层面的调优和MySQL层面的调优(当然还有架构层面、业务层面、应用程序层面的调优)。操作系统主要是管理和分配硬件资源,所以其实系统层面的调优包括了硬件的调优,也就是调整硬件参数。Linux系统层面的调优一般分为 CPU的调优、内存的调优、磁盘的调优、网络的调优、Linux后台service调优等等。

 

1. CPU 调优

 

1.1 CPU 的节能模式

 

在server环境的CPU一定要关闭节能模式,节能模式不适应于服务器环境。因为他会自动给CPU降频进入休眠模式!一般笔记本电脑,手机为了续航时间,才需要。关闭CPU的节能模式有两种方法:

 

1)在BIOS中进行设置,彻底关闭;

 

2)关闭Linux中的服务 cpuspeed 和 irqbalance;

 

[root@localhost ~]# chkconfig --level 35 cpuspeed off

[root@localhost ~]# chkconfig | grep cpuspeed

cpuspeed        0:off   1:on    2:off   3:off   4:off   5:off   6:off

[root@localhost ~]# chkconfig --level 35 irqbalance off

[root@localhost ~]# chkconfig | grep irqbalance

irqbalance      0:off   1:off   2:off   3:off   4:off   5:off   6:off

 

cpuspeed 就是负责CPU节能的后台服务;而irqbalance在cpuspeed将某个或某几个CPU调节进入休眠模式时,它负责将中断发送到没有休眠的CPU。关闭irqbalance会将所有中断均衡的发送到所有cpu.

 

1.2 关闭CPU的numa

 

numa的会导致mysqld产生swap,严重影响性能。因为numa架构的CPU和内存是bind的,如果CPU自己node中的内存不够,就会导致swap的产生,即使此时其它node中有大量的空闲内存,它也不会去使用。这就是numa的一个缺陷。有多种方法关闭CPU的numa:

 

1)在BISO中进行配置;

 

2)numactl --interleave=all

 

[root@localhost ~]# numactl --interleave=all

 

interleave=all 其实是将NUMA架构的各个node中的内存,又重新虚拟成了一个共享的内存来进行分配,但是和SMP不同的是,因为每两个node之间有 inter-connect ,所以又避免了SMP架构总线争用的缺陷。

 

查看CPU是否被休眠导致降频:

 

[root@localhost ~]# cat /proc/cpuinfo

processor       : 0

vendor_id       : GenuineIntel

cpu family      : 6

model           : 23

model name      : Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz

stepping        : 10

cpu MHz         : 1995.288

 

看上面的 cpu MHz : 1995.288 和 实际是否一致。

 

具体参见:http://www.bitsCN.com/database/201510/445109.html

 

2. 内存的调优

 

内存主要是要防止发生 swap。因为发生swap的话,从内存访问直接下降为硬盘访问,随机访问的速度下降10的6次方倍,也就是10万倍。顺序访问下降10倍左右。

 

2.1 防止发生swap:

 

1)关闭CPU的numa,防止numa导致的swap;

 

2)设置 vm.swappiness=1; 在 /etc/sysctl.conf 中添加:vm.swappiness=1,然后 sysctl -p; 也可以 sysctl vm.swappiness=1临时修改,然后sysctl -p

 

注意:在RHEL/CentOS 6.4及更新的内核中 vm.swappiness = 0 的默认行为被修改了,如果继续设置vm.swappiness = 0,

 

有可能导致系统内存溢出,从而导致MySQL被意外kill掉。所以这里我们设置为 1 而不是传统的 0.

 

3)设置 /proc/$(pidof -s mysqld)/oom_adj为较小的值(-15,-16或者-17)来尽量避免MySQL由于内存不足而被关闭

 

[root@localhost ~]# echo -17 > /proc/$(pidof mysqld)/oom_adj

[root@localhost ~]# cat /proc/$(pidof mysqld)/oom_adj

-17

这个oom_adj中的变量的范围为15到-16之间。越大越容易在内存不足时被kill。-17 则表示该进程不会被kill掉,当内存不足时,会kill其它进程。

 

4)使用 hugepage 可以避免swap out; 但是 huagepage也是有代价的(导致page争用加剧)。

 

2.2 在BIOS 设置内存为最大性能模式;

 

2.3 调节 disk cache 刷新到磁盘的行为

 

因为Linux默认会大量的进行文件cache,也就是将大量内存用于disk cache。这样的话,会影响mysql使用内存。所以我们可以调节disk cache在脏块达到多大的百分比时,进行刷新。vm.dirty_background_ratio=10; 默认值为10,表示disk cache中的脏页数量达到10%时,pdflush内核线程会被调用,异步刷新disk cache; vm.dirty_ratio=20; 表示disk cache中的脏页数量达到20%时,会进行同步的disk cache刷新,从而会阻塞系统中应用进程的IO操作!我们可以调低vm.dirty_background_ratio来降低disk cache对mysql使用内存的影响,但是可能会增加磁盘IO,因为文件cache减少了,增加其他进程的page fault;(vm.dirty_background_ratio / vm.dity_ratio 带有backround表示异步刷新,没有带的是同步刷新。)

 

具体参见:http://www.bitsCN.com/database/201510/445112.html

 

3. 磁盘IO的调优

 

磁盘IO的调优涉及到文件系统的调优和磁盘的调优。

 

3.1 文件系统的调优

 

1)文件系统的选择:在rhel6.4之前ext4性能比xfs好,因为xfs有lock争用的bug。但是6.4开始,xfs的bug被fix了。测试表明xfs性能比ext4好。

 

2)文件挂载选项:文件挂载时启用noatime,nodiratime,可以在 /etc/fstab 中进行修改。

 

具体参见:http://www.bitsCN.com/database/201510/445114.html

 

3.2 磁盘的调优

 

1)IO调度算法:mysql服务器一定不要使用默认的CFQ调度算法。如果是SSD,那么应该使用NOOP调度算法,如果是磁盘,就应该使用Deadline调度算法。

 

修改方法:

 

[root@localhost ~]# cat /sys/block/sda/queue/scheduler

noop anticipatory deadline [cfq]

[root@localhost ~]# echo noop >  /sys/block/sda/queue/scheduler

[root@localhost ~]# cat /sys/block/sda/queue/scheduler

[noop] anticipatory deadline cfq

 

这是临时修改,重启失效。永久修改,需要修改文件 /boot/grub/menu.lst 中的elevator=deadline 或者noop:

 

# vi /boot/grub/menu.lst

kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ elevator=deadline rhgb quiet

 

2)加大内存,可以使mysql缓存更大的内容,减少IO操作。

 

3)磁盘RAID10 或者 换SSD;

 

4)适当的采用Nosql(redis/mongdb/ssdb)等减轻mysql的负担;也可以架构master-slave减轻master的IO压力。

 

5)使用memcache或者reids在mysql前面加一层缓存,减轻磁盘IO;

 

具体参见:http://www.bitsCN.com/database/201510/445288.html

 

4. 网络调优

 

网络调优分为硬件层面和TCP/IP软件层面参数的调优。

 

4.1 网络硬件调优:

 

1)换延迟更小,throught更大的网卡;

 

2)双网卡绑定,进行负载均衡和高可用;

 

4.2 TCP/IP参数调优:

 

1)socket buffer 参数调节:

 

1>/proc/sys/net/ipv4/tcp_mem TCP全局缓存,单位为内存页(4k);

 

对应的内核参数:net.ipv4.tcp_mem ,可以在 /etc/sysctl.conf 中进行修改;

 

2>/proc/sys/net/ipv4/tcp_rmem 接收buffer,单位为字节

 

对应的内核参数:net.ipv4.tcp_rmem, 可以在 /etc/sysctl.conf 中进行修改;

 

3>/proc/sys/net/ipv4/tcp_wmem 接收buffer,单位为字节

 

对应的内核参数:net.ipv4.tcp_wmem, 可以在 /etc/sysctl.conf 中进行修改;

 

4>/proc/sys/net/core/rmem_default 接收buffer默认大小,单位字节

 

对应内核参数:net.core.rmem_default, 可以在 /etc/sysctl.conf 中进行修改;

 

5>/proc/sys/net/core/rmem_max 接收buffer最大大小,单位字节

 

对应内核参数:net.core.rmem_max, 可以在 /etc/sysctl.conf 中进行修改;

 

6>/proc/sys/net/core/wmem_default 发送buffer默认大小,单位字节

 

对应内核参数:net.core.rmem_default, 可以在 /etc/sysctl.conf 中进行修改;

 

7>/proc/sys/net/core/wmem_max 发送buffer最大大小,单位字节

 

对应内核参数:net.core.rmem_max, 可以在 /etc/sysctl.conf 中进行修改;

 

2)offload配置:

 

将tso,checksum等功能交给网卡硬件来完成:

 

ethtool -K eth0 rx on|off

 

ethtool -K eth0 tx on|off

 

ethtool -K eth0 tso on|off

 

3)调大网卡的接收队列和发送队列:

 

1>接收队列:/proc/sys/net/core/netdev_max_backlog 对应内核参数:net.core.netdev_max_backlog

 

2>发送队列:

 

查看大小:ifconfig eth0 | grep txqueue

 

修改大小:ifconfig eth0 txqueuelen 20000

 

4)调大 SYN 半连接 tcp_max_syn_backlog 数量:

 

sysctl -w net.ipv4.tcp_max_syn_backlog=4096

 

也可以在/etc/sysctl.conf文件中配置。

 

5)net.core.somaxconn :

 

该参数为完成3次握手,已经建立了连接,等待被accept然后进行处理的数量。默认为128,我们可以调整到 65535,甚至更大。也就是尅有容纳更多的等待处理的连接。

 

MTU 大小 调优:

 

如果TCP连接的两端的网卡和网络接口层都支持大的 MTU,那么我们就可以配置网络,使用更大的mtu大小,也不会导致被 切割重新组装发送。

 

配置命令:ifconfig eth0 mtu 9000 up

 

6)TCP连接的 CLOSE_WAIT 和 TIME_WAIT

 

如果TCP连接的 CLOSE_WAIT 和 TIME_WAIT 状态过多时,分别需要调优TCP的keepalive相关的参数和TCP的回收相关的参数。

 

TCP/IP的调优极其复杂,具体参见博文:http://www.cnblogs.com/digdeep/p/4869010.html

 

5. Linux 系统中的各种后台daemon的调优

 

Linux系统中存在各种各样的后台daemon,也就是各种service,对于mysql服务器来说很多没有必要的service就可以痛痛关闭掉。

 

mysql的最小化的后台服务,可以只有:crond,sshd,rsyslog,network,sysstat

 

当然如果有需要可以在增加其他服务。

 

使用 chckconfig --level 35 servicename off; 可以进行关闭。35表示在runlevel的level =3 和 level =5级别进行关闭。

 

6. 总结:

 

Linux系统和硬件的调优,除了一些通用的调优之外。其它比如TCP/IP的调优,我们首先是要使用相关的各种命令查清楚瓶颈在哪里,然后才好对症下药。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

CUDA의 보편적인 행렬 곱셈: 입문부터 숙련까지! CUDA의 보편적인 행렬 곱셈: 입문부터 숙련까지! Mar 25, 2024 pm 12:30 PM

GEMM(일반 행렬 곱셈)은 많은 응용 프로그램과 알고리즘의 중요한 부분이며 컴퓨터 하드웨어 성능을 평가하는 중요한 지표 중 하나이기도 합니다. GEMM 구현에 대한 심층적인 연구와 최적화는 고성능 컴퓨팅과 소프트웨어와 하드웨어 시스템 간의 관계를 더 잘 이해하는 데 도움이 될 수 있습니다. 컴퓨터 과학에서 GEMM의 효과적인 최적화는 컴퓨팅 속도를 높이고 리소스를 절약할 수 있으며, 이는 컴퓨터 시스템의 전반적인 성능을 향상시키는 데 중요합니다. GEMM의 작동 원리와 최적화 방법에 대한 심층적인 이해는 현대 컴퓨팅 하드웨어의 잠재력을 더 잘 활용하고 다양하고 복잡한 컴퓨팅 작업에 대한 보다 효율적인 솔루션을 제공하는 데 도움이 될 것입니다. GEMM의 성능을 최적화하여

화웨이의 Qiankun ADS3.0 지능형 운전 시스템은 8월에 출시될 예정이며 처음으로 Xiangjie S9에 출시될 예정입니다. 화웨이의 Qiankun ADS3.0 지능형 운전 시스템은 8월에 출시될 예정이며 처음으로 Xiangjie S9에 출시될 예정입니다. Jul 30, 2024 pm 02:17 PM

7월 29일, AITO Wenjie의 400,000번째 신차 출시 행사에 Huawei 전무이사이자 Terminal BG 회장이자 Smart Car Solutions BU 회장인 Yu Chengdong이 참석하여 연설을 했으며 Wenjie 시리즈 모델이 출시될 것이라고 발표했습니다. 올해 출시 예정 지난 8월 Huawei Qiankun ADS 3.0 버전이 출시되었으며, 8월부터 9월까지 순차적으로 업그레이드를 추진할 계획입니다. 8월 6일 출시되는 Xiangjie S9에는 화웨이의 ADS3.0 지능형 운전 시스템이 최초로 탑재됩니다. LiDAR의 도움으로 Huawei Qiankun ADS3.0 버전은 지능형 주행 기능을 크게 향상시키고, 엔드투엔드 통합 기능을 갖추고, GOD(일반 장애물 식별)/PDP(예측)의 새로운 엔드투엔드 아키텍처를 채택합니다. 의사결정 및 제어), 주차공간부터 주차공간까지 스마트 드라이빙의 NCA 기능 제공, CAS3.0 업그레이드

Apple 16 시스템의 어떤 버전이 가장 좋나요? Apple 16 시스템의 어떤 버전이 가장 좋나요? Mar 08, 2024 pm 05:16 PM

Apple 16 시스템의 최고 버전은 iOS16.1.4입니다. iOS16 시스템의 최고 버전은 사람마다 다를 수 있으며 일상적인 사용 경험의 추가 및 개선도 많은 사용자로부터 호평을 받았습니다. Apple 16 시스템의 가장 좋은 버전은 무엇입니까? 답변: iOS16.1.4 iOS 16 시스템의 가장 좋은 버전은 사람마다 다를 수 있습니다. 공개 정보에 따르면 2022년에 출시된 iOS16은 매우 안정적이고 성능이 뛰어난 버전으로 평가되며, 사용자들은 전반적인 경험에 상당히 만족하고 있습니다. 또한, iOS16에서는 새로운 기능 추가와 일상 사용 경험 개선도 많은 사용자들에게 호평을 받고 있습니다. 특히 업데이트된 배터리 수명, 신호 성능 및 발열 제어 측면에서 사용자 피드백은 비교적 긍정적이었습니다. 그러나 iPhone14를 고려하면

항상 새로운! Huawei Mate60 시리즈가 HarmonyOS 4.2로 업그레이드: AI 클라우드 향상, Xiaoyi Dialect는 사용하기 매우 쉽습니다. 항상 새로운! Huawei Mate60 시리즈가 HarmonyOS 4.2로 업그레이드: AI 클라우드 향상, Xiaoyi Dialect는 사용하기 매우 쉽습니다. Jun 02, 2024 pm 02:58 PM

4월 11일, 화웨이는 처음으로 HarmonyOS 4.2 100개 시스템 업그레이드 계획을 공식 발표했습니다. 이번에는 휴대폰, 태블릿, 시계, 헤드폰, 스마트 스크린 및 기타 장치를 포함하여 180개 이상의 장치가 업그레이드에 참여할 것입니다. 지난달 HarmonyOS4.2 100대 업그레이드 계획이 꾸준히 진행됨에 따라 Huawei Pocket2, Huawei MateX5 시리즈, nova12 시리즈, Huawei Pura 시리즈 등을 포함한 많은 인기 모델도 업그레이드 및 적응을 시작했습니다. 더 많은 Huawei 모델 사용자가 HarmonyOS가 제공하는 일반적이고 종종 새로운 경험을 즐길 수 있을 것입니다. 사용자 피드백에 따르면 HarmonyOS4.2를 업그레이드한 후 Huawei Mate60 시리즈 모델의 경험이 모든 측면에서 개선되었습니다. 특히 화웨이 M

컴퓨터 운영 체제는 무엇입니까? 컴퓨터 운영 체제는 무엇입니까? Jan 12, 2024 pm 03:12 PM

컴퓨터 운영체제는 컴퓨터 하드웨어와 소프트웨어 프로그램을 관리하는 데 사용되는 시스템이기도 하며, 모든 소프트웨어 시스템을 기반으로 개발된 운영체제 프로그램이기도 합니다. 아래에서 편집자는 컴퓨터 운영 체제가 무엇인지 공유합니다. 소위 운영 체제는 컴퓨터 하드웨어 및 소프트웨어 프로그램을 관리하는 것입니다. 모든 소프트웨어는 운영 체제 프로그램을 기반으로 개발됩니다. 실제로 산업용, 상업용, 개인용 등 광범위한 응용 프로그램을 포괄하는 다양한 유형의 운영 체제가 있습니다. 아래에서는 편집자가 컴퓨터 운영 체제가 무엇인지 설명합니다. Windows 시스템이란 어떤 컴퓨터 운영 체제입니까? Windows 시스템은 미국 Microsoft Corporation에서 개발한 운영 체제입니다. 무엇보다

win10 시스템에서 0xc0000428 오류를 해결하는 방법 win10 시스템에서 0xc0000428 오류를 해결하는 방법 Dec 27, 2023 pm 04:41 PM

컴퓨터에 win10 운영 체제를 설치한 후 일부 친구는 컴퓨터를 사용할 때 시스템 블루 스크린과 오류 코드 0xc0000428을 경험할 수 있습니다. 이런 종류의 문제는 걱정하지 마세요. 편집자는 시스템의 문제를 먼저 해결하여 하드웨어로 인한 것인지 소프트웨어로 인한 것인지 확인한 다음 목표한 방식으로 문제를 해결할 수 있다고 생각합니다. 자세한 내용은 편집기에서 수행한 작업을 살펴보겠습니다. win10 시스템에서 0xc0000428 문제를 해결하는 방법 1. 계속해서 다시 시작한 다음 강제 종료를 3번 수행하여 win10 시스템이 자동으로 고급 시작 옵션에 들어가도록 합니다. 2. win10 시스템 고급 시작 옵션 인터페이스에서 시작 설정의 문제 해결-고급 옵션-시작 설정을 순서대로 엽니다.

Linux 및 Windows 시스템에서 cmd 명령의 차이점과 유사점 Linux 및 Windows 시스템에서 cmd 명령의 차이점과 유사점 Mar 15, 2024 am 08:12 AM

Linux와 Windows는 각각 오픈 소스 Linux 시스템과 상용 Windows 시스템을 대표하는 두 가지 일반적인 운영 체제입니다. 두 운영 체제 모두 사용자가 운영 체제와 상호 작용할 수 있는 명령줄 인터페이스가 있습니다. Linux 시스템에서는 사용자가 Shell 명령줄을 사용하고 Windows 시스템에서는 cmd 명령줄을 사용합니다. Linux 시스템의 Shell 명령줄은 거의 모든 시스템 관리 작업을 완료할 수 있는 매우 강력한 도구입니다.

Oracle 데이터베이스에서 시스템 날짜를 수정하는 방법에 대한 자세한 설명 Oracle 데이터베이스에서 시스템 날짜를 수정하는 방법에 대한 자세한 설명 Mar 09, 2024 am 10:21 AM

Oracle 데이터베이스에서 시스템 날짜를 수정하는 방법에 대한 자세한 설명 Oracle 데이터베이스에서 시스템 날짜를 수정하는 방법은 주로 NLS_DATE_FORMAT 매개 변수를 수정하고 SYSDATE 함수를 사용하는 것입니다. 이 기사에서는 독자가 Oracle 데이터베이스에서 시스템 날짜를 수정하는 작업을 더 잘 이해하고 숙달할 수 있도록 이 두 가지 방법과 구체적인 코드 예제를 자세히 소개합니다. 1. NLS_DATE_FORMAT 매개변수 메소드 수정 NLS_DATE_FORMAT은 Oracle 데이터입니다.

See all articles