Heim Datenbank MySQL-Tutorial Mysql 高负载排查思路

Mysql 高负载排查思路

Jun 07, 2016 pm 03:40 PM
mysql top 命令 思路 排查 负载 高负载

发现问题 top命令 查看服务器负载,发现 mysql竟然 百分之两百的cpu ,引起Mysql 负载这么高的原因,估计是 索引问题和某些变态SQL语句. 排查思路 1. 确定高负载的类型,top命令看 负载高是CPU还是IO 。 2. mysql 下执行 查看当前的连接数与执行的sql 语句 。 3.

发现问题 
top命令 查看服务器负载,发现 mysql竟然百分之两百的cpu,引起Mysql 负载这么高的原因,估计是索引问题和某些变态SQL语句. 

排查思路 
1. 确定高负载的类型,top命令看负载高是CPU还是IO。 
2. mysql 下执行查看当前的连接数与执行的sql 语句。 
3. 检查慢查询日志,可能是慢查询引起负载高。 
4. 检查硬件问题,是否磁盘故障问题造成的。 
5. 检查监控平台,对比此机器不同时间的负载。 

确定负载类型(top)

<ol>
<li><span><span>top - 10:14:18 up 23 days, 11:01,  1 user, </span><span>load average: 124.17, 55.88, 24.70 </span></span></li>
<li><span>Tasks: 138 total,   1 running, 137 sleeping,   0 stopped,   0 zombie </span></li>
<li><span>Cpu(s):  2.4%us,  1.0%sy,  0.0%ni, 95.2%id,  2.0%wa,  0.1%hi,  0.2%si,  0.0%st </span></li>
<li><span>Mem:   3090528k total,  2965772k used,   124756k free,    93332k buffers </span></li>
<li><span>Swap:  4192956k total,  2425132k used,  1767824k free,   756524k cached </span></li>
<li><span>           </span></li>
<li><span>PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND </span></li>
<li><span>30833 mysql     15   0 6250m 2.5g 4076 S <span>257.1</span> 49.9 529:34.45 mysqld  </span></li>
</ol>
Nach dem Login kopieren


查看当前的连接数与执行的sql 语句

<ol>
<li><span>show processlist; </span></li>
<li><span>Id  User    Host    db  Command Time    State   Info </span></li>
<li><span>192 slave   8.8.8.142:39820 NULL    Binlog Dump 58982   Has sent all binlog to slave; waiting for binlog to be updated  NULL </span></li>
<li><span>194 slave   8.8.8.120:41075 NULL    Binlog Dump 58982   Has sent all binlog to slave; waiting for binlog to be updated  NULL </span></li>
<li><span>424891 biotherm    8.8.8.46:57861  biotherm    Query   493 Sending data    SELECT * FROM xxx_list WHERE <span>tid</span><span> = </span><span>'1112'</span><span>  AND </span><span>del</span><span> = </span><span>0</span><span>  ORDER BY  id </span></span></li>
<li><span>DESC  LIMIT 0, 4 </span></li>
<li><span>424917 biotherm    8.8.8.49:50984  biotherm    Query   488 Sending data    SELECT * FROM xxx_list WHERE <span>tid</span><span> = </span><span>'1112'</span><span>  AND </span><span>del</span><span> = </span><span>0</span><span>  ORDER BY  id </span></span></li>
<li><span>DESC  LIMIT 0, 4 </span></li>
<li><span>.............................................. </span></li>
<li><span>430330 biotherm    8.8.8.42:35982  biotherm    Query   487 Sending data    SELECT * FROM xxx_list WHERE <span>tid</span><span> = </span><span>'1112'</span><span>  AND </span><span>del</span><span> = </span><span>0</span><span>  </span></span></li>
</ol>
Nach dem Login kopieren


记录慢查询 
编辑Mysql 配置文件(my.cnf),在[mysqld]字段添加以下几行:

<ol>
<li><span><span>log_slow_queries</span><span> = /usr/local/mysql/var/slow_queries.log   #慢查询日志路径 </span></span></li>
<li><span><span>long_query_time</span><span> = </span><span>10</span><span>                                       #记录SQL查询超过10s的语句 </span></span></li>
<li><span><span>log-queries-not-using-indexes</span><span> = </span><span>1</span><span>                          #记录没有使用索引的sql </span></span></li>
</ol>
Nach dem Login kopieren


查看慢查询日志

<ol>
<li><span>tail /usr/local/mysql/var/slow_queries.log </span></li>
<li><span># Time: 130305  9:48:13 </span></li>
<li><span># User@Host: biotherm[biotherm] @  [8.8.8.45] </span></li>
<li><span># Query_time: 1294.881407  Lock_time: 0.000179 Rows_sent: 4  Rows_examined: 1318033 </span></li>
<li><span>SET <span>timestamp</span><span>=</span><span>1363916893</span><span>; </span></span></li>
<li><span>SELECT * FROM xxx_list WHERE <span>tid</span><span> = </span><span>'11xx'</span><span>  AND </span><span>del</span><span> = </span><span>0</span><span>  ORDER BY  id DESC  LIMIT 0, 4;  </span></span></li>
</ol>
Nach dem Login kopieren

4个参数 
Query_time: 0 Lock_time: 0 Rows_sent: 1 Rows_examined: 54 
分别意思为:查询时间 锁定时间 查询结果行数 扫描行数,主要看扫描行数多的语句,然后去数据库加上对应的索引,再优化下变态的sql 语句。 

极端情况kill sql进程

<ol>
<li><span>找出占用cpu时间过长的sql,在mysql 下执行如下命令: </span></li>
<li><span>show processlist; </span></li>
<li><span>确定后一条sql处于Query状态,且Time时间过长,锁定它的ID,执行如下命令: </span></li>
<li><span>kill QUERY  269815764;  </span></li>
</ol>
Nach dem Login kopieren

注意:杀死 sql进程,可能导致数据丢失,所以执行前要衡量数据的重要性。 

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

MySQL: Einfache Konzepte für einfaches Lernen MySQL: Einfache Konzepte für einfaches Lernen Apr 10, 2025 am 09:29 AM

MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL: Eine Einführung in die beliebteste Datenbank der Welt MySQL: Eine Einführung in die beliebteste Datenbank der Welt Apr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

So verwenden Sie ein einzelnes Gewinde -Redis So verwenden Sie ein einzelnes Gewinde -Redis Apr 10, 2025 pm 07:12 PM

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

MySQL und SQL: Wesentliche Fähigkeiten für Entwickler MySQL und SQL: Wesentliche Fähigkeiten für Entwickler Apr 10, 2025 am 09:30 AM

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

Mysqls Platz: Datenbanken und Programmierung Mysqls Platz: Datenbanken und Programmierung Apr 13, 2025 am 12:18 AM

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

So erstellen Sie eine SQL -Datenbank So erstellen Sie eine SQL -Datenbank Apr 09, 2025 pm 04:24 PM

Das Erstellen einer SQL -Datenbank umfasst 10 Schritte: Auswählen von DBMs; Installation von DBMs; Erstellen einer Datenbank; Erstellen einer Tabelle; Daten einfügen; Daten abrufen; Daten aktualisieren; Daten löschen; Benutzer verwalten; Sichern der Datenbank.

See all articles