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

APPARENT DEADLOCK Tạo chuỗi khẩn cấp cho các nhiệm vụ đang chờ xử lý chưa được giao

Từ http://www.mchange.com/projects/c3p0/#other_ds_configuration

numHelperThreads maxAdministrativeTaskTime giúp định cấu hình hoạt động của nhóm luồng DataSource. Theo mặc định, mỗi DataSource chỉ có ba luồng trợ giúp được liên kết. Nếu hiệu suất dường như kéo theo tải nặng hoặc nếu bạn quan sát qua JMX hoặc kiểm tra trực tiếp PooledDataSource, thấy số lượng "nhiệm vụ đang chờ xử lý" thường lớn hơn 0, hãy thử tăng numHelperThreads. maxAdministrativeTaskTime có thể hữu ích cho người dùng gặp phải các tác vụ bị treo vô thời hạn và thông báo "KHÓA THIẾT BỊ". (Xem Phụ lục A để biết thêm.)

maxAdministrativeTaskTime Mặc định:0 Giây trước khi nhóm luồng của c3p0 sẽ cố gắng làm gián đoạn một tác vụ có vẻ như bị treo. Hiếm khi hữu ích. Nhiều chức năng của c3p0 không được thực hiện bởi các luồng máy khách mà không đồng bộ bởi một nhóm luồng nội bộ. Tính không đồng bộ của c3p0 nâng cao hiệu suất của máy khách một cách trực tiếp và giảm thiểu thời gian giữ các khóa quan trọng bằng cách đảm bảo rằng các hoạt động jdbc chậm được thực hiện trong các luồng không khóa. Tuy nhiên, nếu một số tác vụ này bị "treo", tức là chúng không thành công hoặc không thành công với Ngoại lệ trong một thời gian dài, nhóm luồng của c3p0 có thể cạn kiệt và các tác vụ quản trị được sao lưu. Nếu các tác vụ chỉ đơn giản là chậm, cách tốt nhất để giải quyết vấn đề là tăng số lượng chuỗi, thông qua numHelperThreads . Nhưng nếu các tác vụ đôi khi bị treo vô thời hạn, bạn có thể sử dụng tham số này để buộc gọi phương thức ngắt () của chuỗi tác vụ nếu một tác vụ vượt quá giới hạn thời gian đã đặt. [c3p0 cuối cùng vẫn sẽ khôi phục từ các tác vụ bị treo bằng cách báo hiệu "KHÓA THIẾT BỊ CHẾT" (bạn sẽ thấy nó như một cảnh báo trong nhật ký), thay thế các chuỗi nhiệm vụ nhóm luồng và ngắt () nhập các chuỗi ban đầu. Nhưng việc để pool đi vào APPARENT DEADLOCK và sau đó khôi phục có nghĩa là trong một số khoảng thời gian, hiệu suất của c3p0 sẽ bị suy giảm. Vì vậy, nếu bạn thấy những thông báo này, việc tăng numHelperThreads và đặt maxAdministrativeTaskTime có thể hữu ích . maxAdministrativeTaskTime phải đủ lớn để mọi nỗ lực có thể thực hiện được để lấy Kết nối từ cơ sở dữ liệu, để kiểm tra Kết nối, hoặc hai là phá huỷ Kết nối, đều có thể thành công hoặc thất bại trong khoảng thời gian đã đặt. Không (mặc định) có nghĩa là các tác vụ không bao giờ bị gián đoạn, đây là chính sách tốt nhất và an toàn nhất trong hầu hết các trường hợp. Nếu nhiệm vụ chỉ chậm, hãy phân bổ nhiều chủ đề hơn. Nếu các tác vụ bị treo mãi mãi, hãy cố gắng tìm hiểu lý do và có thể việc đặt maxAdministrativeTaskTime có thể hữu ích trong thời gian chờ đợi.

The default is 3 for numHelperThreads , increase this to 8-10 

setting maxAdministrativeTaskTime will help 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL find_in_set với nhiều chuỗi tìm kiếm

  2. SQLSTATE [HY093]:câu lệnh pdo trong khi chèn vào mysql db

  3. Tạo ứng dụng web từ Scratch bằng Python Flask và MySQL:Phần 5

  4. Python MySQL sai kiến ​​trúc lỗi

  5. Lỗi:Hết thời gian chờ không hoạt động bắt tay trong mô-đun Node.js MYSQL