অন্যরা কীভাবে মেমরির ব্যবহার নিরীক্ষণ করবেন সে সম্পর্কে পরামর্শ প্রদান করেছেন ...
ধরুন আমার কাছে দুটি টমক্যাট অ্যাপ সার্ভার রয়েছে, তাদের পিছনে লোড ব্যালেন্স সেট আপ হয়েছে। আমি যদি jvm মেমরির পরিসংখ্যান দেখতে পাই তবে আমি সার্ভারের কাছে অনুরোধ প্রেরণ বন্ধ করতে লোড ব্যালেন্স বলতে পারি যা OOM সমস্যার মুখোমুখি হবে। এটা কি বোঝার?
প্রকার, রকম. তবে এটি আপনার সমস্যা সমাধানের সর্বোত্তম উপায় নয়।
সমস্যার মূলটিতে ফিরে যেতে দেয় ... ওওমগুলি। টমক্যাট প্রসঙ্গে, ওওমগুলি নিম্নলিখিতগুলির মধ্যে একটির কারণ হতে পারে:
- আপনার অ্যাপ্লিকেশনটিতে মেমরি ফাঁস হয় (বা সম্ভবত টমক্যাট নিজেই),
- প্রতিটি টমকেটের সমান্তরালভাবে অনেকগুলি অনুরোধ প্রক্রিয়া করার চেষ্টা করা, বা
- প্রক্রিয়া চলাকালীন অতিরিক্ত মেমরির প্রয়োজন এমন পৃথক অনুরোধগুলি।
আপনার সমস্যা সমাধানের জন্য আপনাকে প্রথমে এটিগুলির মধ্যে কোনটি ঘটছে তা খুঁজে বের করা উচিত ... কারণ তাদের প্রতিটির জন্য সমাধানটি আলাদা।
1) এটি মেমরি ফুটো কিনা তা দেখতে, আপনাকে দীর্ঘমেয়াদী মেমরির ব্যবহারের ধরণগুলি পরীক্ষা করতে একটি মেমরি বিশ্লেষণ সরঞ্জাম ব্যবহার করতে হবে। এটি সম্ভবত একটি সরুথ প্যাটার্ন দেখায় ... যা সাধারণ। আপনার যে বিষয়গুলি সন্ধান করতে হবে তা হ'ল সময়ের সাথে সাথে উপরের দিকে ট্রেন্ডিংয়ের "দাঁত" এর বোতলগুলির স্তর। এটি ইঙ্গিত দেয় যে কোনও কিছু আবর্জনা তৈরি করছে যা সংগ্রহ করা যায় না; অর্থাত্ একটি স্মৃতি ফুটো।
আপনার যদি মেমরি ফুটো থাকে তবে সর্বোত্তম সমাধান হ'ল আপনার কোডটির কোন অংশটি দায়ী তা নির্ধারণ করে এটি ঠিক করা। আর কিছু নয় ... লোড ব্যালেন্সিং সহ ... একটি বানডাইড সমাধান এবং ট্র্যাকের নিচে আরও খারাপ সমস্যার কারণ হতে পারে।
2) মেমরি ফাঁস দূর করার পরে, আপনার যদি সমস্যাটি হ'ল আপনি একবারে অনেকগুলি অনুরোধ প্রক্রিয়াকরণ করছেন তবে তা খুঁজে বের করতে হবে। আমি এটি করার সর্বোত্তম উপায় সম্পর্কে নিশ্চিত নই, তবে যদি এটি সমস্যা হয় (বা আপনার সন্দেহ হয় তবে) তবে কয়েকটি সম্ভাব্য সমাধান রয়েছে:
কর্মী থ্রেডের সংখ্যা হ্রাস করতে টমক্যাট সার্ভার কনফিগারেশন সামঞ্জস্য করুন।
যদি আপনার অনুরোধগুলি I / O সীমাবদ্ধ থাকে, তবে আর একটি সম্ভাবনা হ'ল সার্ভলেট বিশেষের সাম্প্রতিক সংস্করণগুলিতে উপলব্ধ অ্যাসিনক্রোনাস অনুরোধ পরিচালনার সহায়তাটি দেখুন - দেখুন http://docs.oracle.com/javaee/7/tutorial/doc/ servlets012.htm । তবে তা আরও কাজ হবে।
3) যদি সমস্যাটি দেখা দেয় যে নির্দিষ্ট অনুরোধগুলি অত্যধিক মেমরি ব্যবহার করছে, তবে আপনাকে কীভাবে এই অনুরোধগুলি হাতের আগে সনাক্ত করতে হবে এবং "সেগুলি মোকাবেলা করতে হবে" তা খুঁজে বের করতে হবে। এই অনুরোধগুলি সনাক্ত করা এবং সেগুলি মোকাবেলা করা উভয়ই কঠিন হতে পারে ... এবং আপনার আবেদনের বিবরণ ছাড়াই পরামর্শ দেওয়া শক্ত। তবে বেশ কয়েকটি বাস্তববাদী সমাধান হ'ল:
অসাধারণ অনুরোধগুলি অন্য একটি সার্ভারে একটি বড় গাদা দিয়ে ফরোয়ার্ড করুন ... যেখানে ওওমগুলি "স্বাভাবিক" অনুরোধগুলিতে হস্তক্ষেপ করবে না।
গাদা আকার বাড়ান। আপনার যদি পর্যাপ্ত শারীরিক স্মৃতি থাকে তবে আরও বড় গাদা দিয়ে দৌড়ানো আসলে আপনার টমক্যাট সার্ভারকে আরও দক্ষ করে তুলতে পারে ... পাশাপাশি ওওমস এড়িয়ে চলতে পারে।
সংক্ষেপে, ওমস এড়ানোর জন্য ভারসাম্য লোড করার চেষ্টা করার পরিবর্তে, আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি কেন ওমস পাচ্ছেন ... এবং সরাসরি ওওমের কারণ নিয়ে ডিল করার চেষ্টা করুন।