Apache menggunakan terlalu banyak memori server saya sehingga menyebabkan crash. Saya memiliki 4GB RAM di server.
Saya mencoba memperbaiki pengaturan Apache untuk meningkatkan kinerjanya, tetapi saya cukup baru dalam hal ini.
Saya mencoba mengikuti saran artikel ini tetapi saya tidak yakin bagaimana cara menghitungnya dan sepertinya saya memperburuknya.
Top saya berbunyi seperti:
11697 apache 15 0 322m 37m 4048 S 0.0 0.9 0:00.52 httpd
13602 apache 15 0 323m 37m 3944 S 0.0 0.9 0:00.50 httpd
11786 apache 15 0 322m 36m 4052 S 0.0 0.9 0:00.50 httpd
12525 apache 15 0 322m 36m 4040 S 0.0 0.9 0:00.63 httpd
11806 apache 15 0 322m 36m 3952 S 0.0 0.9 0:00.42 httpd
11731 apache 15 0 322m 36m 4036 S 0.0 0.9 0:00.46 httpd
11717 apache 16 0 322m 36m 3956 S 0.0 0.9 0:00.54 httpd
11659 apache 15 0 322m 36m 3980 S 0.0 0.9 0:00.49 httpd
Jadi itu akan terjadi
MaxClients = 3000/ (322-37) = 10
Apakah itu benar? Juga, apa yang harus menjadi nilai untuk parameter lain seperti MinSpareServers, MaxSpareServers, MaxRequestsPerChild, StartServers, MinSpareThreads, MaxSpareThreads, ThreadsPerChild, MaxRequestsPerChild?
Apakah seseorang tolong bantu saya?
Memperbarui
Saya sudah mencoba apa yang kalian sarankan. Ini bekerja, tetapi hanya untuk sementara waktu. Setelah beberapa waktu setelah server dimulai penggunaan memori terus meningkat dan tidak pernah turun.
Maksudku, setelah saya memulai server, mari kita asumsikan ada 500 pengguna online. Server akan mengkonsumsi X RAM. 2 jam setelah itu, dengan 500 pengguna yang sama secara online, server akan mengkonsumsi 10X RAM.
Apakah ada cara untuk menghindari ini atau saya harus tetap menonton server dan memulai kembali dari waktu ke waktu?
sumber
Jawaban:
Parameter utama untuk mengubah penggunaan memori Apache adalah
MaxClients
. Nilai terlalu rendah dan Anda akan kehabisan slot yang tersedia untuk melayani permintaan klien. Terlalu banyak dan Anda akan menggunakan semua RAM Anda dan mulai menggunakan ruang swap yang akan mematikan kinerja (ini mungkin tampak seperti server crash).Salah satu cara penyetelan
MaxClients
adalah dengan mengamati penggunaan memori sistem dan mengubah pengaturan naik / turun sesuai kebutuhan. Jika server mulai menukar, edit ke bawah. Jika server memiliki memori bebas, pasang.Anda juga dapat memperkirakan nilai maksimum dengan melihat penggunaan memori Apache. Mulai
top
dan tekanM
untuk mengurutkan proses berdasarkan memori. Anda harus melihat sesuatu seperti:Kurangi kolom RES dan SHR untuk mendapatkan perkiraan penggunaan memori per instance Apache. Dalam hal ini sekitar 16MB. Jika saya memiliki 4GB RAM dan berharap 3GB untuk digunakan untuk Apache, pengaturan MaxClients saya akan ada:
Jadi, dalam hal ini, saya mungkin mulai dengan nilai 150-200 tetapi saya akan menonton penggunaan memori dan jika itu mulai mendekati menggunakan swap saya akan mengurangi MaxClients 10-20%. Perhatikan juga bahwa nilai 3GB hanyalah contoh acak. Pada server yang hanya menjalankan Apache saya mungkin dapat menggunakan hampir semua 4GB. Dalam kasus lain saya mungkin hanya ingin 1 atau 2GB untuk Apache menyimpan sisanya untuk aplikasi lain, sistem atau cache.
Sunting: Menjawab Pertanyaan Tambahan
Pada umumnya tidak ada nilai ajaib MaxClients atau parameter konfigurasi Apache lainnya yang akan membuat server Anda tiba-tiba dua kali lebih cepat. Beberapa server akan tampak berjalan baik apakah MaxClients adalah 10 atau 1000. Ada dua kasus utama di mana pengaturan MaxClients "buruk":
Meskipun saya tidak tahu detail server, aplikasi, atau lalu lintas Anda, saya dapat menyarankan nilai konfigurasi berikut sebagai titik awal. Cobalah, pantau beban dan penggunaan server, dan ubah pengaturan sesuai kebutuhan.
sumber