ホームページ データベース 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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CUDA の汎用行列乗算: 入門から習熟まで! CUDA の汎用行列乗算: 入門から習熟まで! Mar 25, 2024 pm 12:30 PM

General Matrix Multiplication (GEMM) は、多くのアプリケーションやアルゴリズムの重要な部分であり、コンピューター ハードウェアのパフォーマンスを評価するための重要な指標の 1 つでもあります。 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の40万台目の新車のロールオフ式典に、ファーウェイの常務取締役、ターミナルBG会長、スマートカーソリューション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方言はとても使いやすい 常に新しい! Huawei Mate60シリーズがHarmonyOS 4.2にアップグレード:AIクラウドの強化、Xiaoyi方言はとても使いやすい Jun 02, 2024 pm 02:58 PM

4月11日、ファーウェイはHarmonyOS 4.2 100台のアップグレード計画を初めて正式に発表し、今回は携帯電話、タブレット、時計、ヘッドフォン、スマートスクリーンなどのデバイスを含む180台以上のデバイスがアップグレードに参加する予定だ。先月、HarmonyOS4.2 100台アップグレード計画の着実な進捗に伴い、Huawei Pocket2、Huawei MateX5シリーズ、nova12シリーズ、Huawei Puraシリーズなどの多くの人気モデルもアップグレードと適応を開始しました。 HarmonyOS によってもたらされる共通の、そして多くの場合新しい体験を楽しむことができる Huawei モデルのユーザーが増えることになります。ユーザーのフィードバックから判断すると、HarmonyOS4.2にアップグレードした後、Huawei Mate60シリーズモデルのエクスペリエンスがあらゆる面で向上しました。特にファーウェイM

コンピュータのオペレーティング システムとは何ですか? コンピュータのオペレーティング システムとは何ですか? Jan 12, 2024 pm 03:12 PM

コンピュータ オペレーティング システムは、コンピュータ ハードウェアとソフトウェア プログラムを管理するために使用されるシステムです。また、すべてのソフトウェア システムに基づいて開発されたオペレーティング システム プログラムでもあります。オペレーティング システムが異なれば、ユーザーも異なります。では、コンピュータ システムとは何でしょうか?以下では、編集者がコンピューターのオペレーティング システムとは何かについて説明します。いわゆるオペレーティング システムはコンピュータのハードウェアとソフトウェア プログラムを管理するもので、すべてのソフトウェアはオペレーティング システム プログラムに基づいて開発されます。実際、OSには産業用、商業用、個人用など多くの種類があり、幅広い用途に対応しています。以下では、編集者がコンピューターのオペレーティングシステムとは何かについて説明します。 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 は 2 つの一般的なオペレーティング システムで、それぞれオープン ソースの Linux システムと商用 Windows システムを表します。どちらのオペレーティング システムにも、ユーザーがオペレーティング システムと対話するためのコマンド ライン インターフェイスがあります。 Linux システムでは、ユーザーはシェル コマンド ラインを使用しますが、Windows システムでは、cmd コマンド ラインを使用します。 Linux システムのシェル コマンド ラインは、ほぼすべてのシステム管理タスクを完了できる非常に強力なツールです。

Oracleデータベースのシステム日付を変更する方法の詳細な説明 Oracleデータベースのシステム日付を変更する方法の詳細な説明 Mar 09, 2024 am 10:21 AM

Oracle データベースでのシステム日付の変更方法の詳細説明 Oracle データベースでのシステム日付の変更方法は、主に NLS_DATE_FORMAT パラメータの変更と SYSDATE 関数の使用です。この記事では、読者が Oracle データベースのシステム日付を変更する操作をよりよく理解し、習得できるように、これら 2 つの方法とその具体的なコード例を詳しく紹介します。 1. NLS_DATE_FORMAT パラメータメソッドの変更 NLS_DATE_FORMAT は Oracle データです

See all articles