Avatar
0
toilahtc Beginner
toilahtc Beginner
Hỏi về giá trị của cấu hình hibernate
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

  • Answer
hibernateconfig
Remain: 5
1 Answer
Avatar
monkey Beginner
monkey Beginner
  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.

  1. 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)
  • 1
  • Reply
Vâng em cảm ơn anh. Để em xem lại ạ  –  toilahtc 1638391580000