2010-10-12 3 views
10

Tôi đang chiến đấu một vấn đề 'Quá nhiều kết nối' với quá trình MySQL của tôi và tôi đã có đến mức khi mysqladmin processlist -uroot -pXXXXX kết quả trong:Làm cách nào để tìm quy trình Unix sở hữu kết nối Ngủ cục bộ MySQL?

+------+------------+-----------+------------+---------+------+-------+------------------+ 
| Id | User  | Host  | db   | Command | Time | State | Info    | 
+------+------------+-----------+------------+---------+------+-------+------------------+ 
| 842 | svcControl | localhost | svcObjects | Sleep | 1772 |  |     | 
| 875 | svcControl | localhost | svcObjects | Sleep | 1773 |  |     | 
| 884 | svcControl | localhost | svcObjects | Sleep | 1770 |  |     | 
| 896 | svcControl | localhost | svcObjects | Sleep | 1540 |  |     | 
| 951 | svcControl | localhost | svcObjects | Sleep | 709 |  |     | 
| 1023 | svcControl | localhost | svcObjects | Sleep | 708 |  |     | 
| 1063 | svcControl | localhost | svcObjects | Sleep | 708 |  |     | 
| 1069 | svcControl | localhost | svcObjects | Sleep | 708 |  |     | 
| 1075 | svcControl | localhost | svcObjects | Sleep | 707 |  |     | 
| 1083 | svcControl | localhost | svcObjects | Sleep | 707 |  |     | 
| 1091 | svcControl | localhost | svcObjects | Sleep | 706 |  |     | 
| 1097 | svcControl | localhost | svcObjects | Sleep | 706 |  |     | 
| 1107 | svcControl | localhost | svcObjects | Sleep | 705 |  |     | 
| 1112 | svcControl | localhost | svcObjects | Sleep | 702 |  |     | 
| 1120 | svcControl | localhost | svcObjects | Sleep | 704 |  |     | 
| 1127 | svcControl | localhost | svcObjects | Sleep | 704 |  |     | 
| 1136 | svcControl | localhost | svcObjects | Sleep | 704 |  |     | 
| 1141 | svcControl | localhost | svcObjects | Sleep | 644 |  |     | 
| 1202 | svcControl | localhost | svcObjects | Sleep | 268 |  |     | 
| 1222 | svcView | localhost | svcObjects | Sleep | 8 |  |     | 
| 1224 | svcControl | localhost | svcObjects | Sleep | 280 |  |     | 
| 1225 | svcControl | localhost | svcObjects | Sleep | 8 |  |     | 
| 1265 | root  | localhost |   | Query | 0 |  | show processlist | 
+------+------------+-----------+------------+---------+------+-------+------------------+ 

Vì vậy, rõ ràng, tôi đang bị rò rỉ kết nối ở đâu đó, nhưng Tôi không thể tìm ra nơi. Tôi đã tìm kiếm các nguồn cho tôi biết cách lấy ID kết nối tới ID tiến trình Unix, nhưng hầu hết các phương pháp tiếp cận mong đợi các kết nối đến từ các máy chủ từ xa, cho phép bạn sử dụng netstat để gỡ lỗi chúng. Hoặc là, hoặc họ yêu cầu bạn sửa đổi codebase của bạn để đăng nhập mỗi kết nối đã cố gắng, có vẻ hơi giống như quá mức cần thiết.

Vậy ... có bất kỳ cách tiếp cận nào mà bất kỳ ai biết không? Bất kỳ tệp nào mà kết nối ngủ này sẽ mở ra, để tôi có thể sử dụng bộ nhiệt áp, chẳng hạn? Hoặc ... có thể đây là những kết nối zombie không có quá trình sở hữu?

Để đối phó với những câu trả lời dưới đây

Nếu tôi chạy ps -ef | grep mysql, tôi thấy:

root  5960  1 0 Oct14 ?  00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --user=mysql 
mysql  6007 5960 0 Oct14 ?  00:24:12 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock 

Chạy các lệnh đề nghị, tôi nhận được:

# fuser -u /var/lib/mysql/mysql.sock 
/var/lib/mysql/mysql.sock: 6007(mysql) 

# lsof -p 5960 
COMMAND PID USER FD TYPE DEVICE  SIZE NODE NAME 
mysqld_sa 5960 root cwd DIR 8,1  4096  2/
mysqld_sa 5960 root rtd DIR 8,1  4096  2/
mysqld_sa 5960 root txt REG 8,1 735004 117216 /bin/bash 
mysqld_sa 5960 root mem REG 8,1 50848 9/lib/libnss_files-2.5.so 
mysqld_sa 5960 root mem REG 8,1 129832 87812 /lib/ld-2.5.so 
mysqld_sa 5960 root mem REG 8,1 1689388 90858 /lib/libc-2.5.so 
mysqld_sa 5960 root mem REG 8,1 20668 90874 /lib/libdl-2.5.so 
mysqld_sa 5960 root mem REG 8,1 13276 91815 /lib/libtermcap.so.2.0.8 
mysqld_sa 5960 root mem REG 253,18 56418144 656494 /usr/lib/locale/locale-archive 
mysqld_sa 5960 root mem REG 253,18 25462 1573763 /usr/lib/gconv/gconv-modules.cache 
mysqld_sa 5960 root 0r CHR 1,3    1432 /dev/null 
mysqld_sa 5960 root 1w CHR 1,3    1432 /dev/null 
mysqld_sa 5960 root 2w CHR 1,3    1432 /dev/null 
mysqld_sa 5960 root 255r REG 253,18 13077 1181028 /usr/bin/mysqld_safe 

lsof -p 6007 
COMMAND PID USER FD TYPE  DEVICE  SIZE  NODE NAME 
mysqld 6007 mysql cwd DIR  253,19  4096 33005 /var/lib/mysql 
mysqld 6007 mysql rtd DIR  8,1  4096  2/
mysqld 6007 mysql txt REG  253,18 7413588 1998921 /usr/libexec/mysqld 
mysqld 6007 mysql mem REG  8,1 1296932 91720 /lib/libcrypto.so.0.9.8e 
mysqld 6007 mysql mem REG  253,18 612180 1514570 /usr/lib/libkrb5.so.3.3 
mysqld 6007 mysql mem REG  8,1 293108 91722 /lib/libssl.so.0.9.8e 
mysqld 6007 mysql mem REG  8,1 3200288 87758 /lib/libnss_ldap-2.5.so 
mysqld 6007 mysql mem REG  8,1  21948 90121 /lib/libnss_dns-2.5.so 
mysqld 6007 mysql mem REG  8,1 129832 87812 /lib/ld-2.5.so 
mysqld 6007 mysql mem REG  8,1 1689388 90858 /lib/libc-2.5.so 
mysqld 6007 mysql mem REG  8,1 216544 90877 /lib/libm-2.5.so 
mysqld 6007 mysql mem REG  8,1  20668 90874 /lib/libdl-2.5.so 
mysqld 6007 mysql mem REG  8,1 137908 90866 /lib/libpthread-2.5.so 
mysqld 6007 mysql mem REG  253,18  75284 1514584 /usr/lib/libz.so.1.2.3 
mysqld 6007 mysql mem REG  8,1  48156 90867 /lib/librt-2.5.so 
mysqld 6007 mysql mem REG  8,1  50848 9/lib/libnss_files-2.5.so 
mysqld 6007 mysql mem REG  8,1 245376 90881 /lib/libsepol.so.1 
mysqld 6007 mysql mem REG  8,1  93508 91676 /lib/libselinux.so.1 
mysqld 6007 mysql mem REG  8,1  46636 90847 /lib/libgcc_s-4.1.2-20080825.so.1 
mysqld 6007 mysql mem REG  253,18 936908 1514611 /usr/lib/libstdc++.so.6.0.8 
mysqld 6007 mysql mem REG  8,1 109740 90873 /lib/libnsl-2.5.so 
mysqld 6007 mysql mem REG  8,1  80636 90879 /lib/libresolv-2.5.so 
mysqld 6007 mysql mem REG  8,1  7748 91684 /lib/libcom_err.so.2.1 
mysqld 6007 mysql mem REG  253,18 190712 1514583 /usr/lib/libgssapi_krb5.so.2.2 
mysqld 6007 mysql mem REG  253,18 157304 1514569 /usr/lib/libk5crypto.so.3.1 
mysqld 6007 mysql mem REG  8,1  8072 90878 /lib/libkeyutils-1.2.so 
mysqld 6007 mysql mem REG  253,18  33712 1509918 /usr/lib/libkrb5support.so.0.1 
mysqld 6007 mysql mem REG  8,1  45432 90876 /lib/libcrypt-2.5.so 
mysqld 6007 mysql 0r CHR  1,3    1432 /dev/null 
mysqld 6007 mysql 1w REG  253,19 251337 163863 /var/log/mysqld.log 
mysqld 6007 mysql 2w REG  253,19 251337 163863 /var/log/mysqld.log 
mysqld 6007 mysql 3u IPv4 26825288    TCP monstermunch.ssd.hursley.ibm.com:59850->hurgsa.hursley.uk.ibm.com:ldap (CLOSE_WAIT) 
mysqld 6007 mysql 4uW REG  253,19 161480704 33142 /var/lib/mysql/ibdata1 
mysqld 6007 mysql 5u REG  253,16   0  13 /tmp/ibmydRNj (deleted) 
mysqld 6007 mysql 6u REG  253,16  20  14 /tmp/ib59yuxj (deleted) 
mysqld 6007 mysql 7u REG  253,16   0  15 /tmp/ib0Vp8gj (deleted) 
mysqld 6007 mysql 8u REG  253,16   0  16 /tmp/ibjkCG1i (deleted) 
mysqld 6007 mysql 9uW REG  253,19 5242880 33143 /var/lib/mysql/ib_logfile0 
mysqld 6007 mysql 10uW REG  253,19 5242880 33144 /var/lib/mysql/ib_logfile1 
mysqld 6007 mysql 11u IPv4 26825294    TCP *:mysql (LISTEN) 
mysqld 6007 mysql 12u REG  253,16   0  17 /tmp/ibKpCJ1i (deleted) 
mysqld 6007 mysql 13u unix 0xea432900   26825295 /var/lib/mysql/mysql.sock 
mysqld 6007 mysql 14u REG  253,19  30720 65557 <DB Table> 
mysqld 6007 mysql 15u unix 0xf5188c80   30430332 /var/lib/mysql/mysql.sock 
mysqld 6007 mysql 16u REG  253,19  3072 98468 <DB Table> 
mysqld 6007 mysql 17u unix 0xf5925680   30433174 /var/lib/mysql/mysql.sock 
mysqld 6007 mysql 18u REG  253,19  1024 65605 <DB Table> 
mysqld 6007 mysql 19u unix 0xf5188880   30430336 /var/lib/mysql/mysql.sock 
mysqld 6007 mysql 20u REG  253,19  40 98469 <DB Table> 
mysqld 6007 mysql 21u unix 0xf5925280   30433176 /var/lib/mysql/mysql.sock 
mysqld 6007 mysql 22u REG  253,19  39344 65558 <DB Table> 
mysqld 6007 mysql 23u REG  253,19  1024 65623 <DB Table> 
mysqld 6007 mysql 24u REG  253,19   0 65624 <DB Table> 
mysqld 6007 mysql 25u unix 0xf51f6880   30430339 /var/lib/mysql/mysql.sock 

Trong sản lượng trên, <DB Table> là bản chỉnh sửa của tôi.

Tôi có thể thiếu thứ gì đó, nhưng tôi không thấy bất cứ điều gì ở đó là một quá trình của tôi đang nắm giữ mở kết nối ... trừ khi những tệp đã xóa/tmp đó là chìa khóa.

Trả lời

5

Nếu kết nối được thực hiện qua ổ cắm cục bộ, bạn có thể có một số may mắn với sudo fuser -u /tmp/mysql.sock. Bạn cũng có thể tìm ID quá trình của mysql (hãy gọi nó là $MYSQL_PID) và sau đó chạy sudo lsof -p $MYSQL_PID, bao gồm tất cả các ổ cắm mở.

+0

Xin xem cập nhật của tôi cho câu hỏi; những điều này không giúp được gì, trừ khi tôi bỏ lỡ điều gì đó. – Dancrumb

+0

Đầu ra 'fuser' cho thấy' mysqld' đang lắng nghe trên socket '/ var/lib/mysql/mysql.sock', nhưng không có quá trình cục bộ nào được mở. –

+0

Đầu ra 'lsof' cho' mysqld' cho biết rằng nó đang nghe các kết nối IPv4 đến vào ngày 11, nhưng không có kết nối nào nhận được vẫn mở. Có 6 fds mở cho ổ cắm mysql; Tôi không biết những gì đang làm. 'lsof/var/lib/mysql/mysql.sock' nên liệt kê tất cả các tiến trình với socket đó đang mở. –

-1

Kiểm tra ứng dụng nào sử dụng cơ sở dữ liệu "svcObjects" với người dùng "svcControl". Điều này sẽ dẫn bạn đến vấn đề gốc tôi đoán.

1

Nếu bạn có thể, thay đổi cách bạn đang kết nối với máy chủ mysql bằng cách sử dụng 127.0.0.1 thay vì localhost.

Bằng cách đó, kết nối tcp/ip sẽ được sử dụng và bạn sẽ có trong danh sách quy trình số cổng mà bạn có thể sử dụng để theo dõi lại quy trình.

Kết nối tcp/ip chậm hơn kết nối ổ cắm tệp unix, nhưng nó sẽ thực hiện thủ thuật.

tham khảo:

http://dev.mysql.com/doc/refman/5.1/en/can-not-connect-to-server.html

http://dev.mysql.com/doc/refman/5.1/en/connecting.html