當前的連接數:
mysql> show status like '%Threads_connected%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_connected | 27 |
+-------------------+-------+
1 row in set (0.00 sec)
最大連接數:
show variables like '%max_connections%';
set GLOBAL max_connections=800;
flush privileges
也可以修改/etc/my.cnf中的max_connections:
max_connections = 1000
關于php應該在何時調用mysql_close()以及pconnect方式和傳統方式有何種區別收藏
以前我一直認為,當php的頁面執行結束時,會自動釋放掉一切。相信很多人都跟我想的一樣。但事實證明并不是這樣。比如session就不會隨著頁面執行完畢而釋放。
php的垃圾回收機制,其實只針對于php本身。對于mysql,php沒權利去自動去釋放它的東西。如果你在頁面執行完畢前不調用mysql_close(),那么mysql那邊是不會關閉這個連接的。如果你是用的是pconnect方式,即使你在頁面執行完畢前調用mysql_close(),也無法另mysql關閉這個連接。
也許在負載低的情況下,你感受不到有何不妥。但是,一旦負載很高,就回出現很多的死鏈接,于是得殺掉它們,現象:
在php中使用pconnect方式建立連接,然后到mysql客戶端下執行show processlist;如果你的負載到一定程度的話,你可以看到很多sleep的進程,這些進程就是人們常說的死連接,它們會一直保持sleep,直到my.cnf里面設置的wait_timeout這個參數值的時間到了,mysql才會自己殺死它。在殺死它的時候,mysql還會在error-log里面記錄一條Aborted connection xxx to db: 'xxx' user: 'xxx' host: 'xxx'的日志,用google翻譯一下,會得到一個相當強悍的解釋"胎死腹中的連接"!
那么造成sleep的原因,有三個,下面是mysql手冊給出的解釋:
1.客戶端程序在退出之前沒有調用mysql_close().[寫程序的疏忽,或者數據庫的db類庫沒有自動關閉每次的連接。。。]
2.客戶端sleep的時間在wait_timeout或interactive_timeout規定的秒內沒有發出任何請求到服務器. [類似常連,類似于不完整的tcp ip協議構造,服務端一直認為客戶端仍然存在(有可能客戶端已經斷掉了)]
3.客戶端程序在結束之前向服務器發送了請求還沒得到返回結果就結束掉了. [參看:tcp ip協議的三次握手]
網上有一個哥們寫了一個,如下:
<?php
define('MAX_SLEEP_TIME', 120);
$hostname = "localhost";
$username = "root";
$password = "password";
$connect = mysql_connect($hostname, $username, $password);
$result = mysql_query("SHOW PROCESSLIST", $connect);
while ($proc = mysql_fetch_assoc($result)) {
if ($proc["Command"] == "Sleep" && $proc["Time"] > MAX_SLEEP_TIME) {
@mysql_query("KILL " . $proc["Id"], $connect);
}
}
mysql_close($connect);
?>
將它當中的 $password 改成你實際的數據庫密碼,死連接的時間也可以修改。然后加入計劃任務就可以了。比如用 crontab -e 命令加入:
*/2 * * * * php /usr/local/sbin/kill-mysql-sleep-proc.php就可以每隔 2 分鐘檢查并清除一次數據庫中的死連接了。
我結合自己的實際改寫如下:
<?php
require_once 'services/UserServices*.class.php';
define('MAX_SLEEP_TIME', 120);//注意調試的時候這兒只能修改120,而不能在重新定義,常量一旦定義好,就不能被重新定義了。PHP預先定義了幾個常量,并提供了一種機制在運行時自己定義。常量和變量基本上是一樣的,不同的是:常量必須用DEFINE函數定義,常量一旦定義好,就不能被重新定義了。
$scoreServ = new TMService ( );
$sql = "SHOW PROCESSLIST";
$proc = $scoreServ*->query($sql);
foreach($proc as $oneproc)
{
if ($oneproc["Command"] == "Sleep" && $oneproc["Time"] >= MAX_SLEEP_TIME)
{
$query = "KILL " . $oneproc["Id"];
echo $query."\n";
@$scoreServ*->query($query);
}
}
?>
crontab 加入:
*/2 * * * * /usr/local/php/bin/php /usr/local/tads/htdocs/*/src/crontable/killmysqlsleepproc.php
聽說可以做mysql的設置也可以的如下:
配置MYSQL里的參數。超時時間設置。
max_connections:
允許的同時客戶的數量。負載過大時,你將經常看到 too many connections 錯誤。已達到最大鏈接數,所以會出現這種情況。 我們服務器數值是200。
wait_timeout
服務器在關閉連接之前在一個連接上等待行動的秒數,默認數值是28800,即如果沒有事情發生,服務器在 8個小時后關閉連接。防止sleep過而導致出現too many connections
如果你的sleep進程數在同一時間內過多,再加上其他狀態的連接,總數超過了max_connection的值,那mysql除了root用戶外,就無法再繼續處理任何請求無法與任何請求建立連接或者直接down了。所以,這個問題在大負載的情況下還是相當嚴重的。如果發現你的mysql有很多死連接存在,首先要先檢查你的程序是否使用的是pconnect的方式,其次,檢查在頁面執行完畢前是否及時調用了mysql_close(),
還有一個辦法,你可以在my.cnf里面加上wait_timeout和interactive_timeout,把他們的值設的小一些,默認情況下wait_timeout的值是8小時的時間,你可以改成1個小時,或半個小時。這樣mysql會更快的殺死死連接。防止連接總數超過max_connection的值。或者把max_connection的值設置的更大,不過這樣顯然不妥,連接的數量越多,對你服務器的壓力越大。實際上那些連接都是冗余的,把它們盡快殺死才是上策。
以前總是說,在使用php連接mysql的時候,盡量不要使用pconnect的方式,看完我上面所說的那些,應該可以明白為什么了吧,因為我們使用php大多數情況下都是做web開發,web開發是面向多用戶,那么用戶的數量與mysql連接數是成正比的。使用pconnect的方式,即使你的調用mysql_close()也是無法釋放數據庫連接的,那么mysql中的死連接的數量就會越來越多了。
我認為,只有當你的應用屬于那種點對點方式,或者你能保證連接數量很少的情況,才有必要去采用pconnect的方式,因為連接數量少,那么讓它一直處于連接狀態,避免了重復打開關閉的過程。這樣可能會比傳統方式更好一些。
至于何時該去調用mysql_close(),最正確的做法是如果下面不再執行mysql的操作了,在你上一次執行完mysql操作后,立刻就調用mysql_close()。這才是最正確的做法,并不是總要把mysql_close()寫在頁面最后一行就可以了。
如果你沒有修改過MySQL的配置,缺省情況下,wait_timeout的初始值是28800。
wait_timeout過大有弊端,其體現就是MySQL里大量的SLEEP進程無法及時釋放,拖累系統性能,不過也不能把這個指設置的過小,否則你可能會遭遇到“MySQL has gone away”之類的問題,通常來說,我覺得把wait_timeout設置為10是個不錯的選擇,但某些情況下可能也會出問題,比如說有一個CRON腳本,其中兩次SQL查詢的間隔時間大于10秒的話,那么這個設置就有問題了(當然,這也不是不能解決的問題,你可以在程序里時不時mysql_ping一下,以便服務器知道你還活著,重新計算wait_timeout時間): # vi /etc/my.cnf
[mysqld]
wait_timeout=10
# /etc/init.d/mysql restart
復制代碼不過這個方法太生硬了,線上服務重啟無論如何都應該盡可能避免,看看如何在MySQL命令行里通過SET來設置: mysql> set global wait_timeout=10;
mysql> show global variables like '%timeout';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| wait_timeout | 10 |
+----------------------------+-------+
復制代碼這里一個容易把人搞蒙的地方是如果查詢時使用的是show variables的話,會發現設置好像并沒有生效,這是因為單純使用show variables的話就等同于使用的是show session variables,查詢的是會話變量,只有使用show global variables,查詢的才是全局變量。
網絡上很多人都抱怨說他們set global之后使用show variables查詢沒有發現改變,原因就在于混淆了會話變量和全局變量,如果僅僅想修改會話變量的話,可以使用類似set wait_timeout=10;或者set session wait_timeout=10;這樣的語法。
另一個值得注意的是會話變量wait_timeout初始化的問題,這一點在手冊里已經明確指出了,我就直接拷貝了:
On thread startup, the session wait_timeout value is initialized from the global wait_timeout value or from the global interactive_timeout value, depending on the type of client (as defined by the CLIENT_INTERACTIVE connect option to mysql_real_connect()).
MySQL大拿Jeremy Zawodny曾在他的文章Fixing Poor MySQL Default Configuration Values里面列出了幾個很惡心的MySQL缺省設置,不過沒包含wait_timeout,但我覺得它也應該算一個,每次新裝MySQL后最好都記得修改它。
以上的修改配置來源網頁:
http://www.tech-q.cn/redirect.php?tid=4005&goto=lastpost
mysql>show variables like '%timeout';
打印結果如下:
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| wait_timeout | 28800 |
+----------------------------+-------+
interactive_timeout 需在mysql_connect()設置CLIENT_INTERACTIVE選項后起作用,并被賦值為wait_timeout;
mysql>set wait_timeout = 10; 對當前交互鏈接有效;
mysql>set interactive_timeout = 10; 對后續起的交互鏈接有效;
該超時時間單位是秒,從變量從上次SQL執行后算起;當前空閑若超過該時間,則也會被強制斷開。
想把mysql的連接斷開時間改長一些,以前只改了connect_timeout變量的值,還不夠。現在又改了這兩個,不知夠不夠。不夠再繼續查吧。
注意:對兩個值都做修改才生效:set interactive_timeout=120; set wait_timeout=120;
mysql> show variables like '%timeout';
+-------------------------+-------+
| Variable_name | Value |
+-------------------------+-------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 28800 |
+-------------------------+-------+
mysql> set interactive_timeout=120; set wait_timeout=120;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like '%timeout';
+-------------------------+-------+
| Variable_name | Value |
+-------------------------+-------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| interactive_timeout | 120 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 120 |
+-------------------------+-------+
修改全局變量:
set global interactive_timeout=120;set global wait_timeout=120;
mysql> show global variables like '%timeout';
+-------------------------+-------+
| Variable_name | Value |
+-------------------------+-------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| interactive_timeout | 120 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 120 |
+-------------------------+-------+
特別注意全局和一般變量時不一樣的兩個變量,這也就是為何導致修改沒有起作用的原因!!!!
配置修改:
直接的修改 /etc/my.cnf這個文件中
-------------------------------------------
[mysqld]
wait_timeout = 86400
interactive_timeout = 86400
--------------------------------------------
添加這兩行,然后重新啟動mysql服務就OK了
文章來源:
http://blog.chinaunix.net/u2/60332/showart_2096857.html
近一段時間,部門同事反映在使用mysql的過程出現數據庫連接問題
應用程序和數據庫建立連接,如果超過8小時應用程序不去訪問數據庫,數據庫就斷掉連接 。這時再次訪問就會拋出異常,如下所示:
java.io.EOFException
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
...
查了一下發現應用程序和mysql數據庫建立連接,如果超過8小時應用程序不去訪問數據庫,數據庫就斷掉連接 。這時再次訪問就會拋出異常。
關于mysql自動斷開的問題研究結果如下,在mysql中有相關參數設定,當數據庫連接空閑一定時間后,服務器就會斷開等待超時的連接:
1、相關參數,紅色部分
mysql> show variables like '%timeout%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| wait_timeout | 28800 |
+--------------------------+-------+
同一時間,這兩個參數只有一個起作用。到底是哪個參數起作用,和用戶連接時指定的連接參數相關,缺省情況下是使用wait_timeout。我建議是將這兩個參數都修改,以免引起不必要的麻煩。
2、修改參數
這兩個參數的默認值是8小時(60*60*8=28800)。我測試過將這兩個參數改為0,結果出人意料,系統自動將這個值設置為1。換句話說,不能將該值設置為永久。
將這2個參數設置為24小時(60*60*24=604800)即可。
set interactive_timeout=604800;
set wait_timeout=604800;
也可以修改my.cof,修改后重起mysql
打開/etc/my.cnf,在屬性組mysqld下面添加參數如下:
[mysqld]
interactive_timeout=28800000
wait_timeout=28800000
如果一段時間內沒有數據庫訪問則mysql自身將切斷連接,之后訪問java訪問連接池時對數據庫的數據通道早就關閉了,因為dbcp連接池無法時時維護與數據庫的連接關系,mysql5以后即使在dbcp配置中加入autoReconnect=true也沒有效果。
言歸正傳,接著來,shell腳本實現如下:
#!/bin/sh
注:這個腳本運行后會每五秒去檢測一次 mysql的sleep進程數
while :
do
n=`/usr/bin/mysqladmin processlist | grep -i sleep | wc -l`
date=`date +%Y%m%d\[%H:%M:%S]`
echo $n
if [ "$n" -gt 10 ]
then
for i in `/usr/bin/mysqladmin processlist | grep -i sleep | awk '{print $2}'`
do
/usr/bin/mysqladmin kill $i
done
echo "sleep is too many i killed it" >> /tmp/sleep.log
echo "$date : $n" >> /tmp/sleep.log
fi
sleep 5
done
crontab實現:不會循環的腳本(配合crontab使用)
#!/bin/sh
n=`/usr/bin/mysqladmin processlist | grep -i sleep | wc -l`
date=`date +%Y%m%d\[%H:%M:%S]`
echo $n
if [ "$n" -gt 10 ]
then
for i in `/usr/bin/mysqladmin processlist | grep -i sleep | awk '{print $2}'`
do
/usr/bin/mysqladmin kill $i
done
echo "sleep is too many i killed it" >> /tmp/sleep.log
echo "$date : $n" >> /tmp/sleep.log
fi
你可能還會用到查詢mysql當前連接數:
1.show status
Threads_connected 當前的連接數
Connections 試圖連接到(不管是否成功)MySQL服務器的連接數。
Max_used_connections 服務器啟動后已經同時使用的連接的最大數量。
2.set GLOBAL max_connections=連接數;
flush privileges
3.修改/etc/my.cnf中的max_connections
4.show processlist 顯示當前正在執行的mysql連接
5.mysqladmin -u<user> -p<pwd> -h<host> status
顯示當前mysql狀態
Uptime: 13131 Threads: 1 Questions: 22 Slow queries: 0 Opens: 16 Flush tables: 1 Open tables: 1 Queries per second avg: 0.1
mysqladmin -u<user> -p<pwd> -h<host> extended-status
顯示mysql的其他狀態
+-----------------------------------+----------+
| Variable_name | Value |
+-----------------------------------+----------+
| Aborted_clients | 0 |
| Aborted_connects | 1 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Bytes_received | 1152 |
| Bytes_sent | 10400 |
| Com ......
參看:
http://www.justwinit.cn/post/2262/
http://www.coolcode.cn/?action=show&id=237
http://www.eb163.com/club/thread-1708-1-1.html
http://hualulu.com/blog/?p=16
http://www.51testing.com/?uid-199-action-viewspace-itemid-76740
補充:
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
會得到類似下面的結果,具體數字會有所不同:
LAST_ACK 1
SYN_RECV 14
ESTABLISHED 79
FIN_WAIT1 28
FIN_WAIT2 3
CLOSING 5
TIME_WAIT 1669
狀態:描述
CLOSED:無連接是活動的或正在進行
LISTEN:服務器在等待進入呼叫
SYN_RECV:一個連接請求已經到達,等待確認
SYN_SENT:應用已經開始,打開一個連接
ESTABLISHED:正常數據傳輸狀態
FIN_WAIT1:應用說它已經完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
也就是說,這條命令可以把當前系統的網絡連接狀態分類匯總。
下面解釋一下為啥要這樣寫:
一個簡單的管道符連接了netstat和awk命令。
------------------------------------------------------------------
先來看看netstat:
netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 123.123.123.123:80 234.234.234.234:12345 TIME_WAIT
你實際執行這條命令的時候,可能會得到成千上萬條類似上面的記錄,不過我們就拿其中的一條就足夠了。
------------------------------------------------------------------
再來看看awk:
/^tcp/
濾出tcp開頭的記錄,屏蔽udp, socket等無關記錄。
state[]
相當于定義了一個名叫state的數組
NF
表示記錄的字段數,如上所示的記錄,NF等于6
$NF
表示某個字段的值,如上所示的記錄,$NF也就是$6,表示第6個字段的值,也就是TIME_WAIT
state[$NF]
表示數組元素的值,如上所示的記錄,就是state[TIME_WAIT]狀態的連接數
++state[$NF]
表示把某個數加一,如上所示的記錄,就是把state[TIME_WAIT]狀態的連接數加一
END
表示在最后階段要執行的命令
for(key in state)
遍歷數組
print key,"\t",state[key]
打印數組的鍵和值,中間用\t制表符分割,美化一下。
如發現系統存在大量TIME_WAIT狀態的連接,通過調整內核參數解決,
vim /etc/sysctl.conf
編輯文件,加入以下內容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后執行 /sbin/sysctl -p 讓參數生效。
net.ipv4.tcp_syncookies = 1 表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認為0,表示關閉;
net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認為0,表示關閉;
net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。
net.ipv4.tcp_fin_timeout 修改系統默認的 TIMEOUT 時間
下面附上TIME_WAIT狀態的意義:
客戶端與服務器端建立TCP/IP連接后關閉SOCKET后,服務器端連接的端口
狀態為TIME_WAIT
是不是所有執行主動關閉的socket都會進入TIME_WAIT狀態呢?
有沒有什么情況使主動關閉的socket直接進入CLOSED狀態呢?
主動關閉的一方在發送最后一個 ack 后
就會進入 TIME_WAIT 狀態 停留2MSL(max segment lifetime)時間
這個是TCP/IP必不可少的,也就是“解決”不了的。
也就是TCP/IP設計者本來是這么設計的
主要有兩個原因
1。防止上一次連接中的包,迷路后重新出現,影響新連接
(經過2MSL,上一次連接中所有的重復包都會消失)
2。可靠的關閉TCP連接
在主動關閉方發送的最后一個 ack(fin) ,有可能丟失,這時被動方會重新發
fin, 如果這時主動方處于 CLOSED 狀態 ,就會響應 rst 而不是 ack。所以
主動方要處于 TIME_WAIT 狀態,而不能是 CLOSED 。
TIME_WAIT 并不會占用很大資源的,除非受到攻擊。
還有,如果一方 send 或 recv 超時,就會直接進入 CLOSED 狀態
sleep() 和 wait() 有什么區別?
sleep是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時后會自動恢復。調用sleep不會釋放對象鎖。在sleep 時間間隔期滿后,線程不一定立即恢復執行。這是因為在那個時刻,其它線程可能正在運行而且沒有被調度為放棄執行,除非(a)“醒來”的線程具有更高的優先級,(b)正在運行的線程因為其它原因而阻塞。
wait是Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,釋放當前線程鎖定的任何對象。進入等待此對象的等待鎖定池,只有針對此對象發出notify方法(或notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。
sleep()方法是本地方法,屬于Thread類,它有兩種定義:
public static native void sleep(long millis) throws InterruptedException;
public static void sleep(long millis, int nanos) throws InterruptedException {
//other code
}
其中的參數millis代表毫秒數(千分之一秒),nanos代表納秒數(十億分之一秒)。這兩個方法都可以讓調用它的線程沉睡(停止運行)指定的時間,到了這個時間,線程就會自動醒來,變為可運行狀態(RUNNABLE),但這并不表示它馬上就會被運行,因為線程調度機制恢復線程的運行也需要時間。調用sleep()方法并不會讓線程釋放它所持有的同步鎖;而且在這期間它也不會阻礙其它線程的運行。上面的2個方法都聲明拋出一個 InterruptedException類型的異常,這是因為線程在sleep()期間,有可能被持有它的引用的其它線程調用它的 interrupt()方法而中斷。中斷一個線程會導致一個InterruptedException異常的產生,如果你的程序不捕獲這個異常,線程就會異常終止,進入TERMINATED狀態,如果你的程序捕獲了這個異常,那么程序就會繼續執行catch語句塊(可能還有finally語句塊)以及以后的代碼。
為了更好地理解interrupt()效果,我們來看一下下面這個例子:
public class InterruptTest {
public static void main(String[] args) {
Thread t = new Thread() {
public void run() {
try {
System.out.println("我被執行了-在sleep()方法前");
// 停止運行10分鐘
Thread.sleep(1000 * 60 * 60 * 10);
System.out.println("我被執行了-在sleep()方法后");
} catch (InterruptedException e) {
System.out.println("我被執行了-在catch語句塊中");
}
System.out.println("我被執行了-在try{}語句塊后");
}
};
// 啟動線程
t.start();
// 在sleep()結束前中斷它
t.interrupt();
}
}
運行結果:
我被執行了-在sleep()方法前
我被執行了-在catch語句塊中
我被執行了-在try{}語句塊后
wait()方法也是本地方法,屬于Object類,有三個定義:
public final void wait() throws InterruptedException {
//do something
}
連接數過多會出現:
root@darkstar:~# mysql
ERROR 1040 (00000): Too many connections
你只有選擇:
mysqladmin 執行kill 進程:
./mysqladmin -uroot -p processlist
./mysqladmin -uroot -p kill idnum
假如只有一個哥們A進入mysql,后買的人BCD由于已經連接吃緊咋辦?
方法如下:
1.
show processlist \G;
粘貼下來后放入文本:mysqlkillid.txt
cat mysqlkillid.txt |grep Id: |awk '{print "kill "$2";"}'
kill 180414;
kill 180433;
kill 180438;
kill 180446;
kill 180454;
kill 180455;
kill 180456;
kill 180457;
kill 180458;
kill 180460;
kill 180461;
kill 180462;
然后粘貼到mysql里面去殺死的同時讓其他同事連接mysql,可能某個時候就可以進入了。
本文來自CSDN博客,轉載請標明出處:
http://blog.csdn.net/yakihappy/archive/2009/03/11/3979914.aspx
回憶未來,向東,沒時間整理:)
最后編輯: root 編輯于2010/03/17 15:40