অ্যাপাচি ম্যাক্সক্লিয়েন্টে পৌঁছে সার্ভারটি লক করে


9

আমার কাছে বর্তমানে একটি অ্যাপাচি 2 সার্ভার চলছে mpm-preforkএবং mod_php512 এম রিয়েল / 1024 এম বার্সটেবল র‌্যাম (কোনও সোয়াপ নেই) সহ একটি ওপেনজেড ভিপিএস চলছে । কিছু পরীক্ষা চালানোর পরে, আমি দেখতে পেয়েছি যে আপাচি সর্বাধিক প্রক্রিয়া আকারটি 23 এম হয়, তাই আমি MaxClients25 (23 এম এক্স 25 = 575 মেগাবাইট, আমার জন্য ঠিক আছে) সেট করে রেখেছি । আমি আমার সার্ভারে কিছু লোড পরীক্ষা চালানোর সিদ্ধান্ত নিয়েছি এবং ফলাফলগুলি আমাকে হতবাক করে দিয়েছে।

আমি abআমার ডেস্কটপ মেশিনে একটি ওয়ার্ডপ্রেস ব্লগ থেকে মূল পৃষ্ঠার জন্য অনুরোধ করছি ।

আমি যখন ab24 সমবর্তী সংযোগগুলি নিয়ে চলেছি তখন সবকিছু ঠিক আছে। অবশ্যই, সিপিইউ উপরে যায়, নিখরচায় র‌্যাম নিচে যায়, এবং ফলাফল হিসাবে প্রতি অনুরোধের সময় প্রায় 2-3s হয়।

তবে যদি আমি ab25 একযোগে সংযোগগুলি (আমার সার্ভারের সীমা) দিয়ে চালাই তবে অ্যাপাচি কয়েক সেকেন্ড পরে স্তব্ধ হয়ে যায়। এটি অনুরোধগুলির প্রক্রিয়া শুরু করে, তারপরে এটি প্রতিক্রিয়া বন্ধ করে দেয়, সিপিইউ 100% অলস এবং abসময় শেষ হয়ে যায়। অ্যাপাচি লগ এটা পৌঁছেছে বলে MaxClients

যখন এটি ঘটে তখন অ্যাপাচি 25 টি চলমান প্রক্রিয়াগুলিতে নিজেকে আটকে রাখে (আমি যদি সার্ভারের স্থিতি পরীক্ষা করি তবে সেগুলি "W" তে থাকে) এবং কেবলমাত্র TimeOutসেটিংয়ের পরে প্রক্রিয়াগুলি মারা যেতে শুরু করে এবং সার্ভারটি আবার প্রতিক্রিয়া শুরু করে (আমার ক্ষেত্রে এটি সেট হয়ে গেছে) থেকে 45)।

আমার প্রশ্ন: এটা কি প্রত্যাশিত আচরণ? কেন পৌঁছে শুধু আপাচি মারা যায় MaxClients? এটি যদি 24 টি সংযোগের সাথে কাজ করে তবে 25 টি দিয়ে কাজ করা উচিত নয়, প্রতিটি অনুরোধের প্রতিক্রিয়া জানাতে আরও বেশি সময় নেওয়া এবং বাকী সারিবদ্ধ থাকা?

এটা আমার কাছে খুব আশ্চর্যজনক মনে হচ্ছে যে কোনও বাচ্চা abকেবলমাত্র সার্ভারের সাথে একযোগে সংযোগ স্থাপনের মাধ্যমে একটি ওয়েবসভারকে হত্যা করতে পারে MaxClients

উত্তর:


17

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

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

মূলত, পিএইচপি আমার সার্ভারকে একটি অচলাবস্থায় ফেলেছিল এবং এ্যাঙ্কেসগুলি তাদের "সন্তানের" অনুরোধের জন্য অপেক্ষা করার পরে কেবল স্বাভাবিকভাবে কাজ শুরু করবে।

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


এখানে পোস্ট করার জন্য ধন্যবাদ, আমি এখন বেশ কয়েকদিন ধরে ঠিক একই লক্ষণগুলির সাথে একটি সমস্যা বের করার চেষ্টা করছি - মনে করুন আমাদেরও অচলাবস্থার একটা কাস্ট আছে!
জেমস ইয়েল

আপনি এটি কীভাবে নির্ধারণ করেছেন, প্রাথমিকভাবে লগ এবং সেকেন্ডারি আউটবাউন্ড অনুরোধটি নির্ধারণ করতে আপনি যে সরঞ্জামগুলি ব্যবহার করেছেন তাতে আগ্রহী।
অনিরুদ্ধ গোয়েল

2

এখানে যা ঘটছে তা হ'ল আপনার কাছে 25 টি থ্রেড সংযোগ গ্রহণ করতে সক্ষম হয়েছে এবং আপনি 26 টি সমবায় অনুরোধগুলি প্রেরণ করছেন। এই শেষ অনুরোধটি আপনার ব্যাকলগের আকারের উপর নির্ভর করে সকেট কাতারে বসে।

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

মোড_এইচপিপি এবং যে কোনও মডিউল লোড হওয়া 23 আ্যামপাশ অ্যাপাচি প্রক্রিয়াটির জন্য ছোট শোনায়, তাই আমি সন্দেহ করি যে আপনার অ্যাপ্লিকেশনটি চলমান থাকায় আপনি সম্ভবত সেই অ্যাপাচি প্রক্রিয়াগুলিকে আরও কিছুটা র‌্যাম নিচ্ছেন। আপনি ম্যাক্সক্লিয়েন্টস এবং মেমরির সাথে সত্যিই গণিত করতে পারবেন না ... এটি কিছুটা কাছাকাছি হবে, তবে, আপনি কখনই জানেন না।

www-data  1495  0.1  0.9  56288 19996 ?        S    15:48   0:01 /usr/sbin/apache2 -k start
www-data  1500  0.0  0.5  49684 12436 ?        D    15:48   0:00 /usr/sbin/apache2 -k start

একটি মেশিন, 56 এম এবং 49 এম প্রক্রিয়া রয়েছে।

অন্য মেশিন:

www-data  7767  0.1  0.1 213732 14840 ?        S    14:55   0:08 /usr/sbin/apache2 -k start
www-data  8020  0.2  0.1 212424 13660 ?        S    14:57   0:08 /usr/sbin/apache2 -k start

অন্য মেশিন:

www-data 28509  0.8  0.1 161720 10068 ?        S    14:39   0:43 /usr/sbin/apache2 -k start
www-data 28511  0.8  0.1 161932 10344 ?        S    14:39   0:43 /usr/sbin/apache2 -k start

সুতরাং, মেমোরির ব্যবহারটি টাস্কের উপর খুব নির্ভরশীল, কোন মডিউলগুলি লোড করা হয় ইত্যাদি two গত দু'টিতে আমি বিশ্বাস করি যে অ্যাপ্লিকেশনটি সেগুলি ব্যবহার করে না বলেই আমরা পিডিও এবং পিডো_মাইএসকিএল অক্ষম করেছি।

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


এই সব টিপস এর জন্য ধন্যবাদ! আমি সচেতন আমি এখনও অনেক কিছু অপ্টিমাইজ করতে হবে (আমি মাত্র কয়েক দিন আগে সার্ভারটি কনফিগার করতে শুরু করেছি এবং এটি একটি ভিপিএসের সাথে আমার প্রথম অভিজ্ঞতা), তবে সমস্যাটি এর চেয়ে গভীরতর ছিল ... আমি একটি উত্তর পোস্ট করেছি আমার নির্দিষ্ট ক্ষেত্রে সমস্যাটি কী তা ব্যাখ্যা করে প্রশ্ন।
রদ্রিগো সিয়েরো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.