Penyelesaian untuk menghentikan php-cgi di bawah Linux ialah: tukar item konfigurasi nginx, kurangkan bilangan permintaan FastCGI, dan cuba pastikan penimbal tidak berubah, seperti [fastcgi_buffer_size 128k;].
Persekitaran pengendalian artikel ini: linux 5.9.8, php 7, komputer thinkpad t480.
Kata Pengantar:
Saya secara tidak sengaja mendapati bahawa pelayan dalam pengeluaran (centos 5.2 64-bit memori 4G) sentiasa menghadapi masalah bahawa tapak web tidak dapat dibuka. Kemudian, saya pergi ke pelayan untuk menyemak dan mendapati bahawa kedua-dua nginx dan php-cgi sedang berjalan, tetapi penggunaan cpu php-cgi ialah 0 pada masa ini. Jadi saya segera menyemak had pemegang fail:
ulimit -n
Hasilnya ialah: 1024, yang terlalu kecil untuk perkhidmatan dalam pengeluaran.
Kebanyakan penyelesaian yang diberikan dalam talian adalah dengan memasukkan terus
ulimit -SHn 51200 # 51200可自己根据应用调整
Kelemahan kaedah ini jelas apabila anda log keluar, tetapan akan menjadi tidak sah.
Dikatakan juga bahawa anda boleh menulis arahan terus ke /etc/rc.d/rc.local Hari ini saya menemui cara yang betul untuk melakukannya /limits.conf. Terdapat ulasan yang sangat terperinci Cari tetapan berikut (masukkan jika tidak tersedia)
Kod adalah seperti berikut
Log masuk semula selepas keluar dan semak nombor. daripada pemegang Ia telah ditetapkan dengan betul kepada 51200.* soft nofile 51200 * hard nofile 51200
Jika anda menghadapi situasi yang sama, anda boleh menyemak sama ada bilangan pemegang fail ditetapkan terlalu kecil.
Penyelesaian kepada 502 Bad Gateway apabila mengakses
Nginx 502 Bad Gateway bermakna php-cgi yang diminta telah dilaksanakan, tetapi atas sebab tertentu (biasanya masalah dengan sumber bacaan) Pelaksanaannya tidak selesai dan proses php-cgi ditamatkan. Secara amnya, tapak web dengan konkurensi yang terlalu tinggi terdedah kepada ralat ini. Terdapat banyak sebab mengapa 502 Bad Gateway muncul, tetapi kebanyakan orang boleh menyelesaikannya dengan mengubah suai parameter di bawah.
Tukar beberapa item konfigurasi nginx untuk mengurangkan bilangan permintaan FastCGI dan cuba pastikan penimbal tidak berubah:
Kod adalah seperti berikut
Buka /usr /local/php /etc/php-fpm.conf fail, ubah suai parameter berikut:fastcgi_buffer_size 128k; fastcgi_buffers 2 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k;
Kod adalah seperti berikut
request_terminate_timeout merujuk kepada masa skrip pelaksanaan fast-cgi , yang lalai kepada 0s. Maksud 0s ialah membiarkan php-cgi terus dilaksanakan tanpa had masa. Jika anda menetapkannya kepada 0s di sini, maka apabila 502 Bad Gateway muncul, status 502 akan diteruskan dan tidak akan berubah. Tetapi jika anda menetapkannya kepada 5s, maka php-cgi akan pulih secara automatik selepas 5s. Nilai ini boleh ditetapkan mengikut prestasi pelayan anda Di sini saya menetapkannya kepada 60s.25 requests">2048 65535 30s 60s
max_children mewakili proses pemprosesan php-cgi. Jika max_children ditetapkan kepada nilai yang lebih kecil, seperti 5-10, maka php-cgi akan menjadi "sangat letih", kelajuan pemprosesan akan menjadi sangat perlahan, dan masa menunggu akan menjadi lebih lama. Jika permintaan tidak diproses untuk masa yang lama, ralat 504 Gateway Time-out akan berlaku. Menetapkan max_children juga perlu ditetapkan mengikut prestasi pelayan Apabila bilangan proses meningkat, penggunaan memori akan meningkat mengikut keadaan biasa, memori yang digunakan oleh setiap php-cgi adalah kira-kira 20M 25.
Kaedah pemprosesan statik lalai php-fpm akan menyebabkan proses php-cgi menduduki memori untuk masa yang lama dan tidak boleh dikeluarkan Ini juga merupakan salah satu sebab ralat nginx, jadi anda boleh menukar kaedah pemprosesan php-fpm ke mod seperti apache.
Selepas pengubahsuaian selesai, laksanakan lu-mula semula (sistem pengurusan pelayan LuManager).
Pembelajaran yang disyorkan:
latihan phpAtas ialah kandungan terperinci Apa yang perlu dilakukan jika php-cgi berhenti di bawah Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!