এটি মূলত একটি লগিং / কাউন্টিং অ্যাপ্লিকেশন যা প্যাকেটের সংখ্যা এবং প্যাকেটের প্রকার গণনা ইত্যাদি একটি পি 2 পি চ্যাট নেটওয়ার্কে রয়েছে। এটি 5 মিনিটের সময়কালে প্রায় 4-6 মিলিয়ন প্যাকেটের সমান হয়। এবং যেহেতু আমি কেবল এই তথ্যের একটি "স্ন্যাপশট" নিই, আমি প্রতি পাঁচ মিনিটে কেবল 5 মিনিটেরও বেশি পুরানো প্যাকেটগুলি সরাচ্ছি। সুতরাং এই সংগ্রহে থাকা আইটেমগুলির সর্বাধিক হ'ল 10 থেকে 12 মিলিয়ন।
যেহেতু আমার কাছে বিভিন্ন সুপারপিয়ারের সাথে 300 সংযোগ স্থাপন করা দরকার, এটি এমন একটি সম্ভাবনা যা প্রতিটি প্যাকেট কমপক্ষে 300 বার .োকানোর চেষ্টা করছে (যার কারণেই সম্ভবত এই ডেটা মেমোরিতে রাখা কেবল যুক্তিসঙ্গত বিকল্প)।
বর্তমানে, আমি এই তথ্যটি সংরক্ষণ করার জন্য একটি অভিধান ব্যবহার করছি। তবে আমি প্রচুর পরিমাণে আইটেমগুলি সঞ্চয় করার চেষ্টা করছি বলে আমি বড় অবজেক্টের হিপ নিয়ে ইস্যুগুলিতে চলে যাই এবং সময়ের সাথে সাথে স্মৃতি ব্যবহারের পরিমাণ ক্রমাগত বৃদ্ধি পায়।
Dictionary<ulong, Packet>
public class Packet
{
public ushort RequesterPort;
public bool IsSearch;
public string SearchText;
public bool Flagged;
public byte PacketType;
public DateTime TimeStamp;
}
আমি মাইএসকিএল ব্যবহার করার চেষ্টা করেছি, তবে আমার যে পরিমাণ তথ্য সন্নিবেশ করতে হবে তা (এটি কোনও নকল ছিল না তা পরীক্ষা করার সময়) এবং এটি লেনদেনের সময় ব্যবহার করতে সক্ষম ছিল না।
আমি মঙ্গডব চেষ্টা করেছি, তবে এর জন্য সিপিইউ ব্যবহার উন্মাদ ছিল এবং তা রাখেনি।
আমার মূল সমস্যাটি প্রতি 5 মিনিটে উত্থাপিত হয় কারণ আমি 5 মিনিটের চেয়ে পুরানো সমস্ত প্যাকেটগুলি সরিয়ে ফেলি এবং এই ডেটার একটি "স্ন্যাপশট" নিই। যেহেতু আমি নির্দিষ্ট প্যাকেটের ধরণের প্যাকেটের সংখ্যা গণনা করতে লিনকুই কোয়েরিগুলি ব্যবহার করছি। আমি ডেটাতে একটি পৃথক () ক্যোয়ারীও ডাকছি, যেখানে আমি কীভ্যালুভাইয়ারের কীটি থেকে 4 বাইট (আইপি ঠিকানা) কেটে ফেলি এবং কীভালুপাইয়ারের মানটিতে অনুরোধকৃত মানটির সাথে একত্রিত করি এবং এটির একটি পৃথক সংখ্যা পেতে এটি ব্যবহার করি সমস্ত প্যাকেট থেকে সমবয়সী।
অ্যাপ্লিকেশনটি বর্তমানে প্রায় 1.1 গিগাবাইট মেমরির ব্যবহারের উপরে ঘোরাফেরা করে এবং যখন কোনও স্ন্যাপশট বলা হয় তখন এটি ব্যবহারের দ্বিগুণ হতে পারে।
আমার কাছে একটি উন্মাদ পরিমাণ র্যাম থাকলে এখন এটি কোনও সমস্যা হবে না, তবে আমার যে ভিএম চলছে এটি এই মুহুর্তে 2 জিবি র্যামের মধ্যে সীমাবদ্ধ।
কোন সহজ সমাধান আছে?