Hướng dẫn show processlist mysql sleep - hiển thị danh sách xử lý mysql sleep
Khi các bạn sử dụng mysql server 1 thời gian, trong trường hợp có nhiều kết nối đến server, một trong những tình huống bạn hay gặp phải đó là khi show proccesslist, các bạn sẽ thấy có nhiều process đang có trạng thái sleep. Những process này có trang thái sleep vì những clinet kết nối đến mysql server, thực hiện truy vấn, và quên không đóng lại connections đến database. Do không đóng nên những connection đó vẫn ở lại và vẫn được mở, và nó được set command là status. Về cơ bản mysql server sẽ tự đóng các connection này khi nó quá timeout (mỗi connection tới mysql đều có timeout). Nhưng các bạn lại muốn tự dọn dẹp những connection như này và ở bài viết này mình sẽ hướng dẫn các bạn. Đầu tiên các bạn login vào mysql dùng câu lệnh sau
select concat('KILL ',id,';') from information_schema.processlist where Command='Sleep' into outfile '/var/lib/mysql-files/a.txt'; Các bạn có thể mở thử file a.txt để xem, cơ bản nó sẽ có format như này: abc và def là các processid trong mysql B5: Các bạn mở file a.txt và nó sẽ tự kill các proccess đang sleep source /var/lib/mysql-files/a.txt;
Bonus:Cơ chế dọn dẹp là việc thường xuyên phải làm, ví vậy các bạn nên làm 1 file bash script như sau để nó tự động quá trình bên trên mysql -u root -p -e "select concat('KILL ',id,';') into outfile '/var/lib/mysql-files/a.txt' from information_schema.processlist where Command = 'Sleep'" mysql -u root -p -e "source /var/lib/mysql-files/a.txt" rm -rf /var/lib/mysql-files/a.txt 103 Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm. Khi tôi chạy Hiển thị Danh sách xử lý trong cơ sở dữ liệu MySQL, tôi nhận được đầu ra này:
Tôi muốn biết quá trình "giấc ngủ" theo lệnh. Nó có nghĩa là gì? Tại sao nó chạy từ một thời gian dài và hiển thị null? Nó đang làm cho cơ sở dữ liệu chậm và khi tôi giết quá trình, thì nó hoạt động bình thường. Làm ơn giúp tôi.
Jyelton 34,7K25 Huy hiệu vàng127 Huy hiệu bạc188 Huy hiệu đồng25 gold badges127 silver badges188 bronze badges Hỏi ngày 30 tháng 8 năm 2012 lúc 9:53Aug 30, 2012 at 9:53
7 Các kết nối trạng thái "Ngủ" thường được tạo bởi mã duy trì các kết nối liên tục với cơ sở dữ liệu. Điều này có thể bao gồm các nhóm kết nối được tạo bởi các khung ứng dụng hoặc các công cụ quản trị cơ sở dữ liệu phía máy khách. Như đã đề cập ở trên trong các bình luận, thực sự không có lý do gì để lo lắng về các kết nối này ... trừ khi tất nhiên bạn không biết kết nối đến từ đâu. . Đã trả lời ngày 3 tháng 1 năm 2013 lúc 20:12Jan 3, 2013 at 20:12
Đã vẽDrew 5,8734 Huy hiệu vàng42 Huy hiệu bạc43 Huy hiệu đồng4 gold badges42 silver badges43 bronze badges Tôi đã tìm thấy câu trả lời này ở đây: https://dba.stackexchange.com/questions/1558. Tóm lại bằng cách sử dụng các mục sau (hoặc trong My.cnf) sẽ xóa vấn đề về thời gian chờ.
Điều này cho phép các kết nối kết thúc nếu chúng ở trong trạng thái ngủ trong 3 phút (hoặc bất cứ điều gì bạn xác định). Đã trả lời ngày 12 tháng 3 năm 2018 lúc 11:36Mar 12, 2018 at 11:36
AntonyantonyAntony 3.43027 Huy hiệu bạc28 Huy hiệu đồng27 silver badges28 bronze badges Giấc ngủ có nghĩa là chủ đề đó không làm gì cả. Thời gian là quá lớn Beacuse Anthor Thread Truy vấn, nhưng không ngắt kết nối máy chủ, mặc định Wait_TimeOut = 28800; để bạn có thể đặt các giá trị nhỏ hơn, ví dụ 10. Ngoài ra, bạn cũng có thể giết được luồng. Đã trả lời ngày 23 tháng 5 năm 2013 lúc 3:22May 23, 2013 at 3:22
|