2010-08-22 19 views
6

Tôi khá ấn tượng bởi những gì Lift 2.0 mang đến cho bảng với Actors và StatefulSnippets, vv, nhưng tôi hơi lo lắng về chi phí bộ nhớ của những thứ này. Câu hỏi của tôi là gấp đôi:Trạng thái quản lý Lift của Scala như thế nào?

  1. Làm cách nào để xác định thời điểm thu gom rác thải thu thập các đối tượng trạng thái?
  2. Dấu chân bộ nhớ của yêu cầu trang trông như thế nào?

Nếu trình thu thập dữ liệu web nhảy qua dấu chân của trang web, chúng có đang mở đủ đối tượng trạng thái để làm cạn kiệt một VPS khiêm tốn (512M) không? Câu hỏi này rất rõ ràng là phụ thuộc vào ứng dụng, nhưng tôi tò mò liệu có ai có bất kỳ nhân vật thế giới thực nào mà họ có thể ném ra cho tôi hay không.

Trả lời

12

Thông tin trạng thái của cửa hàng nâng trong phiên, do đó, khi phiên bị hủy, trạng thái được liên kết với phiên đó biến mất.

Trong phiên, hãy theo dõi từng trang được phân bổ cho (ví dụ: ánh xạ giữa nút ajax trong trình duyệt và chức năng trên máy chủ) và có nhịp tim từ trình duyệt. Các chức năng cho các trang không nhìn thấy nhịp tim trong 10 phút không được chấp nhận để JVM có thể thu gom chúng. Tất cả điều này là có thể điều chỉnh được, vì vậy bạn có thể thay đổi tần số nhịp tim, tuổi thọ chức năng, vv, nhưng trong thực tế các giá trị mặc định hoạt động khá tốt.

Về bùng nổ phiên, vâng ... đó là vấn đề nhỏ. Các trang web phổ biến (bao gồm http://demo.liftweb.net/) trải nghiệm nó. Mã ví dụ (xem http://github.com/lift/lift/tree/master/examples/example/) phát hiện các phiên được tạo bởi một yêu cầu duy nhất và sau đó bị hủy và hết hạn các phiên đó. Tôi đang chạy demo.liftweb.net với 256MB kích thước heap (có thể vừa với một VPS 512MB) và đôi khi, số phiên tăng hơn 1.000, nhưng điều đó nhanh chóng giảm xuống cho lưu lượng truy cập của công cụ tìm kiếm.

+2

Trả lời từ tác giả, tôi rất vinh dự. Cảm ơn các chi tiết và cho một dự án tuyệt vời! –

1

Tôi nghĩ câu hỏi về dấu chân bộ nhớ đã từng được trả lời ở đâu đó trong danh sách gửi thư, nhưng tôi không thể tìm thấy nó vào lúc này.

Thu gom rác được thực hiện sau một thời gian không hoạt động. Tuy nhiên, có một số example on the wiki sử dụng một số chẩn đoán tốt hơn để loại bỏ các phiên được sinh ra bởi trình thu thập dữ liệu web.

Tất nhiên, đối với dự án của riêng bạn, bạn nên kiểm tra mức tiêu thụ bộ nhớ bằng thứ gì đó như VisualVM trong khi sinh ra một vài phiên.

+0

Bạn chưa từng nghe nói về VisualVM, cảm ơn! –

+1

Đừng quên VisualGC bên trong công cụ jvmstat. –