Apache tải nặng VIRT so với bộ nhớ RES


8

Tôi có một máy chủ Debian 5, có rất nhiều lưu lượng. Hiện tại máy chủ có 4 GB RAM và không có bộ nhớ trao đổi. Tôi thấy rằng các quy trình Apache tiêu thụ khoảng 180 MB bộ nhớ ảo (VIRT) và 16 MB RAM thực (RES). Vậy tôi có thể chạy bao nhiêu luồng Apache cùng một lúc? Khoảng 4 GB / 180 MB = 22 hoặc 4 GB / 16 MB = 256?

Câu trả lời:


10

Kích thước bộ nhớ ảo không quan trọng bằng bộ thường trú của bạn. Bộ nhớ ảo sẽ bao gồm những thứ được ánh xạ như thư viện dùng chung và không có gì (sẽ chỉ tồn tại trong RAM vật lý một lần). RSS cho bạn biết những gì thực sự trong bộ nhớ, như Virt. cho bạn biết bao nhiêu không gian địa chỉ ảo có sẵn đã bị nuốt.

Tính toán thứ hai của bạn sẽ gần hơn, mặc dù nó khá thấp. Một máy chủ có 4GB RAM có thể chạy hơn 256 quy trình Apache. Tùy thuộc vào kiểu lưu lượng truy cập của bạn và giới hạn chờ IO, chạy hơn 256 có thể là một ý tưởng hay vì một số lượng tốt các quy trình đó có thể chỉ ngồi chờ đợi kernel chuyển dữ liệu từ thiết bị sang thiết bị. Ngoài ra, yếu tố trong những thứ như COW & thực tế là mọi thứ đều chỉ đến cùng một nhị phân 'httpd' và bạn sẽ nhận được nhiều hiệu quả hơn.

Bây giờ, hãy đi và xây dựng lại hệ thống của bạn với 2 GB dung lượng trao đổi tốt. Hoán đổi không chỉ hoạt động như "bộ nhớ chậm" nữa.

Như một từ chối trách nhiệm, đã lâu rồi kể từ khi tôi quan tâm đến các chi tiết cụ thể của quản lý bộ nhớ Linux, và có thể hơi lạc lõng với sự thật của tôi, nhưng ý chính là vững chắc!


Tại sao nó có thể chạy xa hơn 256 quá trình apache? Tôi có các ứng dụng 8Gb chỉ có thể chạy khoảng 8.
gcb

-1. "Một máy chủ có 4GB RAM có thể chạy hơn 256 quy trình Apache" với 16 MB cho mỗi quy trình, điều này sẽ gây ra sự hoán đổi, đó là tội lỗi theo tất cả các hướng dẫn hiệu suất mà tôi đã đọc về chủ đề này.

Điều gì xảy ra nếu bạn chạy heap 4 gb jvm (với các luồng không giới hạn) trên một hệ thống có tổng RAM 16Gb có sẵn và freebáo cáo rằng toàn bộ bộ nhớ đã đầy? 0 hoặc một vài bộ nhớ miễn phí 100mb? Một tỷ lệ tốt của bộ nhớ sử dụng / miễn phí cho một "container" jvm là gì ??
niken

1

Giá trị này chủ yếu dựa vào thử nghiệm với tải máy chủ hiện tại của bạn.

hãy thử thu thập một số dữ liệu với 'apache top'. Thực hiện một số thay đổi cấu hình và thử lại. Vì tôi không biết trường hợp sử dụng cụ thể của bạn, thật khó để đưa ra một số số liệu cụ thể.

Nếu bạn muốn tiêu thụ bộ nhớ dự đoán cho máy chủ web của mình, vui lòng xem tại http://wiki.nginx.org/Main

Nó giải quyết một số vấn đề về khả năng mở rộng một cách rất tuyệt vời.

Nó không đúng cho mọi trường hợp sử dụng, nhưng chắc chắn xem xét nó.

Bạn có thể triển khai nó để giảm tải cho cá thể apache của bạn. Nó phù hợp để phục vụ nội dung tĩnh và bộ đệm trong cấu hình proxy ngược, cũng như các tình huống tải cao khác.

Cho nó một vòng xoáy, nó miễn phí :-)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.