Mengalami beberapa masalah dengan httpd( Apache/2.2.29) penggunaan memori.
Seiring waktu, penggunaan memori dalam httpdproses meningkat hingga akhirnya mencapai 100%.
Terakhir kali saya memulai kembali httpdadalah sekitar 24 jam yang lalu. Output dari free -madalah:
[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 httpddan berlari free -mlagi:
[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_wsgidan 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 MaxClientsyang 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.smallcontoh Amazon AWS ) memiliki 1.7 GbRAM. Jadi, oleh karena itu:
Adakah petunjuk / saran lebih lanjut tentang cara terbaik untuk mengubah httpdpengaturan atau cara mendiagnosis apa yang sebenarnya menyebabkan hal ini?
nginxjadi 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/cachebarisnya; 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.