php5-fpm: সার্ভার পৌঁছেছে pm.max_children


41

আমার কাছে Nginx + php5-fpm আছে । প্রতি ঘন্টা বেশ কয়েকবার আমার ওয়েবসাইট স্টক করে এবং লগফাইলে আমি নিম্নলিখিতগুলি দেখি:

সতর্কতা: [পুল www] সার্ভার pm.max_children সেটিংয়ে পৌঁছেছে (5), এটি উত্থাপন বিবেচনা করুন।

/etc/php5/fpm/pool.d/www.conf ফাইলটিতে নিম্নলিখিত কনফিগারেশন রয়েছে:

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

সার্ভার: এএমডি ওপ্টারন ™ 3280, অক্টো-কোর, 8 এক্স 2.4 গিগাহার্টজ, 16 জিবি ডিআইএমএম (ডিডিআর 3)।

এই সার্ভারের জন্য আমার www.conf ফাইলে কোন নম্বরগুলি রাখা উচিত তা আমার কোনও ধারণা নেই। আমি কি কাউকে সাহায্য করতে পারি? ধন্যবাদ

উত্তর:


40

আপনার পিএইচপি-এফপিএম পৌঁছানোর জন্য অনেকগুলি সম্ভাব্য কারণ রয়েছে max_children। সর্বাধিক সাধারণ হ'ল:

  • আপনার ক্লায়েন্টদের কাছ থেকে প্রচুর সমান্তরাল অনুরোধ
  • পিএইচপি স্ক্রিপ্টগুলির ধীরে ধীরে কার্যকরকরণ
  • খুব কম সেটিং max_children

আপনার মেশিনের স্পেসের দিকে তাকিয়ে, ধরে নিচ্ছি যে পিএইচপি + এনগিনেক্স চলমান ছাড়া আর কিছুই নেই, আমি মনে করি আপনি এটি 5 এর চেয়ে অনেক বেশি সেট করতে পেরেছিলেন আপনি বলেছেন যে আপনার 8 টি কোর রয়েছে, সাধারণত এনগিনেক্সের পিএইচপি এর চেয়ে অনেক কম সিপিইউ প্রয়োজন, তাই 5 বাচ্চার সাথে আপনি সম্ভবত এই সবগুলি ব্যবহার করতে সক্ষম হবেন না। আমি সাধারণত আপনার পিএইচপি স্ক্রিপ্টগুলির মেমরির ব্যবহারের উপর নির্ভর করে কোরের সংখ্যার মতো x 2 বা কোর x 4 এর সংখ্যার মতো কিছুতে সেট করছি ।


এটি পিএইচপি চ্যাট সহ একটি ডেটিং ওয়েবসাইট এবং ব্যবহারকারীরা লক্ষ লক্ষ তাত্ক্ষণিক বার্তা প্রেরণ করে। গতরাতে যখন আমি অনলাইনে ~ 300 ব্যবহারকারী ছিলাম,
নেটস্ট্যাট

1
আমার আসলে একটি অনুরূপ ডেটিং ওয়েবসাইট আছে। আমি মনে করি আপনার অবশ্যই আরও পিএইচপি বাচ্চাদের প্রয়োজন। আমার কনফিগারেশনটি নিম্নরূপ: 20k একযোগে অনলাইন ব্যবহারকারী, 8 টি কোরের 12 টি পিএইচপি মেশিন, প্রতিটি পিএইচপি মেশিনে 32 জন কর্মী। এটি বেশ ভাল কাজ করে। আপনার কতটা ফ্রি মেমরি রয়েছে তাও আপনার দেখতে হবে, আপনার পিএইচপি বিশাল না হলে আমার কিছু সন্দেহ আছে। আপনার যদি ফ্রি মেমরি থাকে তবে কেন এটি আরও কিছু শ্রমিকের জন্য ব্যবহার করবেন না?
16:51

@ ব্যবহারকারী 1821484 এটি সঠিক; pm.max_childrenহয় অনেক খুব কম । 1 গিগাবাইট র‌্যাম সহ একটি ছোট ভিপিএস সার্ভারের জন্য 10 এর মান যুক্তিসঙ্গত; আপনার অনেক বড় সার্ভার রয়েছে। ত্রুটিগুলি পাওয়া বন্ধ না করা পর্যন্ত এই মানটি বাড়ান, তারপরে আপনি কোনও ট্র্যাফিকের স্পাইক পেয়ে গেলে আবার এটিকে উত্থাপন করুন।
মাইকেল হ্যাম্পটন

উত্তরের জন্য ধন্যবাদ। আমি pm.max_children সেটিংটি 10-এ বাড়িয়েছি এবং এখন আমি এই ত্রুটিটি পেতে শুরু করেছি: সতর্কতা: [পুল www] আপনাকে ব্যস্ত মনে হচ্ছে (আপনার হয়তো pm.start_servers বা pm.min / max_spare_servers বাড়াতে হবে), 16 টি বাচ্চা ছড়িয়েছে, 0 আছে অলস, এবং 8 মোট শিশু। আমার বাড়ানোর জন্য কি কেউ আমাকে পরামর্শ দিতে পারে? ধন্যবাদ।
ব্যবহারকারী 1821484

কোর x 2 বা কোর x 4 শব্দটি আমার কাছে সত্যিই কম। আমার কাছে 8 টি কোরের একটি মেশিন রয়েছে এবং pm.max_children = 48 সহ 8 গিগাবাইট র‌্যাম রয়েছে এবং আমরা এখনও সার্ভারটি pm.max_children সতর্কতার সাথে পৌঁছেছি । এই মেশিনটি এর সিপিইউ বা মেমরির সীমাটির কাছাকাছি নেই। আমি মনে করি আরও ভাল পদ্ধতির সাথে সম্পর্কিত এনজিনেক্স (বা অ্যাপাচি) সেটিংসের সাথে মিল রেখে এই সেটিংটি অনুকূলকরণ করা এবং প্রতিটি পিএইচপি প্রক্রিয়া কতটা মেমরি গ্রহণ করে তা নির্ধারণ করার পরে একটি মান চয়ন করবে।
এস ইম্প ইম

18

আমি খুঁজে পেয়েছি যে pm.max_requosts মান (যা ডিফল্টরূপে মন্তব্য করা হয়) সেট করে এই ত্রুটিগুলি সমাধান করতে সহায়তা করেছে। এই সেটিংটি নির্দিষ্ট সংখ্যক অনুরোধগুলি সম্পাদন করার পরে শিশু অনুরোধগুলিকে পুনর্বাসনে বাধ্য করে এবং যদি আপনার কোড বা তৃতীয় পক্ষের লাইবগুলিতে মেমরি ফাঁস হয় তবে সহায়ক হতে পারে।

ইন /etc/php-fpm.d/www.conf :

pm.max_requests = 500

13

এই লিঙ্কটি কার্যকর হতে পারে - এটি সিস্টেমে মেমরির পরিমাণের উপর ভিত্তি করে শিশু প্রক্রিয়াগুলির সংখ্যা গণনা করার পদ্ধতি ব্যাখ্যা করে:


7
এই লিঙ্কটি একবার চলে গেলে এই উত্তরটি অকেজো হবে।
miken32

2
মূলত, লিঙ্কটি বলে ... pm.max_children জন্য উপযুক্ত মান হিসাবে গণনা করা যেতে পারে: pm.max_children = ওয়েব সার্ভার / সর্বোচ্চ শিশু প্রক্রিয়া আকারের জন্য নিবেদিত মোট র্যাম
jaywhy13
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.