কীভাবে পিএইচপি-এফপিএম র প্রতিরোধ করতে লিনাক্সে খুব বেশি র্যাম গ্রহণ করা থেকে


যদি আপনি একটি এলইএমপি (লিনাক্স, এনজিআইএনএক্স, মাইএসকিউএল/মারিয়াডিবি, এবং পিএইচপি) স্ট্যাক স্থাপন করেছেন তবে আপনি সম্ভবত পিএইচপি প্রসেসিংয়ের জন্য এনজিআইএনএক্সের মধ্যে (একটি এইচটিটিপি সার্ভার হিসাবে) ফাস্টসিজিআই প্রক্সিং ব্যবহার করছেন। পিএইচপি-এফপিএম (ফাস্টসিজিআই প্রক্রিয়া পরিচালকের সংক্ষিপ্ত রূপ) একটি বহুল ব্যবহৃত এবং উচ্চ-পারফরম্যান্স বিকল্প পিএইচপি ফাস্টসিজিআই বাস্তবায়ন।

লিনাক্সে এলইএমপি স্ট্যাক স্থাপনের জন্য দরকারী গাইড এখানে রয়েছে।

  • উবুন্টু 20.04 এ পিএইচপিএমইএডমিন সহ এলইএমপি স্ট্যাক কীভাবে ইনস্টল করবেন
  • CentOS 8
  • এ কীভাবে এলইএমপি সার্ভার ইনস্টল করবেন
  • ডেবিয়ান 10 সার্ভারে কীভাবে এলইএমপি ইনস্টল করবেন

সম্প্রতি, আমাদের এলইএমপি ওয়েব সার্ভারগুলির একটিতে আমাদের সমস্ত পিএইচপি ওয়েবসাইটগুলি ধীর হয়ে গেছে এবং শেষ পর্যন্ত সার্ভারে লগ ইন করার প্রতিক্রিয়া বন্ধ করে দিয়েছে। আমরা আবিষ্কার করেছি যে সিস্টেমটি র্যামের কম চলছে: পিএইচপি-এফপিএম র্যামের বেশিরভাগ অংশ গ্রাস করেছে, নিম্নলিখিত স্ক্রিনশটটিতে বর্ণিত হয়েছে (এক নজরে - সিস্টেম মনিটরিং সরঞ্জাম)।

$ glances

এই নিবন্ধে, আমরা কীভাবে পিএইচপি-এফপিএম লিনাক্সে আপনার সমস্ত সিস্টেমের মেমরি (রuম) গ্রহণ করা থেকে রোধ করব তা দেখাব। এই গাইডের শেষে আপনি কীভাবে পিএইচপি-এফপিএম মেমরির খরচ 50% বা তার বেশি কমাবেন তা শিখবেন।

পিএইচপি-এফপিএম মেমরির ব্যবহার হ্রাস করুন

ইন্টারনেটে কিছু গবেষণা করার পরে, আমরা আবিষ্কার করেছি যে পুল কনফিগারেশন ফাইলে পিএইচপি-এফপিএম এর মেমরির খরচ হ্রাস করার জন্য আমাদের পিএইচপি-এফপিএম প্রক্রিয়া পরিচালক এবং এর কয়েকটি বিষয়গুলি পুনরায় কনফিগার করা দরকার।

ডিফল্ট পুলটি www এবং এর কনফিগারেশন ফাইলটি /etc/php-fpm.d/www.conf (CentOS/RHEL/ফেডোরায়) বা /etc/php/7.4/fpm/pool.d/www.conf এ অবস্থিত ( উবুন্টু/ডেবিয়ান/মিন্টে)।

$ sudo vim /etc/php-fpm.d/www.conf             [On CentOS/RHEL/Fedora]
$ sudo vim /etc/php/7.4/fpm/pool.d/www.conf    [On Ubuntu/Debian/Mint]

নিম্নলিখিত নির্দেশাবলী সন্ধান করুন এবং আপনার ব্যবহারের ক্ষেত্রে উপযুক্ত মান নির্ধারণ করুন। যে মন্তব্যগুলির জন্য মন্তব্য করা হয়েছে তাদের জন্য আপনাকে এগুলি নিরস্ত করা দরকার।

pm = ondemand
pm.max_children = 80
pm.process_idle_timeout = 10s
pm.max_requests = 200

আসুন সংক্ষেপে উপরের দিকনির্দেশগুলি এবং তাদের মানগুলি ব্যাখ্যা করি। বিকেল নির্দেশিকা নির্ধারণ করে যে কীভাবে প্রক্রিয়া পরিচালক শিশু প্রসেসের সংখ্যা নিয়ন্ত্রণ করবেন। ডিফল্ট পদ্ধতিটি গতিশীল, যার অর্থ বাচ্চাদের সংখ্যা (শিশু প্রক্রিয়াগুলি) গতিশীলভাবে সেট করা হয় pm.max_children সহ কিছু অন্যান্য নির্দেশের উপর নির্ভর করে যা একই সাথে বেঁচে থাকা সর্বোচ্চ সংখ্যক শিশুদের সংজ্ঞা দেয়।

সর্বাধিক আদর্শ প্রক্রিয়া পরিচালক হ'ল অনডেম্যান্ড স্কিম যেখানে কোনও শিশু প্রক্রিয়া শুরুতে তৈরি হয় না তবে চাহিদা অনুসারে তৈরি হয়। শিশুদের প্রক্রিয়াগুলি কেবল তখনই কাঁটা থাকে যখন নতুন অনুরোধগুলি pm.max_children এবং pm ভিত্তিতে সংযুক্ত হবে pro

সর্বশেষে তবে সর্বনিম্ন নয়, আমাদের পিএম.ম্যাক্স_রয়েস্ট প্যারামিটার সেট করতে হবে যা প্রতিটি শিশু প্রক্রিয়া পুনরায় স্প্যানিংয়ের পূর্বে কার্যকর হওয়া অনুরোধগুলির সংখ্যা নির্ধারণ করে। নোট করুন যে এই প্যারামিটারটি তৃতীয় পক্ষের লাইব্রেরিতে মেমরি ফাঁসের জন্য কার্যকর হিসাবে ব্যবহার করা যেতে পারে।

তথ্যসূত্র: পিএইচপি-এফপিএম চালানোর জন্য আরও ভাল উপায়।

এই উপরের কনফিগারেশনগুলি তৈরি করার পরে, আমি লক্ষ্য করেছি যে আমাদের সার্ভারে র্যামের ব্যবহার এখন ভাল। আপনার এই বিষয় বা প্রশ্নের সাথে সম্পর্কিত কিছু ভাবনা আছে? নীচের মতামত ফর্ম মাধ্যমে আমাদের পৌঁছান।