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

Node.js, Request, MySQL và Connection Pooling dẫn đến Hành vi chặn / đóng băng vô hạn?

Bạn đang sử dụng vòng lặp đồng bộ để triển khai tài nguyên không đồng bộ. Bạn không thể làm điều đó.

Vòng lặp while của bạn lấp đầy nhóm cơ sở dữ liệu, sau đó lặp lại một lần nữa và chặn trên getConnection sau đó sẽ chặn toàn bộ vòng lặp sự kiện Node.js.

Bạn có thể sử dụng async gói để thực hiện các vòng lặp while không đồng bộ.

async # forever cuộc gọi sẽ thực hiện những gì bạn đang cố gắng đạt được.

Ngoài ra, mã của bạn đang làm rò rỉ các kết nối cơ sở dữ liệu. Bạn nên đặt connection.end() đầu tiên trong cuộc gọi lại trừ khi bạn sẽ sử dụng lại cùng một kết nối. Nếu không, lỗi sẽ làm rò rỉ kết nối cơ sở dữ liệu.

pool.getConnection(function (err, connection) {
    if (err) throw err;
    connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
      connection.end(); // return to pool before evaluating error.
      if (err) throw err;
      console.log('The solution is: ', rows[0].solution);
    });
});


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. RMySQL, lỗi tìm nạp - Cảnh báo trình điều khiển RS-DBI:(lỗi khi tìm nạp các hàng)

  2. Lỗi MySQL:Không thể thêm ràng buộc khóa ngoại?

  3. Giới thiệu về SQL Joins

  4. Tại sao CHÈN mysql ... TRÊN CẬP NHẬT KHÓA DUPLICATE có thể phá vỡ sao chép RBR trên cấu hình chính / chủ

  5. Lỗi Mysql:Người dùng được chỉ định làm trình xác định ('mysql.infoschema'@'localhost') không tồn tại 'khi cố gắng kết xuất không gian bảng