mysql跨服務器慢,mysql特別慢

本文目錄一覽:

PHP連接遠端mysql很慢,要5-10秒,修改了my.cnf配置文件還是沒用

這個問題我遇到過,一般出現這種情況都是DNS反解析問題,還有SSH連接過慢問題也是。

搞定的方法,就是加入google的DNS:8.8.8.8

windows系統可以配置第備用DNS為8.8.8.8

Linux系統可以配置為nameserver 8.8.8.8

MySQL數據庫服務器逐漸變慢分析與解決方法分享

一、檢查系統的狀態

通過操作系統的一些工具檢查系統的狀態,比如CPU、內存、交換、磁盤的利用率,根據經驗或與系統正常時的狀態相比對,有時系統表面上看起來看空閑,這也可能不是一個正常的狀態,因為cpu可能正等待IO的完成。除此之外,還應觀注那些佔用系統資源(cpu、內存)的進程。

1.使用sar來檢查操作系統是否存在IO問題

#sar-u210—

即每隔2秒檢察一次,共執行20次。

結果示例:

註:在redhat下,%system就是所謂的%wio。

Linux2.4.21-20.ELsmp

(YY075)05/19/2005

10:36:07AMCPU%user%nice%system%idle

10:36:09AMall0.000.000.1399.87

10:36:11AMall0.000.000.00100.00

10:36:13AMall0.250.000.2599.49

10:36:15AMall0.130.000.1399.75

10:36:17AMall0.000.000.00100.00

其中:

%usr指的是用戶進程使用的cpu資源的百分比;

%sys指的是系統資源使用cpu資源的百分比;

%wio指的是等待io完成的百分比,這是值得觀注的一項;

%idle即空閑的百分比。

如果wio列的值很大,如在35%以上,說明系統的IO存在瓶頸,CPU花費了很大的時間去等待I/O的完成。Idle很小說明系統CPU很忙。像以上的示例,可以看到wio平均值為11,說明I/O沒什麼特別的問題,而idle值為零,說明cpu已經滿負荷運行了。

2.使用vmstat監控內存

cpu資源

[root@mysql1

~]#

vmstat

procs

———–memory———-—swap–

—–io—-–system–

—–cpu——

r

b

swpd

free

buff

cache

si

so

bi

bo

in

cs

us

sy

id

wa

st

72

25428

54712672264

14

43

53

59

1

198

vmstat

的輸出那些信息值得關注?

io

bo:

磁盤寫的數據量稍大,如果是大文件的寫,10M以內基本不用擔心,如果是小文件寫2M以內基本正常

CPU問題

下面幾列需要被察看,以確定cpu是否有問題

Processesinthe

run

queue

(procs

r)

Usertime

(cpu

us)

System

time

(cpu

sy)

Idle

time

(cpu

id)

問題情況:

如果processes

in

run

queue

(procs

r)的數量遠大於系統中cpu的數量,將會使系統便慢。

如果這個數量是cpu的4倍的話,說明系統正面臨cpu能力短缺,這將使系統運行速度大幅度降低

如果cpu的idle時間經常為0的話,或者系統佔用時間(cpu

sy)是用戶佔用時間(cpu

us)兩輩的話,系統面臨缺少cpu資源

解決方案

:

解決這些情況,涉及到調整應用程序,使其能更有效的使用cpu,同時增加cpu的能力或數量

②內存問題

主要查看頁導入的數值(swap中的si),如果該值比較大就要考慮內存,大概方法如下:

最簡單的,加大RAM

減少RAM的需求

3.磁盤IO問題

處理方式:做raid10提高性能

4.網絡問題

telnet一下MySQL對外開放的端口,如果不通的話,看看防火牆是否正確設置了。另外,看看MySQL是不是開啟了skip-networking的選項,如果開啟請關閉。

訪問外網的mysql數據庫比較慢是怎麼解決

服務器放在局域網內進行測試時,數據庫的訪問速度還是很快。但當服務器放到外網後,數據庫的訪問速度就變得非常慢。

後來在網上發現解決方法,my.ini裡面添加

[mysqld]

skip-name-resolve

這樣速度就快了!

skip-name-resolve

選項就能禁用DNS解析,連接速度會快很多。不過,這樣的話就不能在MySQL的授權表中使用主機名了而只能用ip格式。

就MySQL本身而言,問題出在在mysql dns反解析

mysqlshow processlist;

| 20681949 | unauthenticated user | 10.10.4.193:52497 | NULL | Connect | | Reading from net | NULL |

| 20681948 | unauthenticated user | 10.10.4.193:52495 | NULL | Connect | | Reading from net | NULL

發現有非常多的 unauthenticated user 嘗試做登入使用 mysql 的情況 ,當這種情況無限制發生時就會造成系統十分緩慢。

查閱mysql官方網站得知,這屬於官方一個系統上的特殊設定,就把他當成mysql的一個bug算了,不管鏈接的的方式是經過 hosts 或是 IP 的模式,他都會對 DNS 做反查。mysqld 會嘗試去反查 IP – dns ,由於反查解析過慢,就會無法應付過量的查詢。

MYSQL跨服務器跨庫關聯表查詢很慢怎麼解決

CSDN官方APP

中國專業的IT社區立即下載

CSDN首頁

博客

學院

下載

GitChat

論壇

APP

問答

商城

VIP

活動

招聘

ITeye

TinyMind

專題

Copyright © 1999-2019,

CSDN.NET, All Rights Reserved

crimeheaven的專欄

登錄

crimeheaven關注 訪問量 6萬+ 原創 22 博主更多文章

轉 mysql跨庫操作速度慢的解決方案

crimeheaven閱讀數:24752014-03-14

遠程連接mysql速度慢的解決方法:skip-name-resolve取消DNS的反向解析

PHP遠程連接MYSQL速度慢,有時遠程連接到MYSQL用時4-20秒不等,本地連接MYSQL正常,出現這種問題的主要原因是,默認安裝的MYSQL開啟了DNS的反向解析,在MY.INI(WINDOWS系統下)或MY.CNF(UNIX或LINUX系統下)文件的[mysqld]下加入skip-name-resolve這一句。

但是,這樣會引起一個問題:連接mysql時,不能使用 localhost連接了,而是要使用IP地址的;如果是按localhost對用戶賦權限的話,用戶登錄權限也要修改一下的。

連接mysql速度慢的解決方法. 

2台服務器,一台跑iis+php,一台跑mysql,和以往一樣配置好環境,測試頁面一切OK

跑應用的時候發現php訪問mysql速度很慢,這種情況在以前從未發現過,雖然2台服務器並非在同一網段中,但是ping數值基本上都在1,2ms之間,tcp連接應該不是問題關健,google以後找到答案,在my.ini文件的[mysqld]部分加入:skip-name-resolve,保存文件,重啟mysql,一切OK啦,速度象飛一樣了

新版本的mysql配置起來不象以前的那個傻瓜化了,這個問題折騰了我一上午的時間,晚上回來總算是解決了,嘿嘿,又學到一些東西。 

Windows 2003下的MySQL 5服務器,本機連接到MySQL服務非常快,局域網內有兩台Linux機器,有一台連接很快,另外一台輸入密碼後要等好幾秒鐘才能連上。

MySQL數據庫服務器逐漸變慢 該如何分析與解決

MySQL 在崩潰恢復時,會遍歷打開所有 ibd 文件的 header page 驗證數據字典的準確性,如果 MySQL 中包含了大量表,這個校驗過程就會比較耗時。 MySQL 下崩潰恢復確實和表數量有關,表總數越大,崩潰恢復時間越長。另外磁盤 IOPS 也會影響崩潰恢復時間,像這裡開發庫的 HDD IOPS 較低,因此面對大量的表空間,校驗速度就非常緩慢。另外一個發現,MySQL 8 下正常啟用時居然也會進行表空間校驗,而故障恢復時則會額外再進行一次表空間校驗,等於校驗了 2 遍。不過 MySQL 8.0 里多了一個特性,即表數量超過 5W 時,會啟用多線程掃描,加快表空間校驗過程。

如何跳過校驗MySQL 5.7 下有方法可以跳過崩潰恢復時的表空間校驗過程嘛?查閱了資料,方法主要有兩種:

1. 配置 innodb_force_recovery可以使 srv_force_recovery != 0 ,那麼 validate = false,即可以跳過表空間校驗。實際測試的時候設置 innodb_force_recovery =1,也就是強制恢復跳過壞頁,就可以跳過校驗,然後重啟就是正常啟動了。通過這種臨時方式可以避免崩潰恢復後非常耗時的表空間校驗過程,快速啟動 MySQL,個人目前暫時未發現有什麼隱患。2. 使用共享表空間替代獨立表空間這樣就不需要打開 N 個 ibd 文件了,只需要打開一個 ibdata 文件即可,大大節省了校驗時間。自從聽了姜老師講過使用共享表空間替代獨立表空間解決 drop 大表時性能抖動的原理後,感覺共享表空間在很多業務環境下,反而更有優勢。

臨時冒出另外一種解決想法,即用 GDB 調試崩潰恢復,通過臨時修改 validate 變量值讓 MySQL 跳過表空間驗證過程,然後讓 MySQL 正常關閉,重新啟動就可以正常啟動了。但是實際測試發現,如果以 debug 模式運行,確實可以臨時修改 validate 變量,跳過表空間驗證過程,但是 debug 模式下代碼運行效率大打折扣,反而耗時更長。而以非 debug 模式運行,則無法修改 validate 變量,想法破滅。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/188535.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-28 13:30
下一篇 2024-11-28 13:30

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • 服務器安裝Python的完整指南

    本文將為您提供服務器安裝Python的完整指南。無論您是一位新手還是經驗豐富的開發者,您都可以通過本文輕鬆地完成Python的安裝過程。以下是本文的具體內容: 一、下載Python…

    編程 2025-04-29
  • STUN 服務器

    STUN 服務器是一個網絡服務器,可以協助網絡設備(例如 VoIP 設備)解決 NAT 穿透、防火牆等問題,使得設備可以正常地進行數據傳輸。本文將從多個方面對 STUN 服務器做詳…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • 解決docker-compose 容器時間和服務器時間不同步問題

    docker-compose是一種工具,能夠讓您使用YAML文件來定義和運行多個容器。然而,有時候容器的時間與服務器時間不同步,導致一些不必要的錯誤和麻煩。以下是解決方法的詳細介紹…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • 如何選擇MySQL服務器文件權限

    MySQL是一種流行的關係型數據庫管理系統。在安裝MySQL時,選擇正確的文件權限是保證安全和性能的重要步驟。以下是一些指導您選擇正確權限的建議。 一、權限選擇 MySQL服務器需…

    編程 2025-04-27
  • CentOS 7在線安裝MySQL 8

    在本文中,我們將介紹如何在CentOS 7操作系統中在線安裝MySQL 8。我們會從安裝環境的準備開始,到安裝MySQL 8的過程進行詳細的闡述。 一、環境準備 在進行MySQL …

    編程 2025-04-27

發表回復

登錄後才能評論