Kami memiliki server yang cukup banyak menjalankan nginx dan PHP-FPM. Kami memiliki 6 situs web di server ini, yang menjalankan PHP-FPM dan nginx. Perangkat lunak adalah semua vBulletin 3.8 dan WordPress. Database berada di server terpisah.
Sekarang, karena ini adalah situs web yang sangat populer, kami biasanya memiliki 7-8.000 pengunjung online pada satu waktu, dengan masing-masing halaman memukul database untuk sebagian besar. Saya percaya ini adalah penyebab masalah kita.
Karena kami memiliki begitu banyak basis data di server MySQL, dan karena pertanyaannya bisa, sejujurnya, jauh lebih baik dalam perangkat lunak, saya pikir MySQL kadang-kadang gagal mengembalikan hasil ke PHP pada waktu yang tepat, menciptakan efek kaskade yang pada akhirnya menyebabkan semuanya berhenti sampai kita memuat ulang PHP-FPM. Setelah kami melakukan itu, segalanya mulai berfungsi dengan baik lagi.
Alasan saya mengalami masalah dalam pemecahan masalah ini adalah karena saya tidak dapat benar-benar membedakan apa pun dari log. Dalam log permintaan lambat MySQL, saya melihat tidak ada yang menarik ketika downtime terjadi. Dalam log nginx, saya melihat ribuan entri mengatakan bahwa permintaan baca habis atau koneksi habis (Ke PHP-FPM). Dan dalam log PHP-FPM, saya melihat banyak baris yang mengatakan "waktu eksekusi habis (31 detik), mengakhiri
Jadi pada titik ini saya benar-benar tidak tahu ke mana harus mencari masalah. Jelas, apa pun yang terjadi sedang terjadi karena skrip ini kadang-kadang tidak menjalankan cukup cepat (Biasanya mereka memuat di bawah satu detik, tetapi sesuatu terjadi yang menyebabkan waktu buka meroket). Ini terjadi berkali-kali sehari dan telah menjadi masalah bagi kami.
Untuk saat ini saya hanya memiliki crontab untuk memuat ulang php5-fpm setiap 10 menit, yang menangani masalah mogok. Tentu saja, ketika PHP memuat ulang, nginx melempar kesalahan gateway 502, jadi itu bukan solusi.
PHP menjalankan cache APC, jika itu penting. Saya telah membaca di beberapa tempat bahwa APC dapat menyebabkan menggantung dalam keadaan tertentu.
Petunjuk apa pun akan sangat membantu. Saya benar-benar ingin tidak perlu khawatir dengan mesin ini sepanjang waktu.
Info lebih lanjut dapat diberikan tentunya. Beri tahu saya apa yang Anda butuhkan.
Pembaruan: Saya baru saja menyalin apc.php ke root web dan mengaksesnya untuk melihat statistik kami. Segalanya tampak bagus. Lalu saya mengklik tautan untuk pergi ke statistik Pengguna dan BOOM server langsung digantung. Saya memuat ulang php-fpm dan kemudian memuat kembali halaman statistik pengguna dan itu berjalan dengan baik. Menunggu satu menit, memuat ulang lagi, server hang lagi.
Jadi ini jelas terkait APC. Pertanyaannya adalah - Bagaimana cara memperbaikinya?
Konfigurasi APC:
[apc]
apc.enabled="1"
apc.stat = "1"
apc.max_file_size = "2M"
apc.localcache = "1"
apc.localcache.size = "256"
apc.shm_segments = "1"
apc.ttl = "3600"
apc.user_ttl = "7200"
apc.gc_ttl = "3600"
apc.cache_by_default = "1"
apc.filters = ""
apc.write_lock = "1"
apc.num_files_hint= "10000"
apc.user_entries_hint="10000"
apc.shm_size = "1G"
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.include_once_override = "0"
apc.file_update_protection="2"
apc.canonicalize = "1"
apc.report_autofilter="0"
apc.stat_ctime="0"
Pembaruan 2: Kami telah membuat beberapa kemajuan dalam hal ini di sini. Ternyata plugin caching WordPress (W3 Total Cache) adalah penyebab crash. Kami masih tidak tahu mengapa, tetapi dengan dinonaktifkan, kami telah menjalankan PHP selama hampir 4 jam sekarang tanpa memuat ulang, tanpa perlambatan, tanpa gangguan. Kami masih menggunakan APC di forum vBulletin dan tidak ada masalah sama sekali. Apakah ada cara kita dapat menentukan MENGAPA APC mogok? Saya ingin menggunakannya pada instalasi WordPress kami, tetapi tidak dengan biaya sistem yang rapuh.