Php-fpm mengumpulkan penggunaan memori yang tinggi

Aplikasi PHP di Heroku berjalan di bawah Manajer Proses FastCGI PHP-FPM dan berkomunikasi dengan server web Apache atau Nginx menggunakan protokol FastCGI

FPM menelurkan dan mengelola proses anak yang mengeksekusi kode aplikasi PHP yang sebenarnya. Masing-masing proses ini menangani satu permintaan dari server web pada satu waktu, yang berarti bahwa lebih banyak proses akan menghasilkan konkurensi yang lebih besar dan kinerja aplikasi yang lebih baik dengan kondisi lalu lintas yang lebih tinggi.

Konfigurasi berlaku untuk setiap proses anak yang menjalankan aplikasi, yang dapat menghabiskan memori hingga batas tersebut sebelum dihentikan

Pelanggan Heroku Enterprise dengan Premier atau Signature Success Plans dapat meminta panduan mendalam tentang topik ini dari tim Customer Solutions Architecture (CSA). Pelajari lebih lanjut tentang Sesi Pelatihan Pakar di sini atau hubungi eksekutif akun Salesforce Anda

Pengaturan dan perilaku default

PHP-FPM

PHP-FPM dikonfigurasi untuk dijalankan menggunakan mode pengelolaan proses static, yang berarti ia memunculkan sejumlah proses anak yang tetap. Ini adalah konfigurasi optimal untuk lingkungan seperti Heroku, di mana instance dyno sepenuhnya terisolasi dan memiliki alokasi RAM tetap

Jumlah proses anak untuk muncul (dikendalikan oleh pm.max_children pengaturan PHP-FPM) ditentukan menggunakan variabel lingkungan

memory_limit = 64M
0, yang secara otomatis diatur ke nilai yang sesuai oleh Heroku

memory_limit = 64M 0 default

Jika aplikasi Anda menggunakan beberapa buildpack, Anda harus memastikan bahwa buildpack PHP (sebagai buildpack bahasa utama aplikasi Anda) dijalankan setelah buildpack bahasa lain;

Misalnya, saat menggunakan buildpack

memory_limit = 64M
3 bersama dengan
memory_limit = 64M
4, default
memory_limit = 64M
0 akan salah jika buildpack
memory_limit = 64M
3 berjalan setelah buildpack
memory_limit = 64M
4

Saat mem-boot aplikasi, jenis dyno akan terdeteksi secara otomatis, dan variabel lingkungan

memory_limit = 64M
0 akan disetel ke jumlah RAM yang tersedia pada dyno dibagi dengan batas memori yang dikonfigurasi untuk setiap proses PHP

$ heroku ps:scale web=1:standard-2x
$ heroku logs
2020-02-06T14:52:40… heroku[web.1]: State changed from down to starting
2020-02-06T14:52:42… heroku[web.1]: Starting process with command `heroku-php-apache2`
2020-02-06T14:52:43… app[web.1]: Detected 1073741824 Bytes of RAM
2020-02-06T14:52:43… app[web.1]: PHP memory_limit is 128M Bytes
2020-02-06T14:52:43… app[web.1]: Starting php-fpm with 8 workers...
2020-02-06T14:52:43… app[web.1]: Starting httpd...
2020-02-06T14:52:44… heroku[web.1]: State changed from starting to up
_

Default di Heroku adalah default untuk masing-masing versi PHP;

Ini berarti bahwa di luar kotak, pengaturan berikut berlaku

Tipe DynoTersedia RAMPHP
memory_limit = 64M
9
memory_limit = 64M
0eco, basic, standard-1x512 MB128 MB4standard-2x1024 MB128 MB8performance-m2. 5 GB 128 MB 20 performa-l14 GB 128 MB 11211.
memory_limit = 64M
0 default ke 48 untuk versi PHP sebelum 7. 4

Untuk kompatibilitas mundur, default untuk tipe

$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2`
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
3 dyno tidak menggunakan seluruh jumlah memori yang tersedia untuk versi PHP sebelum 7. 4. Jika Anda ingin menggunakan jumlah proses yang lebih banyak daripada yang diberikan Heroku secara otomatis, gunakan teknik yang dijelaskan di bagian dokumen ini

Default ini sengaja dipilih untuk tidak meninggalkan "ruang kepala" apa pun untuk proses master PHP-FPM atau proses server web karena aplikasi sangat tidak mungkin menghabiskan seluruh batas memori mereka pada setiap permintaan dan pada saturasi penuh, yang berarti bahwa dynos sedikit berlebihan.

Untuk meningkatkan jumlah proses anak (dan dengan demikian jumlah permintaan yang dapat ditangani secara bersamaan), Anda cukup menurunkan pengaturan

memory_limit = 64M
9 aplikasi - batas memori adalah metode utama untuk menyesuaikan konkurensi aplikasi PHP di Heroku

Menyetel konkurensi menggunakan memory_limit = 64M _9

Mengonfigurasi memory_limit = 64M _9 untuk PHP-FPM

Menetapkan batas memori melalui
$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2`
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
_7

File konfigurasi

$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2`
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
7 yang berisi pengaturan batas memori dapat ditempatkan ke dalam aplikasi Anda, yang secara default adalah direktori tingkat atas aplikasi Anda. Misalnya, untuk menetapkan batas memori 64 MB untuk sebuah aplikasi,
$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2`
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
7 Anda akan memiliki konten berikut

memory_limit = 64M

Perhatikan baik-baik , yang digunakan di sini untuk menunjukkan megabita menggunakan akhiran “

php_value[memory_limit] = 64M
0”

Akar dokumen aplikasi Anda mungkin berbeda dari direktori tingkat atas aplikasi Anda jika Anda melakukannya

Jika Anda menerapkan aplikasi Anda dengan file ini dan melihat aplikasi Anda dimulai ulang, Anda kemudian akan melihat bahwa jumlah pekerja disesuaikan secara otomatis untuk batas memori yang diberikan, mis. g. untuk dyno standar-1x

$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2`
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up

File

$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2`
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
_7 tambahan di sub-direktori root dokumen tidak akan dievaluasi saat Heroku menentukan batas memori pada waktu boot dyno, tetapi berlaku saat runtime seperti yang didokumentasikan saat melayani permintaan ke file PHP di direktori tersebut, jadi ingatlah ini di

Pengaturan batas memori menggunakan konfigurasi PHP-FPM

Alih-alih file

$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2`
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
_7, Anda juga dapat menggunakan direktif
php_value[memory_limit] = 64M
5 atau
php_value[memory_limit] = 64M
6 untuk mengubah pengaturan
memory_limit = 64M
9. Misalnya, untuk menetapkan batas memori 64 MB untuk suatu aplikasi, Anda akan membuat file bernama e. g.
php_value[memory_limit] = 64M
8 dengan isi sebagai berikut

php_value[memory_limit] = 64M

Agar pengaturan ini berlaku, Anda perlu menggunakan opsi

php_value[memory_limit] = 64M
9 di perintah
php_value[memory_limit] = 64M
1 Anda sehingga konfigurasi dimuat

web: heroku-php-apache2 -F fpm_custom.conf

Jika Anda menerapkan aplikasi Anda dengan

php_value[memory_limit] = 64M
_8 baru dan
php_value[memory_limit] = 64M
1 yang diubah dan melihat aplikasi Anda dimulai ulang, Anda akan melihat bahwa jumlah pekerja disesuaikan secara otomatis untuk batas memori yang diberikan, mis. g. untuk dyno standar-1x

$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2 -F fpm_custom.conf`
2019-01-15T07:51:33.109122+00:00 app[web.1]: Using PHP-FPM configuration include 'fpm_custom.conf'
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up

Perubahan runtime dari memory_limit = 64M _9

Setiap perubahan yang dibuat pada batas memori saat runtime menggunakan

web: heroku-php-apache2 -F fpm_custom.conf
4 tidak akan memengaruhi konkurensi, karena batas memori yang digunakan untuk perhitungan ditentukan pada saat boot

Jika Anda memiliki banyak proses yang meningkatkan batas memori melebihi nilai konfigurasi awal saat runtime menggunakan

web: heroku-php-apache2 -F fpm_custom.conf
5, dan proses ini benar-benar menggunakan memori tambahan tersebut, Anda mungkin mendapatkan indikasi bahwa aplikasi Anda telah memulai paging ke disk, yang dapat menurunkan kinerja. Dalam hal ini, naikkan statis
memory_limit = 64M
9, atau atur
memory_limit = 64M
0 secara manual ke nilai yang lebih rendah

Dalam banyak kasus, mungkin diinginkan untuk memiliki batas memori yang lebih rendah untuk mencapai konkurensi yang lebih tinggi, dan menggunakan

web: heroku-php-apache2 -F fpm_custom.conf
5 untuk secara dinamis menetapkan batas yang lebih tinggi saat runtime hanya untuk beberapa jalur kode dalam aplikasi Anda yang untuk sementara memerlukan batas memori yang lebih tinggi

Menentukan batas memori yang sesuai

Jumlah memori yang dibutuhkan aplikasi Anda bergantung pada jumlah data yang diproses selama permintaan, dan berapa banyak data yang disimpan dalam memori pada saat yang sama. Tugas-tugas seperti pemrosesan gambar atau penanganan kumpulan hasil basis data yang besar biasanya membutuhkan banyak memori

Batas memori default 128 MB di PHP adalah default konservatif yang dimaksudkan untuk memberikan "ruang bernapas" yang cukup untuk hampir semua jenis aplikasi. Sepertinya kode Anda tidak menghabiskan banyak memori selama permintaan, jadi menurunkan batas adalah cara yang bagus untuk mengoptimalkan kinerja aplikasi Anda

Setelah Anda menentukan berapa penggunaan memori maksimum aplikasi Anda, jangan lupa untuk meninggalkan "ruang kepala" dalam jumlah yang wajar saat menetapkan batas untuk memungkinkan margin keamanan untuk pertumbuhan dan keadaan tak terduga (mis. g. kumpulan data yang terus bertambah dari waktu ke waktu)

Mengukur dan mengoptimalkan penggunaan memori secara lokal

Di mesin pengembangan Anda, Anda dapat menggunakan fungsi

web: heroku-php-apache2 -F fpm_custom.conf
_9 dalam kode Anda (biasanya menjelang akhir skrip) untuk menentukan memori puncak yang digunakan. Anda dapat, misalnya,
$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2 -F fpm_custom.conf`
2019-01-15T07:51:33.109122+00:00 app[web.1]: Using PHP-FPM configuration include 'fpm_custom.conf'
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
_0 di akhir kode Anda, menjalankan uji beban/fitur di atasnya, dan menentukan nilai tertinggi dalam file log tersebut e. g. menggunakan
$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2 -F fpm_custom.conf`
2019-01-15T07:51:33.109122+00:00 app[web.1]: Using PHP-FPM configuration include 'fpm_custom.conf'
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
_1

Pendekatan cepat dan mudah lainnya adalah menurunkan batas memori yang dikonfigurasi dalam PHP pada langkah selanjutnya (mis. g. 16 MB) hingga Anda mulai mendapatkan pesan kesalahan "batas memori terlampaui". Batas 64 MB seringkali merupakan taruhan yang aman dan akan menghasilkan proses pekerja dua kali lebih banyak dibandingkan dengan konfigurasi default

Saat melakukan tes beban secara lokal (menggunakan

$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2 -F fpm_custom.conf`
2019-01-15T07:51:33.109122+00:00 app[web.1]: Using PHP-FPM configuration include 'fpm_custom.conf'
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
2,
$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2 -F fpm_custom.conf`
2019-01-15T07:51:33.109122+00:00 app[web.1]: Using PHP-FPM configuration include 'fpm_custom.conf'
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
3,
$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2 -F fpm_custom.conf`
2019-01-15T07:51:33.109122+00:00 app[web.1]: Using PHP-FPM configuration include 'fpm_custom.conf'
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
4 atau serupa), Anda juga dapat mengamati jumlah memori yang dikonsumsi oleh proses
$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2 -F fpm_custom.conf`
2019-01-15T07:51:33.109122+00:00 app[web.1]: Using PHP-FPM configuration include 'fpm_custom.conf'
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
5 Anda menggunakan
$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2 -F fpm_custom.conf`
2019-01-15T07:51:33.109122+00:00 app[web.1]: Using PHP-FPM configuration include 'fpm_custom.conf'
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
6 atau
$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2 -F fpm_custom.conf`
2019-01-15T07:51:33.109122+00:00 app[web.1]: Using PHP-FPM configuration include 'fpm_custom.conf'
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
7

Untuk membuat profil aplikasi Anda dengan benar selama pengembangan, kami merekomendasikan XHProf. Xhprof pelengkap. io GUI membuat hasil profil navigasi menjadi mudah dan nyaman

Ingatlah untuk menggunakan kondisi realistis saat melakukan tes secara lokal, mis. g. menggunakan set hasil besar yang sesuai dari database. Juga sangat disarankan untuk mengaudit kode Anda untuk fungsi, loop, atau algoritme apa pun yang mungkin berskala tidak menguntungkan dengan peningkatan ukuran data input dan mengoptimalkannya sesuai dengan itu.

Mengukur penggunaan memori di Heroku

Di samping nuansa khusus platform, konsumsi memori aplikasi, dengan input yang sama, harus hampir identik antara lingkungan pengembangan lokal Anda dan Heroku, jadi disarankan untuk berupaya menemukan batas memori optimal dalam pengembangan terlebih dahulu

Fungsi log-runtime-metrics Heroku Labs akan secara berkala melaporkan konsumsi memori ke aliran

$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2 -F fpm_custom.conf`
2019-01-15T07:51:33.109122+00:00 app[web.1]: Using PHP-FPM configuration include 'fpm_custom.conf'
2019-01-15T07:51:33.188816+00:00 app[web.1]: Optimizing defaults for 1X dyno...
2019-01-15T07:51:33.370674+00:00 app[web.1]: 8 processes at 64MB memory limit.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up
8. Saat melakukan tes beban, penggunaan memori yang jauh lebih rendah daripada yang tersedia untuk masing-masing tipe dyno mungkin merupakan indikator bahwa batas memori Anda disetel terlalu tinggi. Coba turunkan batas untuk meningkatkan konkurensi dan dengan demikian penggunaan memori yang sebenarnya

Anda juga dapat memeriksa laporan dan grafik penggunaan memori dasar di bagian ikhtisar untuk aplikasi Anda di Dasbor Heroku. Perhatikan bahwa ini menampilkan nilai rata-rata di semua dyno yang sedang berjalan

Alat pemantauan kinerja aplikasi seperti New Relic akan merekam penggunaan memori dan melaporkannya untuk analisis Anda

Pipa Heroku membantu mengotomatiskan alur kerja untuk mempromosikan penerapan dari satu lingkungan ke lingkungan lain (mis. g. , dari pementasan hingga produksi). Hal ini memudahkan untuk mengukur dan mengoptimalkan perubahan pada penggunaan memori pada aplikasi non-produksi yang kemudian dapat Anda promosikan ke produksi saat perubahan sudah siap

Menyetel konkurensi secara manual

Jika Anda ingin menyetel secara manual jumlah proses anak yang menjalankan aplikasi Anda, Anda dapat menyesuaikan variabel lingkungan

memory_limit = 64M
0 dengan menyetel variabel konfigurasi

Misalnya, untuk secara statis mengatur jumlah proses anak menjadi 8, gunakan

$ heroku config:set WEB_CONCURRENCY=8
0

$ heroku config:set WEB_CONCURRENCY=8

Saat mengatur

memory_limit = 64M
_0 secara manual, pastikan nilainya dikalikan dengan
memory_limit = 64M
9 Anda tidak melebihi jumlah RAM yang tersedia pada tipe dyno Anda

Ini akan menyebabkan aplikasi Anda restart, dan dyno Anda akan melaporkan pengaturan statis selama startup

$ heroku logs
2019-01-15T07:51:24.476056+00:00 heroku[web.1]: State changed from down to starting
2019-01-15T07:51:30.765076+00:00 heroku[web.1]: Starting process with command `heroku-php-apache2 -F fpm_custom.conf`
2019-01-15T07:51:33.109122+00:00 app[web.1]: Using PHP-FPM configuration include 'fpm_custom.conf'
2019-01-15T07:51:33.370674+00:00 app[web.1]: Using WEB_CONCURRENCY=8 processes.
2019-01-15T07:51:33.414407+00:00 app[web.1]: Starting php-fpm...
2019-01-15T07:51:33.414423+00:00 app[web.1]: Starting httpd...
2019-01-15T07:51:35.865579+00:00 heroku[web.1]: State changed from starting to up

Jika Anda menyetel

memory_limit = 64M
0 ke nilai tetap, Anda mungkin harus menyesuaikannya saat menskalakan ke tipe dyno yang berbeda untuk memperhitungkan jumlah RAM yang tersedia pada tipe dyno yang baru

Bagaimana mencegah PHP

Kurangi Penggunaan Memori PHP-FPM. Setelah melakukan riset di Internet, kami menemukan bahwa kami perlu mengonfigurasi ulang manajer proses PHP-FPM dan aspek-aspek tertentu darinya untuk mengurangi konsumsi memori PHP-FPM dalam file konfigurasi kumpulan. The default pool is www and its configuration file is located at /etc/php-fpm.

Bagaimana cara mengurangi penggunaan memori di PHP?

Tips Peningkatan Performa dan Penggunaan Memori PHP .
Gunakan objek dengan properti yang dideklarasikan di atas larik
Hati-hati dengan referensi diri yang akan mencegah pemulung bekerja
Pembandingan PHP
Tolok ukur dan pengoptimalan PHP

Bagaimana cara memeriksa PHP

Simpan pertanyaan ini. Tampilkan aktivitas di postingan ini. total=0; . $total kb"; Penggunaan memori. 0 kb ps -ef. grep php akar 9435 1 0 11. 42 ?

Berapa batas maksimum memori PHP?

Batas_memori PHP adalah per-skrip, sama seperti batas memori standar yang cukup untuk aplikasi web apa pun. Pengaturan yang lebih rendah dari 128M. Jika skrip PHP mencoba menggunakan lebih dari 128M, skrip tersebut akan segera mengembalikan batas memori yang melampaui kesalahan