Mengalami beberapa masalah dengan httpd
( Apache/2.2.29
) penggunaan memori.
Seiring waktu, penggunaan memori dalam httpd
proses meningkat hingga akhirnya mencapai 100%.
Terakhir kali saya memulai kembali httpd
adalah sekitar 24 jam yang lalu. Output dari free -m
adalah:
[ec2-user@www ~]$ free -m
total used free shared buffers cached
Mem: 1655 1415 239 0 202 424
-/+ buffers/cache: 788 866
Swap: 1023 4 1019
Untuk membuktikannya httpd
, saya memulai kembali httpd
dan berlari free -m
lagi:
[ec2-user@www ~]$ sudo service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[ec2-user@www ~]$ free -m
total used free shared buffers cached
Mem: 1655 760 894 0 202 360
-/+ buffers/cache: 197 1457
Swap: 1023 4 1019
Jadi, memulai ulang Apache membutuhkan memori bebas dari 239 Mb hingga 894 Mb - yang sepertinya merupakan lompatan besar .
Saya telah memeriksa daftar modul Apache yang saat ini diaktifkan (ada cukup banyak) dan dinonaktifkan / dihapus mod_wsgi
dan mod_perl
(keduanya tidak diperlukan untuk server ini, yang menjalankan aplikasi web berbasis PHP - Magento, khususnya).
Berdasarkan pada https://servercheck.in/blog/3-small-tweaks-make-apache-fly , saya telah menjalankan ps aux | grep 'httpd' | awk '{print $6/1024 " MB";}'
dan mendapatkan output berikut:
[root@www ~]# ps aux | grep 'httpd' | awk '{print $6/1024 " MB";}'
15.1328 MB
118.09 MB
127.449 MB
129.059 MB
117.734 MB
113.824 MB
125.062 MB
123.922 MB
119.855 MB
108.066 MB
136.23 MB
114.031 MB
113.27 MB
110.695 MB
102.113 MB
113.234 MB
186.816 MB
118.602 MB
0.835938 MB
Menjalankan alat diagnosis yang disarankan lainnya MaxClients
yang ps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
mengembalikan berikut ini:
[root@www ~]# ps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
110.212 MB
Server ini ( m1.small
contoh Amazon AWS ) memiliki 1.7 Gb
RAM. Jadi, oleh karena itu:
Adakah petunjuk / saran lebih lanjut tentang cara terbaik untuk mengubah httpd
pengaturan atau cara mendiagnosis apa yang sebenarnya menyebabkan hal ini?
nginx
jadi mungkin sudah saatnya kita mencobanya, tapi jujur, saya telah menggunakan Apache selama bertahun-tahun dan tidak pernah memiliki masalah besar. Magento benar-benar mengunyah memori.
grep httpd
(setidaknya untuk saya). Untuk memperbaikinya saya akan merekomendasikan untuk mengecualikan garis itu dari perhitungan seperti ini:ps aux | grep 'httpd' | grep -v grep | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
-/+ buffers/cache
barisnya; namun dalam hal ini perubahannya sebanding. Bergantung pada bagaimana apache disetel, apache mungkin dimulai hanya dengan beberapa proses yang siap untuk menangani permintaan; setelah periode banyak permintaan bersamaan mungkin akan ada lebih banyak proses bercabang untuk menangani beban. Jumlah proses idle juga dapat disetel. Jadi jika apache tumbuh menggunakan terlalu banyak memori, Anda perlu melakukan beberapa penyetelan.