ধারাবাহিকভাবে পিএইচপি-এফপিএম পুনরায় লোড করতে হবে


27

আমাদের কাছে মোটামুটি ভারী লোড হওয়া সার্ভার রয়েছে এনগিনেক্স এবং পিএইচপি-এফপিএম চলমান। এই সার্ভারে আমাদের 6 টি ওয়েবসাইট রয়েছে, পিএইচপি-এফপিএম এবং এনগিনেক্স চলছে। সফ্টওয়্যার সমস্ত vBulletin 3.8 এবং ওয়ার্ডপ্রেস। ডাটাবেসগুলি একটি পৃথক সার্ভারে রয়েছে।

এখন, কারণ এগুলি অত্যন্ত জনপ্রিয় ওয়েবসাইট, আমাদের সাধারণত অনলাইনে --,000,০০০ দর্শক এক সাথে অনলাইনে থাকে, প্রতিটি পৃষ্ঠার বেশিরভাগ অংশের জন্য ডেটাবেস হিট করে। আমি বিশ্বাস করি এটিই আমাদের সমস্যার কারণ।

যেহেতু আমাদের মাইএসকিউএল সার্ভারে অনেকগুলি বৃহত ডাটাবেস রয়েছে এবং কারণ অনুসন্ধানগুলি, সত্যই, সফ্টওয়্যারটিতে আরও অনেক ভাল হতে পারে, আমি মনে করি মাইএসকিউএল মাঝে মাঝে পিএইচপি-তে ফলাফল সময়োপযোগী করতে ব্যর্থ হবে এবং শেষ পর্যন্ত একটি ক্যাসকেড প্রভাব তৈরি করবে I আমরা পিএইচপি-এফপিএম পুনরায় লোড না করা পর্যন্ত সবকিছু থামিয়ে দেয়। আমরা এটি করার পরে, জিনিসগুলি আবার ঠিকঠাক কাজ শুরু করে।

এটির সমস্যা সমাধানে আমার সমস্যা হওয়ার কারণ হ'ল লগগুলি থেকে আমি সত্যিই কিছু বুঝতে পারি না। মাইএসকিউএল স্লো ক্যোয়ারী লগে, ডাউনটাইম যখন ঘটে তখন আমি আগ্রহের কিছুই দেখি না। এনগিনেক্স লগগুলিতে, আমি হাজার হাজার এন্ট্রি দেখতে পেয়েছি যে পড়ার অনুরোধের সময়সীমা শেষ হয়েছে বা সংযোগের সময়সীমা শেষ হয়েছে (টু পিএইচপি-এফপিএম)। এবং পিএইচপি-এফপিএম লগগুলিতে আমি প্রচুর লাইন দেখতে পাই যা বলে যে "এক্সিকিউশন টাইম আউট (৩১ সেকেন্ড), সমাপ্ত

সুতরাং এই মুহুর্তে আমি ঠিক জানি না কোথায় সমস্যার সন্ধান করতে হবে। স্পষ্টতই, যা ঘটছে তা ঘটছে কারণ এই স্ক্রিপ্টগুলি কখনও কখনও দ্রুত পর্যাপ্ত পরিমাণে কার্যকর হয় না (সাধারণত তারা এগুলি এক সেকেন্ডের মধ্যে লোড করে তবে এমন কিছু ঘটে যা বোঝার সময়কে আকাশছোঁয়া করে দেয়)। এটি দিনে অনেকবার ঘটে এবং এটি আমাদের জন্য বেশ সমস্যা হয়ে দাঁড়িয়েছে।

আপাতত আমার কাছে প্রতি 10 মিনিটে পিএইচপি 5-এফপিএম পুনরায় লোড করার জন্য ক্রন্টব রয়েছে, যা ক্র্যাশিং সমস্যার সমাধান করে। অবশ্যই, যখন পিএইচপি পুনরায় লোড হয়, এনগিনেক্স একটি 502 গেটওয়ে ত্রুটি ফেলে দেয়, সুতরাং এটি কোনও সমাধানের খুব বেশি কিছু নয়।

পিএইচপি এপিসি ক্যাশে চালাচ্ছে, যদি এটি গুরুত্বপূর্ণ হয়। আমি কয়েকটি দাগে পড়েছি যে কিছু পরিস্থিতিতে এপিসি ঝুলতে পারে।

যে কোনও পয়েন্টার সহায়ক হবে। আমি সত্যিই এই মেশিনটি সম্পর্কে সর্বদা চিন্তা না করা চাই।

আরও তথ্য অবশ্যই প্রদান করা যেতে পারে। আপনার কী প্রয়োজন তা আমাকে জানান।

আপডেট: আমি কেবলমাত্র একটি ওয়েব রুটে apc.php অনুলিপি করেছি এবং আমাদের পরিসংখ্যানটি দেখার জন্য এটি অ্যাক্সেস করেছি। জিনিস ভাল লাগছিল। তারপরে আমি ইউজার স্ট্যাটাসে যাওয়ার জন্য লিঙ্কটি ক্লিক করেছি এবং সার্ভারটি তাত্ক্ষণিকভাবে স্তব্ধ হয়ে গেল। আমি পিএইচপি-এফপিএম পুনরায় লোড করেছি এবং তারপরে ব্যবহারকারীর পরিসংখ্যান পৃষ্ঠা পুনরায় লোড করেছি এবং এটি জরিমানার মধ্য দিয়ে গেছে। এক মিনিট অপেক্ষা করে, আবার লোড করা হয়েছে, সার্ভার আবার স্তব্ধ হয়ে গেছে।

সুতরাং এটি অবশ্যই এপিসি সম্পর্কিত বলে মনে হচ্ছে। প্রশ্নটি হল - আমরা কীভাবে এটি ঠিক করব?

এপিসি কনফিগারেশন:

[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"

আপডেট 2: আমরা এখানে এটিতে কিছু অগ্রগতি করেছি। দেখা যাচ্ছে যে ওয়ার্ডপ্রেস ক্যাশিং প্লাগইন (ডাব্লু 3 টোটাল ক্যাশে) হ'ল ক্র্যাশগুলির কারণ। আমরা এখনও জানি না, তবে এটি অক্ষম হয়ে আমরা প্রায় 4 ঘন্টা ধরে পিএইচপি চালিয়ে যাচ্ছি যার সাথে কোনও পুনরায় লোড, কোনও ধীরগতি, কোনও ক্র্যাশ নেই। আমরা এখনও ভি বুলেটিন ফোরামে এপিসি ব্যবহার করছি এবং সেখানে কোনও সমস্যা নেই। কেন আমরা কোনও উপায় নির্ধারণ করতে পারি যে কেন এপিসি ক্রাশ হচ্ছে? আমি এটি আমাদের ওয়ার্ডপ্রেস ইনস্টলেশনগুলিতে ব্যবহার করতে চাই, তবে একটি ভঙ্গুর সিস্টেমের জন্য ব্যয় করব না।


আপনি যে কোনও এপিসি সম্পর্কিত সেটিংস পোস্ট করতে পারেন?
কাইল

হ্যাঁ, ভাল ধারণা। সম্পন্ন.
কেভিন

এই মেশিনে আপনার কতটা র‌্যাম এবং অদলবদল রয়েছে? এটি মারা যেতে শুরু করলে কতটা ব্যবহৃত হয়?
কাইল

2
এপিসি একটি মারাত্মক বগি দুঃস্বপ্ন এবং বছরের পর বছর ধরে আমার ওয়েব সাইটগুলির মধ্যে এটির মতো ক্র্যাশগুলির একমাত্র উত্স ছিল । অবশেষে আমি এটি থেকে সম্পূর্ণ মুক্তি পেয়েছি; এবং পিএইচপি এখন শক্ত। আপনি যদি ক্যাচিং চান, জেন্ড অপ্পকে চেষ্টা করুন, এটি পিএইচপি 5.5 থেকে ডিফল্ট ক্যাশেও।
মাইকেল হ্যাম্পটন

1
হ্যাঁ, এটি শেষ হয়েছিল এপিসি যা পিএইচপি ক্র্যাশ করেছিল। আমরা যখন এপিসিকে অক্ষম করি, তখন আমাদের ক্রমাগত পিএইচপি পুনরায় চালু করা বন্ধ হয়ে যায়।
কেভিন

উত্তর:


27

আপনি পিএইচপি-এফপিএম ব্যবহার করছেন, তাই পিএইচপি-এফপিএম-এর বাচ্চাদের কত দিন বাঁচার অনুমতি দেওয়া হচ্ছে তা নিয়ে আমি আরও আগ্রাসী হওয়ার পরামর্শ দিই। খুব শীঘ্রই বেঁচে থাকা থ্রেড / শিশু এবং স্থিতিশীলতার মধ্যে আপনার মিষ্টি স্পটটি খুঁজে পেতে হবে। পিএইচপি-এইচপিএম ডিফল্টগুলি কোনও উত্পাদন ব্যবস্থার জন্য উদার হওয়ার উপায়, আইএমএইচও।

আমি আপনার উত্পাদন পুলগুলির জন্য pm.max_requests এর সংখ্যা কমিয়ে দেব reduce আমার মনে হয় ডিফল্ট 200 হয় I'd আমি 50 থেকে শুরু করব এবং এটি আপনাকে কোথায় নিয়ে যাবে তা দেখতে পাবে।

এতে ব্যর্থ / পরিপূরক, আপনি এই বিশ্বব্যাপী বিকল্পগুলিও চেষ্টা করতে পারেন (এএফআইএকি তারা সমস্ত ডিফল্টরূপে অক্ষম রয়েছে):

emergency_restart_threshold=3
emergency_restart_interval=1m
process_control_timeout=5s

এটার মানে কি? যদি 3 মিনিটের মধ্যে 3 পিএইচপি-এফপিএম চাইল্ড SIGSEGV বা SIGBUS (অর্থাৎ ক্র্যাশ) দিয়ে প্রস্থান করে তবে পিএইচপি-এফপিএম স্বয়ংক্রিয়ভাবে পুনরায় চালু হওয়ার কথা। শিশু মাস্টার থেকে সংকেত প্রতিক্রিয়া জন্য 5s অপেক্ষা করে।

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

আমি এখানে উল্লিখিত সমস্ত কনফিগার বিকল্পগুলির একটি সুন্দর ওভারভিউ, পাশাপাশি অন্যদের: http://myjeeva.com/php-fpm-configration-101.html

আশা করি এই টিপস আপনাকে সাহায্য করবে! টুইট এবং পর্যবেক্ষণ করতে ভুলবেন না, দুর্ভাগ্যক্রমে এই সমস্তটির জন্য থাম্বের নিয়ম বলে মনে হয় না, এমন অনেকগুলি ভেরিয়েবল রয়েছে যা পিএইচপি এর আচরণ এবং স্থায়িত্বকে প্রভাবিত করে।


1
প্রতি ঘন্টা পিএইচপি 5-এফপিএম পুনরায় চালু করতে ক্রোন ব্যবহারের বিষয়ে আপনার মতামত কী?
সিএমসিডিগ্রাগনকাই

2
এটি এটি করার একটি বরং কৃচ্ছ উপায়, এবং এটি কিছুটা কাজ নাও করতে পারে। পিএইচপি-এফপিএম-এর অন্তর্নির্মিত বেশ কয়েকটি টুইট রয়েছে, সুতরাং সেই টুইটসুলভ্যতাটি ব্যবহার করা আরও ভাল।
রাউবেন

1
এই উত্তরটি আমাকে সঠিক দিকে নির্দেশ করেছে। আমি নিজেকে এই মত একটি অনুরূপ ইস্যু দেখে আমার জন্য সমাধান পরিবর্তনের মধ্য দিয়ে pmথেকে dynamicথেকে ondemandএবং সমস্ত অন্যান্য সব ডিফল্ট মান সঙ্গে এখন গ্র্যান্ড কাজ বলে মনে হয়।
llanato

(php-fpm.conf এ) এটি কী এবং মান পৃথক করে '' এর পরিবর্তে '=' হওয়া উচিত।
জরুরী_পরিচা_পরিচয়

আমি পাচ্ছিERROR: [/etc/php/7.0/fpm/pool.d/www.conf:135] unknown entry 'emergency_restart_threshold'
21'17 এ deweydb
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.