Persekitaran setempat: sistem redhat6.7. nginx1.12.1, php7.1.0, kod menggunakan rangka kerja yii2
Soalan: Laman web tempatan perlu menggunakan perkhidmatan elasticsearch. Apabila PHP menggunakan elasticsearch yang dibina pada pelayan tempatan, beban tempatan adalah normal. Apabila saya menggunakan perkhidmatan elasticsearch AWS, beban pada pelayan tempatan selalunya terlalu tinggi. Semak log nginx dan php dan tidak mencari pengecualian. Bilangan sambungan serentak dalam sistem juga tidak tinggi. Pada masa ini, saya memikirkan alat diagnostik jejak yang bos kami beritahu saya.
Proses nyahpepijat:
Beban sistem pada masa itu:
proses debugging strace
Di sini kami mendapati bahawa apabila PHP memanggil elasticsearch, ia akan mencari fail secara setempat, dan fail ini tidak wujud. Ini mengakibatkan beban pelayan yang tinggi. Dengan membandingkan perbezaan antara aws elasticsearch dan kluster es tempatan. Saya mendapati bahawa hanya kaedah panggilan yang berbeza. Kod dipanggil menggunakan kaedah https, jadi ia akan mencari fail perpustakaan sijil secara setempat. Saya segera menghubungi pasukan pembangunan dan menukar kaedah panggilan kepada http Selepas memerhati untuk tempoh masa, beban pelayan kembali normal.
strace -T -e access -p 1379
Atas ialah kandungan terperinci Rakam sekali dan gunakan strace untuk mendiagnosis masalah PHP menduduki terlalu banyak sumber sistem.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!