問題:
mysql伺服器所支援的最大連線數是有上限的,每個連線都會占用一定的記憶體資源,因此當客戶端訪問mysql伺服器處理完相應的操作後,就應該斷開連線釋放記憶體資源。
如果伺服器有大量的閒置連線,這樣就會白白的浪費記憶體,且如果一直在累加而不斷開的話,就會達到連線上限,報"too many connections」的錯誤。可通過命令"show process list」檢視,若發現後台有大量的sleep執行緒,此時就需要調整上述引數了。
show variables like '%max_connections%'; --查詢當前連線threads_connected 跟show processlist結果相同,表示當前連線數。準確的來說,threads_running是代表當前併發數。可以在/etc/my.cnf裡面設定資料庫的最大連線數
[mysqld]
max_connections = 1000
mysql> show status like 'threads%';
+-------------------+-------+
| variable_name | value |
+-------------------+-------+
| threads_cached | 58 |
| threads_connected | 57 | ###這個數值指的是開啟的連線數
| threads_created | 3676 |
| threads_running | 4 | ###這個數值指的是啟用的連線數,這個數值一般遠低於connected數值
+-------------------+-------+
mysql> show variables like '%max_connections%';
+-----------------+-------+
| variable_name | value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> set global max_connections=500; --臨時修改
query ok, 0 rows affected (0.00 sec)
mysql> show variables like '%max_connections%';
+-----------------+-------+
| variable_name | value |
+-----------------+-------+
| max_connections | 500 |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> quit
引用:
show full processlist;
殺死kill + id;
說明各列的含義和用途,
id列:乙個標識,你要kill 乙個語句的時候很有用。
user列: 顯示當前使用者,如果不是root,這個命令就只顯示你許可權範圍內的sql語句。
host列:顯示這個語句是從哪個ip 的哪個埠上發出的。可用來追蹤出問題語句的使用者。
db列:顯示這個程序目前連線的是哪個資料庫。
command列:顯示當前連線的執行的命令,一般就是休眠(sleep),查詢(query),連線(connect)。
time列:此這個狀態持續的時間,單位是秒。
state列:顯示使用當前連線的sql語句的狀態,很重要的列,後續會有所有的狀態的描述,請注意,state只是語句執行中的某乙個狀態,乙個sql語句,已查詢為例,可能需要經過copying to tmp table,sorting result,sending data等狀態才可以完成。
info列:顯示這個sql語句,因為長度有限,所以長的sql語句就顯示不全,但是乙個判斷問題語句的重要依據。
常用需要修改的引數:
1、interactive_timeout
2、wait_timeout
1.interactive_timeout
伺服器關閉互動式連線前等待活動的秒數。互動式客戶端指在mysql_real_connect()中使用client_interactive選項的客戶端。
引數預設值:28800秒(8小時)
2.wait_timeout
伺服器在關閉非互動式連線在乙個連線上等待活動的秒數。
引數預設值:28800秒(8小時)
問題:
在my.cnf中單獨修改wait_timeout,mysqld重啟後仍不生效;(widnows my.ini)
同時修改interactive_timeout和wait_timeout引數,重啟伺服器後生效。
注意:由於mysql版本問題,有的時候只需修改wait_timeout這個值。具體引數需要根據版本檢視手冊。
vs2015 連線 mysql 無法定位序數
經過坎坷,終於解決了這個問題,萬事開頭難 最近在做乙個小課題,需要在windows上連線mysql,之前都是在linux上用,不需要過多配置,直接包含mysql的標頭檔案就可使用,但是在vs上確不是那麼簡單 其實很簡單,只是要配置很多東西 所以出現了一些問題,我就重點娓娓道來 1 安裝mysql 可...
Mysql遠端無法連線
mysql遠端無法連線 一 修改 etc mysql my.conf 找到bind address 127.0.0.1這一行 直接 掉或者改為bind address 0.0.0.0即可 二 為需要遠端登入的使用者賦予許可權 1 新建使用者遠端連線mysql資料庫 grant all on to a...
mysql無法本地連線 MySQL無法本地連線
今天在gpu上安裝mysql,折騰了大半天,伺服器用的是arch系統,之前沒接觸過,遇到了不少問題,我現在從安裝開始講 在arch上安裝mysql mariadb 現在是 arch linux 官方預設的 mysql 實現。oracle mysql 已被移動到 aur,推薦所有使用者公升級 brok...