এক এক্সট্রি ডিরেক্টরিতে ফাইলের সর্বাধিক সংখ্যা এখনও গ্রহণযোগ্য পারফরম্যান্স পেয়েছে?


25

আমার একটি এক্সট্রি ডিরেক্টরিতে একটি অ্যাপ্লিকেশন লেখা রয়েছে যা সময়ের সাথে সাথে প্রায় তিন মিলিয়ন ফাইলের মধ্যে বেড়েছে। বলা বাহুল্য, এই ডিরেক্টরিটির ফাইল তালিকা পড়া অসহনীয়ভাবে ধীর।

আমি ext3 দোষ দিই না সঠিক সমাধানটি হ'ল অ্যাপ্লিকেশন কোডটি ./a/b/c/abc.extকেবলমাত্র ব্যবহারের চেয়ে সাব-ডিরেক্টরিতে লিখতে দেওয়া ./abc.ext

আমি এই জাতীয় একটি সাব-ডিরেক্টরি কাঠামোতে পরিবর্তন করছি এবং আমার প্রশ্নটি সহজভাবে: গ্রহণযোগ্য পারফরম্যান্স পাওয়ার পরে মোটামুটি কতগুলি ফাইল একটি এক্সট্রোল ডিরেক্টরিতে সঞ্চয় করা উচিত? আপনার অভিজ্ঞতা কি?

বা অন্য কথায়; ধরে নিলাম যে আমাকে কাঠামোটিতে তিন মিলিয়ন ফাইল সংরক্ষণ করতে হবে, ./a/b/c/abc.extকাঠামোর স্তরটি কত গভীর হতে হবে?

স্পষ্টতই এটি এমন একটি প্রশ্ন যার সঠিক উত্তর দেওয়া যায় না, তবে আমি বল পার্কের হিসাবের সন্ধান করছি।

উত্তর:


12

প্রদত্ত যদি আপনার এমন কোনও ডিস্ট্রো থাকে যা dir_indexসামর্থ্যটিকে সমর্থন করে তবে আপনি সহজেই একটি একক ডিরেক্টরিতে 200,000 ফাইল রাখতে পারেন। আমি নিরাপদে থাকার জন্য যদিও এটি প্রায় 25,000 এ রাখি। ছাড়া dir_index, এটি 5000 এ রাখার চেষ্টা করুন।


10

হতে খুব সতর্কতা অবলম্বন কিভাবে আপনি ডিরেক্টরি বিভক্ত নির্বাচন করুন। "a / b / c" আমার কাছে বিপর্যয়ের একটি রেসিপি বলে মনে হচ্ছে ...

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

আমাদের কাছে একটি ক্লায়েন্ট রয়েছে যা "একাধিক ডিরেক্টরি" লেআউটটি করেছিল এবং প্রতি ডিরেক্টরিতে কেবল এক থেকে পাঁচটি ফাইল রাখে এবং এটি তাদের হত্যা করে। এই ডিরেক্টরি কাঠামোয় একটি "ডু" করতে 3 থেকে 6 ঘন্টা। এখানে ত্রাণকর্তা ছিলেন এসএসডি, তারা তাদের আবেদনের এই অংশটি আবার লিখতে ইচ্ছুক ছিল না এবং কোনও এসএসডি এই সময়টিকে কয়েক ঘন্টা থেকে কয়েক মিনিটের মধ্যে নামিয়ে নিয়েছিল।

সমস্যাটি হ'ল ডিরেক্টরি স্তরের প্রতিটি স্তরের সন্ধানগুলি লাগে এবং সিক্সগুলি অত্যন্ত ব্যয়বহুল। ডিরেক্টরিটির আকারও একটি ফ্যাক্টর, সুতরাং এটির চেয়ে বৃহত্তর চেয়ে ছোট হওয়া একটি বড় জয়।

ডিরেক্টরি প্রতি কত ফাইল সম্পর্কে আপনার প্রশ্নের জবাব দিতে, 1,000 আমি "সর্বোত্তম" হিসাবে কথা শুনেছি তবে 10,000 এ পারফরম্যান্স ঠিক আছে বলে মনে হচ্ছে।

সুতরাং, আমি যা প্রস্তাব করব তা হল এক স্তরের ডিরেক্টরিগুলি, প্রতিটি স্তরের উচ্চতর এবং ছোট হাতের অক্ষর এবং অঙ্কগুলি দিয়ে তৈরি শীর্ষ স্তরের প্রায় 3800 ডিরেক্টরিগুলির জন্য ডিরেক্টরি 2 অক্ষর দীর্ঘ। তারপরে আপনি 38 টি ফাইল সম্বলিত উপ-ডিরেক্টরিগুলি সহ 14 এম ফাইলগুলি বা 3 এম ফাইলের জন্য উপ-ডিরেক্টরিতে প্রায় 1000 টি ফাইল রাখতে পারবেন।

আমি অন্য ক্লায়েন্টের জন্য এর মতো পরিবর্তন করেছি এবং এটি একটি বিশাল পার্থক্য করেছে।


6

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

আমার থাম্বের ব্যক্তিগত নিয়মটি <= 20k ফাইলের ডিরেক্টরি আকারের জন্য লক্ষ্য করা, যদিও আমি 100k ফাইল / ডিরেক্টরি সহ অপেক্ষাকৃত শালীন কার্য সম্পাদন দেখেছি।


3

আমার কাছে সমস্ত ফাইলের ফোল্ডারে যেতে হয়:

আপলোড / [তারিখ] / [HOUR] /yo.png

এবং কোনও কার্যকারিতা সমস্যা নেই।


4
এবং আপনি প্রতি ঘন্টা কতগুলি ফাইল পাবেন?
ক্যাসাবেল

2

http://en.wikedia.org/wiki/Ext3# কার্যকারিতা - এটি উল্লেখ করে যে কোনও ডিরেক্টরিতে কেবল প্রায় 32000 সাব-ডিরেক্টরি থাকতে পারে তবে ফাইলগুলির কোনও উল্লেখ করা যায় না।

http://roopindersingh.com/2008/05/10/ext3-handling-large-number-of-files-in-a-directory/

এছাড়াও, আমি বিশেষজ্ঞ এক্সচেঞ্জকে ঘৃণা করি, তবে আমি এই প্রশ্নের একটি মন্তব্য পড়েছি যে প্রতি ডিরেক্টরিতে 10-15,000 এর চেয়ে কম হওয়া আদর্শ।


2

আমি একটি শালীন লোডের অধীনে প্রচুর পরিমাণে মেমরির সাথে একটি দুর্দান্ত শক্তিশালী সার্ভারে নিশ্চিত করতে পারি যে ,000০,০০০ ফাইল সমস্ত ধরণের বিপর্যয়ের কারণ হতে পারে। আমি এতে 70k ফাইল সহ একটি ক্যাশে ফোল্ডারটি সরাতে গিয়েছিলাম এবং এটি 255 এ সর্বাধিক সীমা না হওয়া পর্যন্ত অ্যাপাচি নতুন দৃষ্টান্ত তৈরি করতে শুরু করে এবং সিস্টেমটি সমস্ত ফ্রি মেমরি ব্যবহার করে না (যদিও ভার্চুয়াল উদাহরণটি কম ছিল) 16 যে কোনও উপায়ে, এটি 25,000 এর নীচে রাখা সম্ভবত একটি বিচক্ষণ পদক্ষেপ


1

আমার অভিজ্ঞতায়, সর্বোত্তম পন্থাটি হ'ল আগে থেকেই ফাইলের কাঠামোটি অতিরিক্ত প্রকৌশলী না করা। কমপক্ষে অন্য একটি উত্তরে যেমন উল্লেখ করা হয়েছে, সেখানে ফাইল-সিস্টেম এক্সটেনশনগুলি রয়েছে যা কার্য সম্পাদন-ইস্যু সমাপ্তির বিষয়টি নিয়ে কাজ করে।

যে সমস্যাটি আমি প্রায়শই ঘন ঘন আঘাত করেছিলাম তা হ'ল প্রশাসনিক প্রান্তে ব্যবহারযোগ্যতা। কোনও ডিরেক্টরিতে ফাইলের সংখ্যা হ্রাস করতে আপনি যে পরিমাণ কাজ করতে পারেন তা হ'ল সম্ভবত আপনার এখন প্রয়োজন প্রয়োজন।

স্কয়ার্ট (3_000_000) == 1732

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

আপনার দৃষ্টান্ত স্থাপন এই হবে ./a/abc.ext, ./ab/abc.ext, ./abc/abc.ext, ...।

ফাইলগুলির বিস্তার প্রকৃত ফাইলের উপর নির্ভর করবে। প্রতিটি নামক মিলিয়ন ফাইলের ডিরেক্টরিতে এই কৌশলটি প্রয়োগ করার কথা ভাবুন foobar???.txt। আরও বেশি ছড়িয়ে যাওয়ার উপায় রয়েছে, যেমন প্রতিটি ফাইলের এমডি 5 এর সমষ্টি থেকে নির্দিষ্ট সংখ্যক বিটের মানের উপর ভিত্তি করে হ্যাশিং, তবে আমি অনুমান করার সাহস করতে যাচ্ছি যে আপনি কী সম্পাদন করতে চেষ্টা করছেন তার জন্য ওভারকিল হবে।


1

হুম, আমি এই নিবন্ধটি সম্প্রতি পড়েছি । মূলত আপনি আপনার পছন্দসই হ্যাশিং অ্যালগরিদমের বিতরণটি উপার্জন করেন। আমি সংখ্যার সাথে খেলতে শুরু করেছি, একটি মাইএসকিউএল স্বাক্ষরিত আইএনটির সর্বাধিক মূল্য রয়েছে 2147483647 You প্রদত্ত ডেটা সেটের জন্য প্রতি ডিরেক্টরি বিভাজন, তবে অনুকূল ডিরেক্টরি / ফাইল সংস্থাগুলিতে অভিজ্ঞতা অভিজ্ঞতা খুঁজে পাওয়া শক্ত। এই নিবন্ধটি ফাইল সিস্টেমগুলিতে পারফরম্যান্স পার্থক্য সম্পর্কে কিছুটা অন্তর্দৃষ্টি দেয় (কিছু আকর্ষণীয় মেট্রিক), তবে অনুকূল সংস্থাগুলি সম্পর্কে কিছুই নয়।


0

আমি মনে করি আপনি এটিতে খুব বেশি চিন্তাভাবনা করছেন। এমনকি যদি আপনি একক অতিরিক্ত স্তরের ডিরেক্টরিও চয়ন করেন এবং জিনিসগুলিতে সমানভাবে ভারসাম্য বজায় রাখতে সক্ষম হন তবে আপনার প্রতি ডিরেক্টরিতে 1732 * ডিরেক্টরি এবং 1732 ফাইল থাকতে হবে।

আপনি যদি কয়েকশো বিলিয়ন ফাইলের প্রয়োজনের পরিকল্পনা না করেন তবে আপনি 1000 এবং 100,000 এর মধ্যে একটি সংখ্যা বেছে নিতে পারেন এবং ভাল ফলাফল পেতে পারেন।

* 3 মিলিয়ন বর্গমূল।

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