Hiện giờ khi em thực hiện import từ excel 1 số lượng lớn bản ghi thì em thấy rằng bị close connection giữa chừng dẫn đến việc import bị lỗi
Em thấy rằng khi em thay đổi giá trị
hibernate.dbcp.timeBetweenEvictionRunsMillis từ 60000 => 600000 thì không gặp tình trạng này nữa
Em có tìm hiểu thì biết được đoạn thông tin về giá trị này như sau
timeBetweenEvictionRunsMillis
The number of milliseconds to sleep between runs of the idle object evictor thread. When non-positive, no idle object evictor thread will be run.
Em muốn hỏi là cái giá trị này mang ý nghĩa thực sự như thế nào. Nếu để lên giá trị cao hơn thì có ảnh hưởng gì tới server không .
Em cảm ơn
1. First level cache của hibernate là dùng memory, vậy nên nó cần phải tìm cách tiết kiệm bộ nhớ bằng cách tìm cách đối tượng đã không hoạt động trong 1 thời gian dài hoặc các đối tượng vượt quá max memory mà hibernate sẽ sử dụng để tạm thời bỏ khỏi bộ nhớ. Và
timeBetweenEvictionRunsMillis
chính là khoảng thời gian sleep sau mỗi lần loop các đối tượng. Em không nên để dưới 1 giây vì thế nó sẽ chạy quá nhiều, mà khi số lượng đối tượng lên đến hàng triệu, hàng trăm triệu thì nó sẽ khiến cho cpu hoạt động liên tục, em nên để 5 giây đến 10 hay 60 giây là hợp lý. Để quá cao sẽ dẫn đến số lượng cần loop quá lớn hoặc bộ nhớ bị chiếm dụng sẽ quá lớn.2. Anh thấy hơi lạ tại sao
timeBetweenEvictionRunsMillis
lại gây ra lỗi. Anh nghĩ em nên kiểm tra lại việc import. Em nên ghi batch khoảng vài trăm bản ghi 1 lúc thôi, có thể sleep(1) millis sau mỗi batch để nhả CPU cho các phần khác (mặc dù không cần thiết lắm)Vâng em cảm ơn anh. Để em xem lại ạ