Tôi đang viết một servlet Java mà tôi dự định triển khai trên Amazon AWS bằng cách sử dụng Elastic Beanstalk. Các bài kiểm tra của tôi cho thấy mọi thứ chạy tốt bằng cách sử dụng một cá thể EC2 nhỏ bằng cách sử dụng AMI của Tomcat mà Beanstalk sử dụng.Phân bổ một vùng heap Java cho Tomcat trên một cá thể EC2
Tôi đang cố gắng tìm ra cách phân bổ đúng không gian vùng Java cho cấu hình này. Một thể hiện nhỏ có bộ nhớ 1.7 GB, vì vậy tôi nghĩ rằng một heap 1024MB sẽ hoạt động tốt. Tôi nhận ra rằng bộ nhớ sẽ cần thiết cho những thứ khác mặc dù mục đích "thực sự" duy nhất của cá thể này là chạy Tomcat. Và tôi cũng biết rằng có một số điểm với đống lớn nơi Sun/Oracle JVM tiêu chuẩn không thực sự hoạt động.
Đây có phải là cách hợp lý để cấp phát bộ nhớ không? Tôi có nên sử dụng nhiều hơn hoặc ít hơn không? Tôi có thể sử dụng công cụ nào để giúp xác định cấu hình tối ưu?
Cảm ơn bạn đã nhập. Tôi sẽ không đi sâu vào chi tiết về ứng dụng của chúng tôi. Nó cho phép người dùng xem thông tin về các chủ đề khác nhau, và sau đó có thể thêm thông tin cho họ. Một số thông tin về các chủ đề được tạo động từ cơ sở dữ liệu trong khi hầu hết là dữ liệu tĩnh mà chúng ta đọc từ các tệp lúc khởi động và được lưu giữ trong cấu trúc dữ liệu của riêng chúng ta trên heap. Tất cả cùng nhau, đó là khoảng 250-300 MB giá trị của dữ liệu. Tôi đoán rằng khi chúng tôi thực sự chạy, chúng tôi sẽ có vài chục nghìn người dùng mỗi ngày. –
Trong dự án AWS trước đây của tôi, tôi đã cố gắng kiểm soát mọi thứ. Đối với dự án này, tôi quyết định tôi cần dành nhiều thời gian hơn cho ứng dụng "thực sự" và cách tiếp thị nó và không phải công việc CNTT đơn giản, vì vậy tôi chỉ đơn giản là sử dụng Stock Beanst. Điều đó có nghĩa là sử dụng AMI cổ phiếu của họ là Linux và Elastic Load Balancer. Có một số lý do tại sao bạn đang sử dụng mod_jk để phân phối tải thay vì ELB? Vì vậy, cho điều này, tại sao bạn nghĩ rằng 1024 là một chút quá nhiều? Điều đó để lại 700MB cho mọi thứ khác, mà thực sự không có gì khác ngoài các nhiệm vụ hệ điều hành tiêu chuẩn. Tôi đang xem xét điều này một cách chính xác? –
@SanderSmith Tôi vẫn đang sử dụng ELB nhưng tôi đang sử dụng nó để cân bằng giữa 2 trường hợp máy chủ web apache nhỏ. Sau đó mod_jk được sử dụng từ các cá thể máy chủ web apache của tôi để phân phối tải cho các cá thể tomcat của tôi. Apache là tốt hơn trong việc phục vụ tài nguyên tĩnh và xử lý SSL tốt hơn, đó là lý do tại sao tôi đang sử dụng chúng. Tôi đoán điều tốt nhất bạn có thể làm là kiểm tra tải và đưa ra quyết định của bạn từ đó. Nếu ứng dụng của bạn đang mong nhận được 10 nghìn người dùng mỗi ngày, tôi không nghĩ rằng một cá thể ec2 nhỏ sẽ đủ cho dù bạn điều chỉnh JVM như thế nào –