অপ্রত্যাশিত (?) উচ্চ 'নষ্ট' স্মৃতি মেমকেচেড


18

আপডেট হয়েছে, দীর্ঘতর (দুঃখিত) প্রশ্নের নীচে দেখুন।

আমাদের স্মরণ করা পরিসংখ্যানের দিকে তাকিয়ে আমার মনে হয় যে আমি এমন একটি সমস্যা পেয়েছি যা সম্পর্কে আমি আগে অবগত ছিলাম না। দেখে মনে হচ্ছে আমাদের কাছে অদ্ভুত পরিমাণে নষ্ট স্থান রয়েছে। আমি পরিবর্তনের জন্য phpmemcacheadmin পরীক্ষা করে দেখেছি এবং এই চিত্রটি আমার দিকে চেয়ে আছে:

স্মৃতিযুক্ত ক্যাশে আকারের গ্রাফিক

এখন আমি এই ধারণাটির মধ্যে ছিলাম যে সবচেয়ে খারাপ পরিস্থিতিটি হবে 50% বর্জ্য, যদিও আমি সমস্ত বিবরণ না জেনে স্বীকার করি। আমি অন্যদের মধ্যে পড়েছি - এই পৃষ্ঠাটি যা সত্যই কিছুটা পুরানো, তবে আমাদের সংস্করণটিকে স্মরণে রাখা হয়েছে। আমি মনে করি যে সিস্টেমটি কীভাবে কাজ করে তা আমি বুঝতে পারি ( উদাঃ ) আমি বিশ্বাস করি তবে কীভাবে আমরা 76% নষ্ট স্থান পেতে পারি তা বুঝতে আমার খুব কষ্ট হয়েছে।

Phpmemcacheadmin দেখায় যে উচ্ছেদের হার 2 ev/s, তাই এখানে কিছু সমস্যা আছে।

  • প্রাথমিক প্রশ্নটি: আমি এটি ঠিক করতে কী করতে পারি । আমি এটিতে আরও স্মৃতি ফেলে দিতে পারি (আমার মনে হয় কিছু অতিরিক্ত উপলব্ধ রয়েছে), সম্ভবত আমার স্ল্যাব কনফিগারেশনটি করা উচিত (এই সংস্করণটি দিয়ে কি এটি সম্ভব?), সম্ভবত অন্যান্য বিকল্প আছে? মেমচেড সংস্করণ আপগ্রেড করা দ্রুত উপলব্ধ বিকল্প নয়।

  • কৌতূহলের বাইরে দ্বিতীয় প্রশ্নটি হ'ল অবশ্যই যদি অপ্রয়োজনীয় স্থানের 75% (এবং উত্থিত) হারের প্রত্যাশা থাকে এবং তা যদি হয় তবে কেন।

সিস্টেম: এটি বর্তমানে আমি কিছু করতে পারি এমন কিছু নয়, আমি জানি যে মেমক্যাচ করা সংস্করণটি সবচেয়ে নতুন নয়, তবে এই কার্ডগুলি আমার সাথে মোকাবেলা করা হয়েছে।

  • স্মৃতিচারণ 1.4.5
  • অ্যাপাচি ২.২.১7
  • পিএইচপি 5.3.5

@ ডেভিডশওয়ার্টজ এর উত্তরের প্রতিক্রিয়া হিসাবে: এখানে পিএইপিএমএমকাডহেডমিন যে স্ল্যাব পরিসংখ্যান তৈরি করে: এখানে বিটিডাব্লুতে আরও বেশি স্ল্যাব রয়েছে)

( আমি এখানে পাঠ্য বিন্যাসে কিছুক্ষণ পরে পরিসংখ্যানগুলি আটকিয়েছি )

স্ল্যাব বিশদ

হালনাগাদ

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

**Slab 5 Stats**
Chunk Size  496.0 Bytes
Used Chunk  77502 [24.6 %]
Total Chunk 314986
Total Page  149
Wasted      117.3 MBytes
Hits        30.9 Request/sec
Evicted     0

এটি পূর্ণ নয়, এটি কোনও উচ্ছেদ হয়নি, তবে এটি 117.3 এমবিাইট নষ্ট করছে। আমি যে দ্রুত গণনা করেছি (আমি ভুল হলে আমাকে সংশোধন করি) তা হ'ল:

  • পূর্ববর্তী স্ল্যাবটির আকার 328 আকারের, তাই সবচেয়ে খারাপ ক্ষেত্রে এই স্ল্যাবটি 329 বাইট খণ্ডে পূর্ণ।
  • এর অর্থ এটি ব্যবহৃত ছাঁটা = 12942834 বাইট = 12.3 এমবি প্রতি 167 বাইট নষ্ট করছে

তাহলে অন্য 105 এমবি নষ্ট কোথা থেকে এল ? এটি ঠিক এর পাশেই এটির মতো বড় ভাই:

**Slab 6 Stats** 
Chunk Size  744.0 Bytes
Used Chunk  17488 [31.0 %]
Total Chunk 56360
Total Page  40
Wasted      31.1 MBytes
Hits        107.7 Request/sec
Evicted     1109

সমস্যাটি হ'ল অন্যান্য স্ল্যাবগুলিতে প্রচুর অব্যবহৃত স্থান রয়েছে, তবু 3 স্ল্যাব 100% পূর্ণ এবং উচ্ছেদগুলি দেখে seeing
ডেভিড শোয়ার্জ

ভাল কথা, এটি উচ্ছেদের ব্যাখ্যা করবে, যদিও আমি নিশ্চিত নই যে 'নষ্ট' সংখ্যাটি কীভাবে গণনা করা হয়। যদি স্ল্যাব 8-এ কেবল 13.9% ব্যবহার করা থাকে তবে অবশ্যই সেখানে অবশ্যই কিছু "মুক্ত" স্থান থাকতে হবে?
Nanne

হ্যাঁ, এই স্ল্যাবে ফাঁকা জায়গা আছে। কিন্তু যদি সেই বস্তুগুলি উচ্ছেদ করা হচ্ছে that স্ল্যাবে না যায় তবে এটি কোনও সহায়ক নয়।
ডেভিড শোয়ার্জজ

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

উত্তর:


10

এই প্রশ্নের এক বছর হয়ে গেছে এবং আমি জানি না যে আপনি আপনার উত্তরটি পেয়েছেন কিনা তবে আমি বলতে চাই যে "নষ্ট" সম্পর্কে আপনার ধারণাটি ভুল।

নষ্ট মেমরিটি মেমোরিতে বরাদ্দ করা হয় যাতে এটি অন্য অ্যাপ্লিকেশন দ্বারা ব্যবহার করা যায় না, তবে এটি এখনও মেমচেডের জন্য উপলব্ধ।

ব্যাখ্যাটি সহজ করার জন্য, ধরে নিন যে আপনার কাছে 3 সিলাবের সাথে 3 এমবি র‌্যামের একটি মেমক্যাচ রয়েছে:

slab class  1: chunk size     10485 perslab      100
slab class  2: chunk size    104857 perslab       10
slab class  3: chunk size   1048576 perslab        1

10 কে সাইজের একটি একক "সেট" চালান ute আপনি আপনার পরিসংখ্যানগুলিতে দেখতে পাবেন (মোটামুটিভাবে) যে আপনার রয়েছে:

0.03% used
66.6% free
33% wasted

এটি কারণ মেমক্যাচ "স্ল্যাব ক্লাস 1" থেকে একক অংশ বরাদ্দ করে এবং সেই স্ল্যাবের জন্য 99% মেমরি "নষ্ট" হয় এবং 1% "ব্যবহৃত হয়" এর অর্থ এই নয় যে স্ল্যাব এবং সেই স্ল্যাবের জন্য বরাদ্দকৃত স্মৃতিটি চলে গেছে।

10 কে আকারের সাথে আরও একটি একক "সেট" চালিত করুন। এবার আপনি দেখতে পাবেন:

0.06% used
66.6% free
32.7% wasted

সুতরাং এখন আপনি স্ল্যাব 1, "নষ্ট" পরিসংখ্যানগুলি বাদ দিয়ে 100 বরাদ্দ অংশগুলির মধ্যে 2 ব্যবহার করছেন এবং ব্যবহৃত পরিসংখ্যান বৃদ্ধি পেয়েছে।

ব্যবহৃত% + নষ্ট% 100% এর সমান হওয়ার জন্য এখানে কোনও ভুল নেই। এর অর্থ এই নয় যে আপনার আর স্মৃতি অবশিষ্ট নেই, এর সহজ অর্থ হ'ল আপনি প্রতিটি স্ল্যাব থেকে কমপক্ষে একটি অংশ বরাদ্দ করেছেন।

এই সমস্যাটি দেখতে 100 কিলো আকারের একটি "সেট" এবং 1000 কে আকারের আরও একটি see

এখন আপনি দেখতে পাবেন

36.6% used
   0% free
63.3% wasted

ভাল লাগছে! এটি ব্যাক আপ করার জন্য আপনার কোনও লিঙ্ক আছে? যদি এর অর্থ এটি হয় যে আমার মেমক্যাচ-সার্ভারটি ভাল করছিল (তবে) তবে আমরা ভাবি :)। যদি আমি আপনাকে সঠিকভাবে বুঝতে পারি তবে অপচয় হ'ল অর্থ বরাদ্দ দেওয়া হয়েছে, তবে এটি ব্যবহারের জন্য উপলব্ধ। এর অর্থ হ'ল যদি কিছুই নিখরচায় থাকে তবে আপনি আরও বেশি স্ল্যাব বরাদ্দ করতে পারবেন না, তবে এর অর্থ আপনার প্রতি প্রতি সমস্যা নেই?
Nanne

1
আমার মাথার উপরে আমার কোনও লিঙ্ক নেই তবে নিজেকে পরীক্ষা করা খুব সহজ। আপনার কমান্ড লাইনে হিট করুন এবং এটি কীভাবে কাজ করে তা পরীক্ষা করার জন্য একটি নমুনা ছোট সার্ভার তৈরি করুন। আপনি ভার্বোজ ডিবাগ বার্তাগুলির জন্য -vv বিকল্পটি ব্যবহার করতে পারেন, যা আপনাকে প্রাথমিক তৈরি স্ল্যাব প্রদর্শন করবে যেমন: "মেমক্যাচড -vv -p 11500 -m 3 -n 10000 -f 10" আপনাকে খণ্ড আকারের 10 কে 100 কে এবং 1000 কে দিয়ে 3 টি স্ল্যাব তৈরি করবে। এবং "সেট" জারি রাখুন এবং আপনার নষ্ট / ব্যবহৃত পরিসংখ্যান ঠিক যেমন আমি উপরে বর্ণিত হিসাবে পরিবর্তন দেখুন see
কালী

ভাল যুক্তি. আপনার উত্তরগুলির জন্য আমি কীভাবে কিছু অতিরিক্ত মনোযোগ পেতে পারি তা জানতে এখন :)
ন্যানি

6

আপনার কাছে খুব ছোট সংখ্যক বস্তু রয়েছে। সাধারণত, সবচেয়ে ছোট স্ল্যাব 104-বাইট এন্ট্রি ধারণ করে। আপনার যদি এমন অনেকগুলি এন্ট্রি থাকে যা কেবলমাত্র একটি পূর্ণসংখ্যার সাথে অন্যটির মানচিত্র তৈরি করে তবে আপনি 85% এর চেয়ে বেশি বর্জ্য পেতে পারেন।

ছোট জিনিসগুলির জন্য মেমক্যাচ করা নিবন্ধে আপনি কীভাবে এটি টিউন করবেন সে সম্পর্কে তথ্য পেতে পারেন ।


আমি যদি পরিসংখ্যান পৃষ্ঠাটি সঠিকভাবে পড়ি তবে এটি হয় না। সর্বাধিক বর্জ্য 480.0 বাইট-খণ্ড সহ একটি স্ল্যাবে রয়েছে। আমি কিছু পরিসংখ্যান প্রদর্শন করতে পারি কিনা তা আমাকে পরীক্ষা করতে দিন ...
Nanne

ওহ, তবে এটি ঠিক এবং স্বাভাবিক, উদ্বেগের কিছু নেই। এখন সেখানে খুব কম ডেটা আছে। (লক্ষ্য করুন, উদাহরণস্বরূপ, যে স্ল্যাবটি কেবলমাত্র 14% ব্যবহৃত হয়))
ডেভিড শোয়ার্জ

তবে কীভাবে 75% নষ্ট হয়? এই নম্বরটিতে অব্যবহৃত স্থান অন্তর্ভুক্ত রয়েছে? আমি আশা করি এটি "ফ্রি" হিসাবে গণ্য হবে। এছাড়াও, আমরা নষ্ট হওয়া বৃদ্ধি দেখতে পেয়েছি // যেমন দিন যাচ্ছে ততই ব্যবহৃত স্মৃতিশক্তি হ্রাস পাচ্ছে, অন্যদিকে সাইটটি আরও ব্যস্ত হয়ে ওঠে। এটি এবং আমাদের উচ্ছেদের বিষয়টি সত্য যে, কী করা যায় তা আমাকে অবাক করে দেয়।
Nanne

কম স্ল্যাব থাকা ভুল স্ল্যাবে আটকা পড়ার কারণে খুব বেশি স্মৃতির সমস্যা এড়াতে সহায়তা করতে পারে। উদাহরণস্বরূপ, -f 1.5 -I 2800সাহায্য করতে পারে।
ডেভিড শোয়ার্টজ

ম্যান-পৃষ্ঠাটি খুব পরিষ্কার নয়: -I 28001M ডিফল্টের বিপরীতে, এর অর্থ 2800 কে?
Nanne

-1

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

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