Proses Apache "httpd", menggunakan semua memori server saya

9

Contoh EC2 kecil saya dengan memori 1,7 GB, menjalankan Amazon AMI berbasis CentOS, memiliki masalah dengan Apache menggunakan terlalu banyak memori daripada seharusnya. Jika Anda melihat tangkapan layar, penggunaan memori akan berada pada 90-100% hingga saya mem-boot ulang layanan httpd, di mana ia akan memulai kembali, meningkatkan jalannya kembali hingga 90+%.

masukkan deskripsi gambar di sini

Saya akan sangat menghargai bantuan tentang cara menemukan masalah ini. Apakah ini mungkin perilaku apache "normal", untuk memanfaatkan semua memori yang tersedia? Atau ada kemungkinan kebocoran yang harus saya lakukan untuk memburu. Saat ini saya agak bingung apa yang mungkin terjadi.

Kami menggunakan prefork Apache MPM, dan tidak ada sql atau yang serupa - hanya apache. Situs webnya ada di sini .

Amivit
sumber
1
Tampaknya tidak menggunakan Swap jadi apa masalahnya?
HTTP500
Bukankah fakta bahwa menggunakan begitu banyak memori menjadi perhatian? Maaf pengalaman pemula saya, saya kira itu mungkin asumsi yang salah. Mungkin itu adalah perilaku normal dan bahwa Apache dirancang untuk menggunakan semua memori yang dapat diambilnya, meskipun merupakan situs web dengan lalu lintas rendah?
Amivit
1
Saya perhatikan bahwa Anda menggunakan NewRelic, yang juga dapat mencatat waktu yang dihabiskan di apache (mungkin membantu) jika Anda menambahkan baris ini ke conf httpd Anda: RequestHeader set X-Request-Start "%t"jika Anda belum melakukannya. Ini akan muncul sebagai "Permintaan Antrian" ketika Anda masuk ke App Server> Tinjauan Umum - mungkin membantu Anda sampai ke bagian bawah masalah.
KM.

Jawaban:

8

Seperti yang dikatakan HTTP500, Anda mungkin tidak perlu khawatir kecuali mesin benar-benar tersedak. Lihatlah Bantuan! Linux Makan RAM Saya! . Ini bukan situasi yang analog, karena Anda memiliki proses alih-alih buffer menggunakan RAM, tetapi tidak terlalu jauh: RAM fisik mesin Anda adalah sumber daya untuk digunakan, baik dengan buffer kernel atau proses pekerja Apache cadangan untuk segera menangani masuk permintaan. Jika Anda tidak menggunakan RAM, Anda membayar lebih untuk ukuran kotak Anda.

Bagaimanapun, jika Anda ingin bermain dengan pengaturan MPM, dokumentasi Apache adalah http://httpd.apache.org/docs/current/mod/prefork.html

Anda mungkin dapat mengurangi MinSpareServers, StartServers, dll, karena Anda telah menyatakan bahwa situs tersebut lalu lintasnya rendah. Anda kemudian akan memiliki lebih banyak RAM gratis untuk dikonsumsi oleh buffer kernel untuk tujuan jahat mereka.

cjc
sumber
4

linux menggunakan semua memori Anda adalah normal, memori yang tidak digunakan dinyatakan sebagai cache disk. lihat: linux eat my ram

Anda dapat memverifikasi ini dengan melihat output free -mdan berharap untuk melihat sesuatu seperti ini:

             total       used       free     shared    buffers     cached
Mem:          7889       6887        101          0        106       2307
-/+ buffers/cache:       5373       3416
Swap:         1903         17       1886

baris +/- buffer / cache adalah yang Anda inginkan. Ini menambahkan ram di-cache gratis untuk memberi Anda gambaran yang lebih baik tentang berapa banyak memori yang benar-benar tersedia. Dalam hal ini, Anda ingin memperhatikan angka 3416, bukan 101.

rebus
sumber