আমার কাছে বর্তমানে একটি অ্যাপাচি 2 সার্ভার চলছে mpm-prefork
এবং mod_php
512 এম রিয়েল / 1024 এম বার্সটেবল র্যাম (কোনও সোয়াপ নেই) সহ একটি ওপেনজেড ভিপিএস চলছে । কিছু পরীক্ষা চালানোর পরে, আমি দেখতে পেয়েছি যে আপাচি সর্বাধিক প্রক্রিয়া আকারটি 23 এম হয়, তাই আমি MaxClients
25 (23 এম এক্স 25 = 575 মেগাবাইট, আমার জন্য ঠিক আছে) সেট করে রেখেছি । আমি আমার সার্ভারে কিছু লোড পরীক্ষা চালানোর সিদ্ধান্ত নিয়েছি এবং ফলাফলগুলি আমাকে হতবাক করে দিয়েছে।
আমি ab
আমার ডেস্কটপ মেশিনে একটি ওয়ার্ডপ্রেস ব্লগ থেকে মূল পৃষ্ঠার জন্য অনুরোধ করছি ।
আমি যখন ab
24 সমবর্তী সংযোগগুলি নিয়ে চলেছি তখন সবকিছু ঠিক আছে। অবশ্যই, সিপিইউ উপরে যায়, নিখরচায় র্যাম নিচে যায়, এবং ফলাফল হিসাবে প্রতি অনুরোধের সময় প্রায় 2-3s হয়।
তবে যদি আমি ab
25 একযোগে সংযোগগুলি (আমার সার্ভারের সীমা) দিয়ে চালাই তবে অ্যাপাচি কয়েক সেকেন্ড পরে স্তব্ধ হয়ে যায়। এটি অনুরোধগুলির প্রক্রিয়া শুরু করে, তারপরে এটি প্রতিক্রিয়া বন্ধ করে দেয়, সিপিইউ 100% অলস এবং ab
সময় শেষ হয়ে যায়। অ্যাপাচি লগ এটা পৌঁছেছে বলে MaxClients
।
যখন এটি ঘটে তখন অ্যাপাচি 25 টি চলমান প্রক্রিয়াগুলিতে নিজেকে আটকে রাখে (আমি যদি সার্ভারের স্থিতি পরীক্ষা করি তবে সেগুলি "W" তে থাকে) এবং কেবলমাত্র TimeOut
সেটিংয়ের পরে প্রক্রিয়াগুলি মারা যেতে শুরু করে এবং সার্ভারটি আবার প্রতিক্রিয়া শুরু করে (আমার ক্ষেত্রে এটি সেট হয়ে গেছে) থেকে 45)।
আমার প্রশ্ন: এটা কি প্রত্যাশিত আচরণ? কেন পৌঁছে শুধু আপাচি মারা যায় MaxClients
? এটি যদি 24 টি সংযোগের সাথে কাজ করে তবে 25 টি দিয়ে কাজ করা উচিত নয়, প্রতিটি অনুরোধের প্রতিক্রিয়া জানাতে আরও বেশি সময় নেওয়া এবং বাকী সারিবদ্ধ থাকা?
এটা আমার কাছে খুব আশ্চর্যজনক মনে হচ্ছে যে কোনও বাচ্চা ab
কেবলমাত্র সার্ভারের সাথে একযোগে সংযোগ স্থাপনের মাধ্যমে একটি ওয়েবসভারকে হত্যা করতে পারে MaxClients
।