Apache beban berat VIRT vs memori RES

8

Saya memiliki server Debian 5, yang mendapat banyak lalu lintas. Saat ini server memiliki 4 GB RAM dan tidak ada memori swap. Saya melihat di atas bahwa proses Apache mengkonsumsi sekitar 180 MB memori virtual (VIRT) masing-masing, dan 16 MB RAM nyata (RES). Jadi berapa banyak utas Apache yang dapat saya jalankan pada saat yang sama? Tentang 4 GB / 180 MB = 22 atau 4 GB / 16 MB = 256?

pako
sumber

Jawaban:

10

Ukuran memori virtual tidak sepenting residen yang Anda tentukan. Memori virtual akan memasukkan hal-hal yang dipetakan di seperti shared library dan yang lainnya (yang hanya akan menjadi penghuni RAM fisik sekali). RSS memberi tahu Anda apa yang sebenarnya ada dalam memori, sedangkan Virt. memberi tahu Anda berapa banyak ruang alamat virtual yang tersedia telah ditelan.

Perhitungan kedua Anda akan lebih dekat, meskipun cukup rendah. Server dengan RAM 4GB dapat menjalankan lebih dari 256 proses Apache. Bergantung pada pola lalu lintas Anda dan pembatasan tunggu IO, menjalankan lebih dari 256 mungkin merupakan ide yang bagus karena sejumlah proses tersebut mungkin hanya menunggu untuk kernel menyekop data dari perangkat ke perangkat. Juga faktor dalam hal-hal seperti SAP & fakta bahwa semuanya menunjuk ke biner 'httpd' yang sama, dan Anda mendapatkan lebih banyak efisiensi.

Sekarang, pergi dan bangun kembali sistem Anda dengan 2GB ruang swap yang bagus. Swap tidak hanya bertindak sebagai "memori lambat" lagi.

Sebagai penafian, Sudah lama sejak saya tidak peduli dengan spesifik dari manajemen memori Linux, dan mungkin sedikit tidak memperhatikan fakta-fakta saya, tetapi intinya solid!

McJeff
sumber
mengapa ia dapat menjalankan lebih dari 256 proses apache? Saya punya aplikasi yang 8Gb hanya dapat berjalan sekitar 8
gcb
-1. "Sebuah server dengan 4GB RAM dapat menjalankan lebih dari 256 proses Apache" dengan 16MB per prosesnya, ini akan menyebabkan swapping, yang merupakan dosa utama menurut semua panduan kinerja yang pernah saya baca mengenai hal ini.
kambing
Apa yang terjadi jika Anda menjalankan 4 gb jvm heap (dengan utas tidak terbatas) pada sistem dengan total 16Gb RAM yang tersedia dan freemelaporkan bahwa seluruh memori penuh? 0 atau beberapa memori bebas 100MB? Apa rasio yang baik dari memori yang digunakan / bebas untuk "wadah" jvm ??
Niken
1

Nilai ini terutama untuk eksperimen dengan beban server Anda saat ini.

coba kumpulkan beberapa data dengan 'apache top'. Buat beberapa perubahan konfigurasi dan coba lagi. Seperti yang saya tidak tahu Anda menggunakan kasus tertentu sulit untuk datang dengan beberapa tokoh nyata.

Jika Anda ingin konsumsi memori yang dapat diprediksi untuk server web Anda, silakan lihat di http://wiki.nginx.org/Main

Ini memecahkan beberapa masalah skalabilitas dengan cara yang sangat keren.

Itu tidak tepat untuk setiap kasus penggunaan, tetapi tentu mempertimbangkannya.

Anda dapat menggunakannya untuk mengurangi beban pada instance apache Anda. Ini cocok untuk menyajikan konten statis dan cache dalam konfigurasi proxy terbalik, serta skenario beban tinggi lainnya.

Berputar, gratis :-)

Unix Janitor
sumber