Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySql Proccesslist chứa đầy các Mục nhập Ngủ dẫn đến Quá nhiều Kết nối?

Về cơ bản, bạn nhận được kết nối ở trạng thái Ngủ khi:

  • một tập lệnh PHP kết nối với MySQL
  • một số truy vấn được thực thi
  • sau đó, tập lệnh PHP thực hiện một số công việc cần thời gian
    • mà không ngắt kết nối khỏi DB
  • và cuối cùng, tập lệnh PHP kết thúc
    • có nghĩa là nó ngắt kết nối khỏi máy chủ MySQL

Vì vậy, bạn thường kết thúc với nhiều quy trình ở trạng thái Ngủ khi bạn có nhiều quy trình PHP được kết nối mà không thực sự thực hiện bất kỳ điều gì ở phía cơ sở dữ liệu.

Một ý tưởng cơ bản, vì vậy:hãy đảm bảo rằng bạn không có các quy trình PHP chạy quá lâu - hoặc buộc chúng phải ngắt kết nối ngay khi chúng không cần truy cập vào cơ sở dữ liệu nữa.


Một điều khác mà tôi thường thấy khi có một số tải trên máy chủ:

  • Ngày càng có nhiều yêu cầu đến với Apache
    • có nghĩa là nhiều trang để tạo
  • Mỗi tập lệnh PHP, để tạo một trang, kết nối với DB và thực hiện một số truy vấn
  • Những truy vấn này ngày càng mất nhiều thời gian hơn khi tải trên máy chủ DB tăng lên
  • Điều đó có nghĩa là nhiều quy trình tiếp tục được xếp chồng lên nhau

Một giải pháp có thể hữu ích là giảm thời gian thực hiện các truy vấn của bạn - tối ưu hóa các truy vấn dài nhất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để thực thi tập lệnh mysql với các biến sử dụng PHP ::PDO?

  2. Làm cách nào để truy xuất kết quả dưới dạng mảng đa chiều từ mySQL và PHP?

  3. MySQL - Làm thế nào để chọn các hàng có giá trị trong mảng?

  4. Cần trợ giúp với Truy vấn Mysql phân cấp

  5. Trả lại giá trị ngay cả khi không có kết quả