PHP-FPM سيٽ اپ: وڌ کان وڌ ڪارڪردگي لاءِ pm جامد استعمال ڪريو

PHP-FPM سيٽ اپ: وڌ کان وڌ ڪارڪردگي لاءِ pm جامد استعمال ڪريو

هن آرٽيڪل جو هڪ اڻ سڌريل نسخو اصل ۾ شايع ڪيو ويو haydenjames.io ۽ هن جي اجازت سان هتي شايع ڪيو ليکڪ.

مان توهان کي مختصر طور تي ٻڌايان ٿو ته PHP-FPM کي ترتيب ڏيڻ لاءِ ڪيئن بهترين طريقي سان ٺهڪندڙ طريقي سان وڌاءُ، دير جي گھٽتائي کي گهٽائڻ، ۽ سي پي يو ۽ ميموري کي وڌيڪ مسلسل استعمال ڪرڻ لاءِ. ڊفالٽ طور، پي ايم (پروسيس مينيجر) لائن PHP-FPM ۾ آهي متحرڪ، ۽ جيڪڏهن توهان وٽ ڪافي ياداشت نه آهي، پوء اهو بهتر آهي انسٽال ڪرڻ طلب. اچو ته php.net دستاويزن جي بنياد تي 2 ڪنٽرول اختيارن جو مقابلو ڪريون ۽ ڏسو ته ڪيئن منهنجو پسنديده انهن کان مختلف آهي جامد pm وڏي مقدار جي ٽرئفڪ لاءِ:

pm = متحرڪ - ٻارن جي عملن جو تعداد متحرڪ طور ھيٺ ڏنل هدايتن جي بنياد تي ترتيب ڏنو ويو آھي: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm = طلب - پروسيس مطالبن تي ٺاهيا ويا آهن (جيئن متحرڪ تخليق جي مخالفت، جڏهن pm.start_servers شروع ڪيا ويندا آهن جڏهن خدمت شروع ٿئي ٿي).
pm = جامد - ٻار جي عملن جو تعداد مقرر ڪيو ويو آھي ۽ پيٽرولر طرفان اشارو ڪيو ويو آھي pm.max_children.

تفصيل لاءِ، ڏسو عالمي هدايتن جي مڪمل فهرست php-fpm.conf.

PHP-FPM پروسيس مئنيجر ۽ سي پي يو فریکوئنسي ڪنٽرولر جي وچ ۾ هڪجهڙائي

اهو ٿي سگهي ٿو آف ٽاپڪ لڳي، پر مان هن کي PHP-FPM ترتيب جي موضوع سان ڳنڍڻ وارو آهيان. جنهن کي گهٽ ۾ گهٽ هڪ ڀيرو پروسيسر جي سستي جو تجربو نه ڪيو آهي - هڪ ليپ ٽاپ، ورچوئل مشين يا وقف سرور تي. سي پي يو فریکوئنسي اسڪيلنگ ياد رکو؟ اهي اختيارن لاء موجود آهن nix ۽ ونڊوز سسٽم جي ڪارڪردگي ۽ ردعمل کي بهتر ڪري سگھن ٿا پروسيسر جي ٿلهي سيٽنگ کي تبديل ڪندي طلب تي ڪارڪردگي *. هن ڀيري، اچو ته بيانن جو مقابلو ڪريون ۽ هڪجهڙائي ڏسو:

گورنر = طلب - موجوده لوڊ تي منحصر پروسيسر جي فريڪئنسي جي متحرڪ اسڪيلنگ. تيزيءَ سان وڌ ۾ وڌ فریکوئنسي ڏانهن وڌي ٿو ۽ پوءِ ان کي گھٽائي ٿو جيئن غيرفعاليت جي مدي ۾ واڌارو.
گورنر = قدامت پسند = متحرڪ تعدد اسڪيلنگ موجوده لوڊ تي منحصر ڪري ٿو. وڌاءُ ۽ گھٽائي ٿو تعدد وڌيڪ آسانيءَ سان ondemand کان.
گورنر = ڪارڪردگي - تعدد هميشه وڌ ۾ وڌ آهي.

تفصيل لاءِ، ڏسو پروسيسر فریکوئنسي ريگيوليٽر پيٽرولر جي مڪمل فهرست.

هڪجهڙائي ڏسو؟ مان هن مقابلي کي ڏيکارڻ چاهيان ٿو توهان کي قائل ڪرڻ لاءِ ته اهو استعمال ڪرڻ بهتر آهي pm جامد PHP-FPM لاءِ.

پروسيسر ريگيوليٽر پيٽرولر لاء ڪارڪردگي ڪارڪردگي کي محفوظ طور تي وڌائڻ ۾ مدد ڪري ٿي ڇاڪاڻ ته اهو تقريبن مڪمل طور تي سرور جي سي پي يو جي حد تي منحصر آهي. ان کان علاوه، يقينا، اهڙا عنصر پڻ آهن جهڙوڪ درجه حرارت، بيٽري چارج (ليپ ٽاپ ۾) ۽ پروسيسر کي 100٪ تي مسلسل هلائڻ جا ٻيا ضمني اثرات. ڪارڪردگي جي جوڙجڪ تيز ترين پروسيسر جي ڪارڪردگي کي يقيني بڻائي ٿي. پڙهو، مثال طور، بابت Raspberry Pi ۾ force_turbo پيٽرول، جنهن سان RPi پينل ريگيوليٽر استعمال ڪندو ڪارڪردگي، جتي ڪارڪردگي بهتري وڌيڪ نمايان ٿيندي گهٽ CPU گھڙي جي رفتار جي ڪري.

وڌ ۾ وڌ سرور ڪارڪردگي حاصل ڪرڻ لاءِ pm جامد استعمال ڪريو

PHP-FPM آپشن pm جامد گهڻو ڪري سرور تي مفت ياداشت تي منحصر آهي. جيڪڏهن ياداشت گهٽ آهي، اهو چونڊڻ بهتر آهي طلب يا متحرڪ. ٻئي طرف، جيڪڏهن توهان وٽ ياداشت آهي، ته توهان پي ايڇ پي پروسيس مينيجر اوور هيڊ کان پاسو ڪري سگهو ٿا pm سيٽنگ ڪندي جامد وڌ ۾ وڌ سرور جي گنجائش تائين. ٻين لفظن ۾، جيڪڏھن سڀڪنھن شيء کي چڱي طرح ڳڻيو ويو آهي، توهان کي قائم ڪرڻ جي ضرورت آهي pm.static PHP-FPM عملن جي وڌ ۾ وڌ مقدار تائين جيڪو عمل ڪري سگھجي ٿو، گھٽ ياداشت يا ڪيش سان مسئلا پيدا ڪرڻ کان سواء. پر ايترو وڏو ناهي ته اهو پروسيسرز کي ختم ڪري ٿو ۽ PHP-FPM عملن جو هڪ گروپ گڏ ڪري ٿو جيڪو عمل ٿيڻ جي انتظار ۾ آهي..

PHP-FPM سيٽ اپ: وڌ کان وڌ ڪارڪردگي لاءِ pm جامد استعمال ڪريو

مٿي ڏنل اسڪرين شاٽ ۾، سرور آهي pm = جامد ۽ pm.max_children = 100, ۽ اهو لڳ ڀڳ 10 GB لڳندو آهي موجود 32 مان. نمايان ٿيل ڪالمن تي ڌيان ڏيو، هتي سڀ ڪجهه واضح آهي. ھن اسڪرين شاٽ ۾ تقريباً 200 فعال استعمال ڪندڙ آھن (60 سيڪنڊن کان وڌيڪ) Google Analytics ۾. هن سطح تي، تقريبن 70٪ PHP-FPM ٻارن جا عمل اڃا تائين بيڪار آهن. هن جو مطلب آهي ته PHP-FPM هميشه سرور وسيلن جي وڌ ۾ وڌ مقدار تي مقرر ڪيو ويو آهي موجوده ٽرئفڪ جي بغير. هڪ بيڪار عمل ٽرئفڪ جي چوٽي جو انتظار ڪري ٿو ۽ فوري طور تي جواب ڏئي ٿو. توهان کي انتظار ڪرڻ جي ضرورت ناهي جيستائين pm ٻار جي عمل کي ٺاهيندو ۽ پوء انهن کي ختم ڪري ڇڏيندو جڏهن مدت ختم ٿي ويندي pm.process_idle_timeout. مون قيمت مقرر ڪئي تمام اعلي pm.max_requestsڇاڪاڻ ته هي هڪ ڪم ڪندڙ سرور آهي جنهن ۾ PHP ۾ ميموري ليڪ ناهي. توهان انسٽال ڪري سگهو ٿا pm.max_requests = 0 جامد سان جيڪڏهن توهان موجوده ۽ مستقبل جي PHP اسڪرپٽ ۾ مڪمل طور تي يقين رکو ٿا. پر اهو بهتر آهي ته لکت کي وقت سان گڏ ٻيهر هلايو وڃي. درخواستن جو وڏو تعداد مقرر ڪريو، ڇاڪاڻ ته اسان غير ضروري پي ايم جي خرچن کان بچڻ چاهيون ٿا. مثال طور، گهٽ ۾ گهٽ pm.max_requests = 1000 - مقدار تي منحصر ڪري ٿو pm.max_children ۽ في سيڪنڊ درخواستن جو تعداد.

اسڪرين شاٽ حڪم ڏيکاري ٿو لينڪس مٿي, u (user) ۽ PHP-FPM يوزرنيم طرفان فلٽر ٿيل. صرف پھريون 50 يا پوءِ عمل ڏيکاريا ويا آھن (مون صحيح طور تي شمار نه ڪيو آھي)، پر بنيادي طور تي مٿين انگن اکرن کي ڏيکاري ٿو جيڪي ٽرمينل ونڊو ۾ مناسب آھن. ھن حالت ۾، ترتيب ڏنل %CPU. سڀني 100 PHP-FPM عملن کي ڏسڻ لاء، حڪم جاري ڪريو:

top -bn1 | grep php-fpm

جڏهن استعمال ڪرڻ لاء pm ondemand ۽ متحرڪ

جيڪڏهن توهان pm استعمال ڪريو متحرڪهيٺيون غلطيون ٿينديون آهن:

WARNING: [pool xxxx] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4 idle, and 59 total children

ڪوشش ڪريو پيٽرول کي تبديل ڪريو، غلطي دور نه ٿيندي، جهڙوڪ سرورفالٽ تي هن پوسٽ ۾ بيان ڪيو ويو آهي. انهي صورت ۾، pm.min جي قيمت تمام ننڍي هئي، ۽ جيئن ته ويب ٽرئفڪ تمام گهڻو مختلف آهي ۽ اعلي چوٽيون ۽ گندي واديون آهن، ان کي مناسب طور تي ترتيب ڏيڻ ڏکيو آهي pm. متحرڪ. عام طور تي pm استعمال ڪيو ويندو آهي طلب, جيئن ته ساڳئي پوسٽ ۾ صلاح ڏني وئي آهي. پر اهو به وڌيڪ خراب آهي، ڇاڪاڻ ته طلب بيڪار عملن کي صفر تي ختم ڪري ٿو جڏهن گهٽ يا گهٽ ٽريفڪ نه آهي، ۽ توهان اڃا تائين ٽريفڪ کي تبديل ڪرڻ جي اوور هيڊ سان ختم ڪنداسين. جيستائين، يقينا، توهان هڪ وڏو انتظار جو وقت مقرر ڪيو. ۽ پوء ان کي استعمال ڪرڻ بهتر آهي pm.static + وڏو نمبر pm.max_requests.

PM متحرڪ ۽ خاص طور تي طلب ڪم ۾ اچي سگھي ٿو جيڪڏھن توھان وٽ گھڻا PHP-FPM پول آھن. مثال طور، توهان ڪيترن ئي cPanel اڪائونٽن يا ڪيترن ئي ويب سائيٽن کي مختلف تلاءَ ۾ ميزباني ڪندا آهيو. مون وٽ هڪ سرور آهي، چئو، 100+ cpanel اڪائونٽس ۽ اٽڪل 200 ڊومينز، ۽ pm.static يا اڃا به متحرڪ مون کي بچائي نه سگهندا. توهان سڀني کي هتي جي ضرورت آهي طلبسڀ کان پوء، ويب سائيٽن جي ٻن ٽين کان وڌيڪ گهٽ يا گهٽ ٽرئفڪ حاصل ڪري ٿي، ۽ ان سان گڏ طلب سڀ ٻار عمل بند ٿي ويندا، جيڪو اسان کي تمام گهڻو ياداشت بچائيندو! خوشقسمتيء سان، cPanel ڊولپرز هن کي محسوس ڪيو ۽ قيمت کي ڊفالٽ تي مقرر ڪيو طلب. اڳي، جڏهن ڊفالٽ هو متحرڪ, PHP-FPM بلڪل به مصروف شيئر سرورز لاءِ مناسب نه هو. ڪيترائي استعمال ڪيا آهن suPHP، ڇاڪاڻ ته شام متحرڪ استعمال ٿيل ميموري جيتوڻيڪ بيڪار تلاءَ ۽ cPanel PHP-FPM اڪائونٽن سان. گهڻو ڪري، جيڪڏهن ٽرئفڪ سٺي آهي، توهان کي وڏي تعداد ۾ PHP-FPM پولز (شيئر ٿيل هوسٽنگ) سان سرور تي ميزباني نه ڪئي ويندي.

ٿڪل

جيڪڏھن توھان PHP-FPM استعمال ڪري رھيا آھيو ۽ توھان جو ٽرئفڪ بھاري آھي، پروسيس مينيجرز طلب и متحرڪ PHP-FPM لاءِ انهن جي موروثي اوور هيڊ جي ڪري محدود ٿي ويندو. توھان جي سسٽم کي سمجھو ۽ PHP-FPM پروسيس کي وڌ ۾ وڌ سرور جي گنجائش مطابق ترتيب ڏيو. پهريون سيٽ pm.max_children وڌ ۾ وڌ پي ايم جي استعمال تي منحصر آهي متحرڪ يا طلب، ۽ پوءِ ھن قدر کي ھڪڙي سطح تائين وڌايو جتي ميموري ۽ پروسيسر اوورلوڊ ٿيڻ کان سواءِ ڪم ڪندو. توهان انهي سان گڏ نوٽيس ڪنداسين pm جامد, جيئن ته توهان وٽ هر شيءِ ياداشت ۾ آهي، ان ڪري ٽريفڪ اسپيڪس سبب ٿينديون آهن گهٽ سي پي يو اسپيڪس وقت سان، ۽ سرور ۽ سي پي يو لوڊ اوسط سطح کان ٻاهر ٿي ويندا. سراسري PHP-FPM پروسيس سائيز جو دارومدار ويب سرور تي آهي ۽ دستي ترتيب جي ضرورت آهي، تنهنڪري وڌيڪ خودڪار پروسيس مينيجرز آهن متحرڪ и طلب - وڌيڪ مشهور. مون کي اميد آهي ته مضمون مفيد هو.

يو ايس ڊي شامل ڪيل بينچ مارڪ چارٽ ab. جيڪڏهن PHP-FPM عمل ميموري ۾ آهن، ڪارڪردگي ميموري جي استعمال جي خرچ تي وڌي ٿي جتي اهي ويٺا ۽ انتظار ڪن. پنهنجو پاڻ لاء بهترين اختيار ڳوليو.

PHP-FPM سيٽ اپ: وڌ کان وڌ ڪارڪردگي لاءِ pm جامد استعمال ڪريو

جو ذريعو: www.habr.com

تبصرو شامل ڪريو