কিছু কিছু সমস্ত স্মৃতি খায় (আমি কিছু অ্যাপ্লিকেশনে মেমরি ফাঁস হওয়া সন্দেহ করি)। কীভাবে সনাক্ত করবেন?


16

আমার কাছে সার্ভার রয়েছে যা লিকুইডস্যাপ + আইসকিস্ট বান্ডিল এবং সাধারণ ওয়েবসাইট চালায় (httpd + mysqld)। বিশেষ কিছু না. প্রতিদিন প্রায় ২০০০+ দর্শনার্থী প্রায় এক সাথে অনলাইনে অনলাইনে থাকে।

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

ঠিক কী মেমরি ফাঁস করে তা সনাক্ত করার জন্য কী করা যেতে পারে? আমি সংস্থানগুলির ব্যবহার নিরীক্ষণের জন্য শীর্ষ ব্যবহার করি, তবে যতদূর আমি দেখতে পাই এটি কোনও সহায়ক বলে মনে করে না:

এখানে চিত্র বর্ণনা লিখুন

এত স্মৃতি কী ব্যবহার করে তা জানার কোনও উপায় আছে? বা কী ডিস্কে ভারী পরিবর্তন করতে শুরু করে? সার্ভারটি রিবুট না করে স্মৃতি মুক্ত করার কোনও উপায়?


আপনি সার্ভারের পরিবর্তে কিছু পরিষেবা (অ্যাপাচি, লিকুইডোস্যাপ) পুনরায় চালু করার চেষ্টা করছেন না এমন কোনও কারণ?
jamespo

আমি স্বাভাবিকভাবেই সাধারণ মেমরির ব্যবহারের জন্য প্রতিক্রিয়া জানাই। আমি এমন একটি সরঞ্জামের সাথে আপডেট করেছি যা সমস্যা চিহ্নিত করতে সহায়তা করতে পারে।
বিলথোর

@ জামেস্পো, আসলে আমি এটি চেষ্টা করেছিলাম, তবে এর কোনও ফল হয়নি, তাই পুনঃসূচনাটি কেবলমাত্র আমি জানতাম যে সাহায্য করতে পারে।
জয়য়ারজো

ক্যাশেড 4027092 কে মেমরির ব্যবহারটি ব্যাখ্যা করা উচিত, না? আমি এই মুহূর্তে অন্য কোথাও একই ধরণের সমস্যার জন্য কাজ করছি এবং এখনও অবধি আমি মেমরি স্থানান্তরটি নিম্নলিখিত প্যারামগুলির সাহায্যে নিয়ন্ত্রিত করতে সক্ষম হয়েছি: vfs_cache_pressure vm.dirty_ratio vm.dirty_background_ratio এটি সম্পূর্ণ সমাধান নয় এবং কোনও প্রতিক্রিয়া নয় সর্বাধিক স্বাগতম আমি আশা করি এটি যেতে একটি সঠিক দিক।

উত্তর:


16

চলমান topরিপোর্ট মেমরি ব্যাচ মোডে পর্যায়ক্রমে মাপ যখন দক্ষিণ যেতে কার কার স্মৃতিশক্তি ব্যবহার করছে দেখতে ব্যবহার করা যাবে। sarব্যাচ মোডে চলার জন্য মেমরির ব্যবহার এবং সম্পর্কিত I / O সম্পর্কিত কিছু ভাল ডায়াগনস্টিক দেওয়া উচিত। muninসিস্টেমটি নিরীক্ষণ করতে দৌড়ে যাওয়ার জন্য আপনাকে কী মেমরি ব্যবহার করা হচ্ছে তার ভাল বিশদ সহ একটি গ্রাফ দেওয়া উচিত। এটি অনেক সাহায্য করতে পারে।

আপনি প্রোগ্রামের সর্বাধিক মূল আকার সীমাবদ্ধ করতে সীমাবদ্ধতা ব্যবহার করতে পারেন। যথাযথভাবে সেট করা, এতে মেমরি ফাঁস হওয়া কোনও প্রোগ্রামকে হত্যা করা উচিত। এটি পাম_লিমিট মডিউলটির সাথে কাজ করে। ulimitsকমান্ডের সাথে সীমাও নির্ধারণ করা যায় ।

আপনি কয়েকটি প্রোগ্রাম পরিচালনা করছেন যা প্রচুর পরিমাণে মেমরি ব্যবহার করতে পারে। কিছু বিষয় যা আপনি দেখে নিতে পারেন সেগুলি অন্তর্ভুক্ত করে।

  • এর অধীনে চলমান দুর্বল প্রোগ্রামযুক্ত অ্যাপ্লিকেশনগুলি apache2মেমরি ফাঁস করতে পারে। যখন এটি ঘটে তখন আপনার মেমরির আকার বাড়তে হবে। MaxRequestsPerChild100 বা তার বেশি সেট করে নির্দিষ্ট সংখ্যক ব্যবহারের পরে বাচ্চাদের পুনর্ব্যবহার করতে আপনি অ্যাপাচি 2 টিউন করতে পারেন। এটি যদি সমস্যার সমাধান করে তবে আপনার ফুটোটি সমাধান করা দরকার। আমি এই প্রথম দেখতে হবে।
  • মাইএসকিউএল মেমরিতে ডেটা লোড করার চেষ্টা করতে পারে। আপনার যদি মেমরিতে প্রচুর ডেটা থাকে তবে এটি কিছুটা ছিটকে যাওয়ার কারণ হতে পারে তবে আপনি যতটা নাটকীয় তা দেখছেন না।
  • আপনার যদি একটি বড় tmpfsফাইল সিস্টেম মাউন্ট করা থাকে তবে ফাইলগুলি মুছে ফেলা না হলে আপনি মেমরি ফাঁস করতে পারেন। বড় দীর্ঘজীবী ফাইলগুলিও সমস্যা হতে পারে।
  • সমস্যাটি যদি দিনের প্রায় একই সময়ে ঘটে থাকে তবে আপনার একটি নির্ধারিত প্রোগ্রাম থাকতে পারে যা মেমরি ফাঁস করে।
  • আপনার যদি এমন একটি প্রোগ্রাম থাকে যা ভাগ করে নেওয়া মেমরি বরাদ্দ করে তবে বাইরে বেরোনোর ​​আগে এটি প্রকাশ না করে, আপনার তুলনামূলকভাবে অদৃশ্য মেমরি ফাঁস হবে। যদি ভাগ করা মেমরিটি স্মৃতিতে লক থাকে তবে তা অদলবদল করতে বাধ্য করতে পারে। উপলব্ধ শেয়ার্ড মেমরির পরিমাণ সাধারণত তুলনামূলকভাবে সীমিত।
  • লিকুইডস্যাপ + আইসকাস্ট বান্ডিলটি মেমরি ব্যবহার করে এমন বাফারিংয়ের সমস্যাগুলিতে চলে যেতে পারে। আমি এই সংমিশ্রণটি ব্যবহার করি নি, সুতরাং এটি কীভাবে প্রদর্শিত হবে তা সম্পর্কে আমি নিশ্চিত নই।

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

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

আপনার যদি মেমরি ফাঁস হয় তবে আপনি ফ্রি মেমরি দেখতে পাবেন এবং বাফার দুটিই সঙ্কুচিত হতে শুরু করবে। এটি এখনও কোনও গুরুতর সমস্যা নয়, কারণ ফাঁস হওয়া মেমরিটি অবশেষে অদলবদল করে স্থানান্তরিত করা উচিত। আপনি অদলবদূর স্থানটি পূরণ না করা অবধি আপনার সিস্টেমটি ঠিকঠাক চলবে, এবং অবশিষ্ট খালি স্থানটি পয়েন্ট প্রোগ্রামগুলিতে সরিয়ে না দেওয়া শুরু করা যাবে। এটি সাধারণ যে স্বল্প পরিমাণে অদলবদল ব্যবহৃত হতে পারে।


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

2
@ জয়য়ারজো: মুনিন এবং সরগুলি কী চলছে তা সনাক্ত করতে সহায়তা করা উচিত। যদি আপনার কাছে প্রচুর ফ্রি মেমরি থাকে তবে আপনার অদলবদল করা উচিত নয়। আপনার আলাদা আই / ও সমস্যা হতে পারে। sarকোন পার্টিশনে I / O রয়েছে তা চিহ্নিত করতে সহায়তা করবে এবং সমস্যাটি আবিষ্কার করতে সহায়তা করবে।
বিলথোর

ম্যাকআরকোয়েস্টস পারফিল্ড পরামর্শের জন্য +1
জামেস্পো

11

র‌্যাম ব্যবহার সম্পর্কিত শীর্ষ 10 টি অ্যাপ্লিকেশন দেখতে আপনি এই আদেশটি ব্যবহার করতে পারেন:

ps -A --sort -rss -o comm,pmem | head -n 11

অনেক সময় সাব-প্রসেস তৈরি করা থাকলে এই কমান্ডটি আপনাকে সহায়তা করে:

ps auxf

এই পদ্ধতিতে আপনি দেখতে পাচ্ছেন কোন প্রক্রিয়াগুলি একত্রে অন্তর্ভুক্ত।


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

@ জয়য়ারজো: প্রক্রিয়া সংখ্যা কি পরিবর্তন হয়? আপনার কি আরও অনেক প্রক্রিয়া আছে? এবং এটি একটি শারীরিক সার্ভার বা ভার্চুয়াল এক?
রাফেল লুথিজার

আমি প্রক্রিয়া সংখ্যার কোন পরিবর্তন লক্ষ্য করেছি না। মূলত যখন আমি শীর্ষে থাকি, যখন সার্ভারটি লোডে মারা যাচ্ছিল আমি প্রচুর বোঝা বাদ দিয়ে মূল প্রশ্নে যা সংযুক্ত করেছি তার সাথে একটি খুব অনুরূপ চিত্র দেখতে পাচ্ছি: | সার্ভার শারীরিক।
জয়য়ারজো

2
"Vmstat" (যেমন vmstat -s) এর সাথে আরও তথ্য পাওয়ার চেষ্টা করুন। অথবা ইতিমধ্যে উল্লিখিত সরঞ্জাম "সার" দিয়ে। আপনার কি র‌্যাম ভিত্তিক ফাইল সিস্টেম আছে? তারপরে সম্ভবত "আইওস্ট্যাট" আরও তথ্য দিতে পারে।
রাফেল লুথিগার

1
মেমরি ফাঁস সনাক্ত করার চেষ্টা করা হচ্ছে কিনা "পিএমএম" (% এমইএম) ক্ষেত্রটি ইনপুট psবা topআউটপুটটিতে সঠিকভাবে দেখানো উচিত কিনা তা নিয়ে আমি সন্দেহ পোষণ করেছি : বর্তমানে প্রক্রিয়াটি যে শারীরিক মেমরিটি ব্যবহার করছে এটিই কেবল এটিই নয়? তবে প্রক্রিয়াটির ব্যবহৃত অন্যান্য অংশ (মেমরির ফাঁস) মেমরিটি অদলবদল হতে পারে। কোনও প্রক্রিয়ার আকার পরিমাপ করার জন্য সম্ভবত "আকার" বা "ভার্সাইজ" আরও উপযুক্ত হবে? উদাহরণস্বরূপ, ps -A --sort -size -o comm,size | head -n 11বাps -A --sort -vsize -o comm,vsize | head -n 11
ইম্জ - ইভান জ্যাকারিয়াশেভ

8

অ্যাপ্লিকেশনগুলির ক্ষেত্রে কোনও কিছুই সত্যই সেই স্মৃতিটিকে ব্যবহার করে না।

প্রোগ্রামের ব্যবহারের ক্ষেত্রে আপনার আসল মেমরির ব্যবহারটি কী তা সম্পর্কে আরও ভাল ধারণা পেতে আপনাকে 'ক্যাশেড' মানটি পৃষ্ঠা ক্যাশে উপস্থাপন করতে হবে ded

মূলত এটি ভাল মেমরি পরিচালনা এবং এটি আদর্শ যা আপনি চান।

আরও তথ্যের জন্য লিঙ্কটি এখানে দেখুন: http://www.linuxatemyram.com/


হ্যাঁ সেই লিঙ্কটি খুঁজে পেয়েছি এবং বাফার এবং ক্যাশে সম্পর্কে পড়েছি, তবে আমি যা পড়েছি তা থেকে যতটা পেতাম, সেগুলি অদলবদল করতে পারে না, তাই না?
জয়য়ারজো

@ জয়য়ারজো আমি সেখানে কী ঘটে তা বোঝার জন্য ভাবছি আমাদের তখন সেই সমস্যাটি দেখানোর পরিসংখ্যানের প্রয়োজন হবে। আপনি প্রদত্ত নম্বরগুলি অদলবদল বা প্রচুর আসল মেমরির ব্যবহার দেখায় না।
ম্যাথু ইফে

1

আমি আসলে এটিতে প্রো না, তবে তরল সাবান + আইসকাস্টটি মাল্টিমিডিয়া সম্পর্কিত। যখন সিস্টেমটি ফ্রি থাকে, তখন এটি ভবিষ্যতের ব্যবহারের জন্য মেমরিটিকে ক্যাশে করে এবং দখল করে। এবং যদি ট্রাফিক দিনের একটি নির্দিষ্ট সময় / সময়ের মধ্যে বৃদ্ধি পায় তবে তা অদলবদল শুরু হবে। এই মুহুর্তে, যদি অনুরোধগুলি (সামগ্রী দেখছেন ব্যবহারকারীরা) বৃদ্ধি পায় তবে প্রয়োজনীয় সংস্থানগুলি 8 জিবি র‌্যামের বেশি হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.