প্রশ্নের শিরোনামে যেমন বোঝা যাচ্ছে, গ্রহণযোগ্য পারফরম্যান্স অর্জনের জন্য আমার অ্যাপ্লিকেশনটিতে কী কী উন্নতি করা যেতে পারে (বা ওএস, উবুন্টুতে টিউন করা হয়েছে) তা নির্ধারণ করার জন্য আমার একটি কঠিন সময় কাটছে। তবে প্রথমে আমি স্থাপত্যটি ব্যাখ্যা করব:
ফ্রন্ট-এন্ড সার্ভারটি একটি 8 টি মেশিন যা 8 জিগ র্যামের সাথে উবুন্টু 12.04 চলছে। অ্যাপ্লিকেশনটি সম্পূর্ণ জাভাস্ক্রিপ্টে লিখিত এবং নোড.জেএস ভি 0.8.22 তে চালিত হয়েছে (কিছু মডিউল নোডের নতুন সংস্করণগুলিতে অভিযোগ বলে মনে হচ্ছে) আমি পোর্ট 80 এবং 443 থেকে 8 নোড কর্মীদের পরিচালিত প্রক্সি HT ট্র্যাফিকের জন্য এনজিনেক্স 1.4 ব্যবহার করি এবং নোড ক্লাস্টার এপিআই ব্যবহার শুরু করে। আমি ওয়েবসকেট সংযোগগুলি পরিচালনা করতে সকেট.আইও 0.9.14 এর সর্বশেষতম সংস্করণ ব্যবহার করি, যার ভিত্তিতে আমি কেবল ওয়েবসকেট এবং এক্সএইচআর-পোলিংকে উপলব্ধ ট্রান্সপোর্ট হিসাবে সক্ষম করেছি। এই মেশিনে আমি রেডিসের একটি উদাহরণও চালিয়েছি (২.২)
আমি 4gigs র্যাম এবং 2 কোর সহ মঙ্গোদব (৩.6) এর দ্বিতীয় সার্ভারে অবিচ্ছিন্ন ডেটা (ব্যবহারকারী এবং স্কোরের মতো) সঞ্চয় করি।
অ্যাপ্লিকেশনটি কয়েক মাস থেকেই উত্পাদনে রয়েছে (এটি কয়েক সপ্তাহ আগে পর্যন্ত একক বাক্সে চলছে) এবং এটি প্রতিদিন প্রায় 18k ব্যবহারকারী ব্যবহার করছেন। এটি সর্বদা একটি মূল ইস্যু ছাড়াও খুব ভালভাবে কাজ করেছে: পারফরম্যান্স অবক্ষয়। ব্যবহারের সাথে, প্রতিটি প্রক্রিয়া দ্বারা ব্যবহৃত সিপিইউয়ের পরিমাণ বৃদ্ধি পায় যতক্ষণ না এটি শ্রমিককে নির্ধারিত করে (যা আর অনুরোধগুলি দেয় না)। আমি প্রতি মিনিটে প্রতিটি কর্মীর দ্বারা ব্যবহৃত সিপিইউ পরীক্ষা করে এটি অস্থায়ীভাবে সমাধান করেছি এবং যদি এটি 98% এ পৌঁছায় তবে পুনরায় চালু করব। সুতরাং এখানে সমস্যাটি মূলত সিপিইউ, এবং র্যামের নয়। আমি সকেট.আইও ০.৯.১৪ এ আপডেট করেছি যেহেতু র্যাম আর কোনও সমস্যা নয় (পূর্ববর্তী সংস্করণটি মেমরি ফাঁস করছিল) তাই আমি সন্দেহ করি এটি একটি মেমরি ফাঁস হওয়ার সমস্যা হতে পারে, বিশেষত কারণ এখন এটি সিপিইউ যা মোটামুটি দ্রুত বৃদ্ধি পায় ( আমাকে প্রতিটি কর্মীকে দিনে 10-12 বারের মতো পুনরায় চালু করতে হবে!)। ব্যবহারের র্যামটি যথাযথ হওয়ার পাশাপাশি বৃদ্ধি পায়, তবে খুব আস্তে আস্তে, ব্যবহারের প্রতিটি 2-3 দিনে 1 গিগ এবং আশ্চর্যের বিষয় হ'ল আমি সম্পূর্ণ অ্যাপ্লিকেশন পুরোপুরি পুনরায় চালু করার পরেও এটি প্রকাশিত হয় না। আমি যদি সার্ভারটি রিবুট করি তবেই এটি মুক্তি পাবে! এটি আমি বুঝতে পারি না ...
আমি এখন নোডফ্লাই আবিষ্কার করেছি যা আশ্চর্যজনক, তাই শেষ পর্যন্ত আমি দেখতে পাচ্ছি যে আমার প্রোডাকশন সার্ভারে কী ঘটছে, এবং আমি কয়েক দিন ধরে ডেটা সংগ্রহ করছি। যদি কেউ চার্ট দেখতে চান তবে আমি আপনাকে অ্যাক্সেস দিতে পারি, তবে মূলত আমি দেখতে পাচ্ছি যে আমার 80 থেকে 200 এর মধ্যে সমবর্তী সংযোগ রয়েছে! আমি নোড.জেএস থেকে কয়েক হাজার অনুরোধ নয়, হাজার হাজার পরিচালনা করার প্রত্যাশা করছিলাম। এছাড়াও HTTP ট্র্যাফিকের গড় প্রতিক্রিয়া সময় 500 এবং 1500 মিলি সেকেন্ডের মধ্যে ভেসে যায় যা আমি মনে করি সত্যই অনেক বেশি। এছাড়াও, অনলাইনে ১৩০০ জন ব্যবহারকারীকে নিয়ে এই মুহুর্তে এটিই "এসএস-এস" এর আউটপুট:
Total: 5013 (kernel 5533)
TCP: 8047 (estab 4788, closed 3097, orphaned 139, synrecv 0, timewait 3097/0), ports 0
Transport Total IP IPv6
* 5533 - -
RAW 0 0 0
UDP 0 0 0
TCP 4950 4948 2
INET 4950 4948 2
FRAG 0 0 0
যা দেখায় যে টাইমওয়েটে আমি অনেক বন্ধ সংযোগ পেয়েছি। আমি সর্বাধিক উন্মুক্ত ফাইলগুলি 999999 এ বৃদ্ধি করেছি, এখানে উলিমিট-এ এর আউটপুট রয়েছে:
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 63724
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 999999
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 63724
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
সুতরাং আমি ভেবেছিলাম সমস্যাটি এইচটিপি ট্র্যাফিকের কারণে হতে পারে যে কোনও কারণে উপলভ্য বন্দর / সকেটগুলি (?) স্যাটারুটেটেড করে তবে একটি জিনিস আমার কাছে বোধগম্য হয় না: কেন আমি যখন কর্মীদের পুনরায় চালু করি এবং সমস্ত ক্লায়েন্ট কয়েক সেকেন্ডের মধ্যে পুনরায় সংযোগ করে, শ্রমিকের সিপিইউতে বোঝা 1% এর নিচে চলে যায় এবং প্রায় 1 ঘন্টা (পিক টাইম) পরে এটি পূরণ না হওয়া পর্যন্ত সঠিকভাবে অনুরোধগুলি সরবরাহ করতে সক্ষম?
আমি মূলত একটি জাভাস্ক্রিপ্ট প্রোগ্রামার, কোন সিস্ট অ্যাডমিন না তাই আমার সার্ভারগুলির সাথে হ্যান্ডেল করার জন্য আমার কতটা লোড আশা করা উচিত তা আমি জানি না, তবে অবশ্যই এটি যেমনটি করা উচিত তেমন সম্পাদন করছে না। অ্যাপ্লিকেশন অন্যথায় স্থিতিশীল এবং এই শেষ সমস্যাটি আমাকে প্রস্তুত অ্যাপের মোবাইল সংস্করণগুলি পাঠাতে বাধা দিচ্ছে, স্পষ্টতই তারা আরও বেশি বোঝা আনবে এবং শেষ পর্যন্ত পুরো জিনিসটি ক্র্যাশ করবে!
আশা করি এখানে স্পষ্টতই কিছু আছে যে আমি ভুল করছি, এবং কেউ এটি সনাক্ত করতে সহায়তা করবে ... আরও তথ্যের জন্য আমাকে নির্দ্বিধায় জিজ্ঞাসা করুন এবং আমি প্রশ্নের দৈর্ঘ্যের জন্য দুঃখিত তবে প্রয়োজনীয় ছিল আমি বিশ্বাস করি ... আগাম ধন্যবাদ!
top
সিপিইউ ব্যবহার 100% এর কাছাকাছি থাকলে আপনি কী দেখতে পাচ্ছেন ?