Firebase CLI- এ অন্তর্নির্মিত ডাটাবেস প্রোফাইলার টুল দিয়ে আপনার Firebase Realtime Database কর্মক্ষমতা পরিমাপ করুন। প্রোফাইলার টুল একটি নির্দিষ্ট সময়ের মধ্যে আপনার ডাটাবেসের সমস্ত কার্যকলাপ লগ করে, তারপর একটি বিশদ প্রতিবেদন তৈরি করে। আপনার ডাটাবেস কর্মক্ষমতা, স্পট সমস্যা এলাকা, এবং unindexed ক্যোয়ারী কমাতে সমস্যা সমাধানের জন্য বিস্তারিত রিপোর্ট ব্যবহার করুন.
একটি প্রোফাইল তৈরি করুন
আপনি আপনার Firebase Realtime Database প্রোফাইল করা শুরু করার আগে, নিশ্চিত করুন যে আপনি Firebase CLI এর সর্বশেষ সংস্করণটি ব্যবহার করছেন এবং আপনি যে ডেটাবেস এবং প্রোজেক্টটি প্রোফাইল করতে চান তার জন্য আপনি এটি শুরু করেছেন। মনে রাখবেন যে প্রোফাইলে আপনাকে অবশ্যই সেই প্রকল্পের একজন সম্পাদক বা মালিক হতে হবে।
নিম্নলিখিত কমান্ড দিয়ে আপনার ডাটাবেস প্রোফাইলিং শুরু করুন:
প্রোফাইলার একটি স্থিতি বার্তা প্রদর্শন করে কারণ এটি আপনার ডাটাবেস থেকে ক্রিয়াকলাপ রেকর্ড করে এবং প্রোফাইল তৈরি করে।firebase database:profile
প্রোফাইল সম্পূর্ণ করতে এবং ফলাফল প্রদর্শন করতে এন্টার টিপুন।
আপনার ফলাফল ব্যাখ্যা
প্রোফাইলার টুলটি আপনার ডাটাবেসের ক্রিয়াকলাপ সম্পর্কে সংগ্রহ করা ডেটা একত্রিত করে এবং ফলাফলগুলিকে তিনটি প্রাথমিক বিভাগে প্রদর্শন করে: গতি , ব্যান্ডউইথ , এবং সূচীহীন প্রশ্ন ৷
গতি
গতির প্রতিবেদন প্রতিটি অপারেশন প্রকারের জন্য সার্ভারের প্রতিক্রিয়া সময় (মিলিসেকেন্ডে) পরিমাপ করে। যাইহোক, স্পিড রিপোর্টে পরিমাপ করা গতি আসলে গতির শেষ ব্যবহারকারীদের অভিজ্ঞতাকে প্রতিফলিত নাও করতে পারে। নেটওয়ার্ক অবস্থা সহ বিভিন্ন কারণ ক্লায়েন্টের দিকে লেটেন্সি যোগ করতে পারে।
গতির প্রতিবেদনে নিম্নলিখিত বৈশিষ্ট্যগুলি অন্তর্ভুক্ত রয়েছে:
- পাথ: আপনার ডাটাবেসের পাথ যেখানে অপারেশন হয়েছে। যদি 25 টির বেশি চাইল্ড নোড থাকে, প্রোফাইলার টুল এগুলিকে একটি প্যারেন্ট পাথে ভেঙে দেয় এবং একটি
$wildcard
মার্কার যোগ করে। আপনি রিপোর্টে আপনার ডাটাবেসের রুট ডিরেক্টরি দেখতে পারেন, যা একটি ফরোয়ার্ড স্ল্যাশ/
দ্বারা প্রতিনিধিত্ব করে। - গণনা: প্রদত্ত পাথে ঘটে যাওয়া অপারেশনের সংখ্যা।
- গড় এক্সিকিউশন স্পিড: সেই পাথে নির্দিষ্ট অপারেশন টাইপ পরিচালনা করার জন্য প্রয়োজনীয় বিজনেস লজিক কার্যকর করতে সার্ভারের যে গড় সময় লাগে। এখানে পরিমাপ করা সময়ের ব্যবধানটি নীচে বর্ণিত "গড় মুলতুবি সময়" দ্বারা পরিমাপের পরে শুরু হয়।
- গড় মুলতুবি সময়: গড় সময়ের অনুরোধগুলি কার্যকর করার আগে সারিবদ্ধভাবে ব্যয় হয়। এই বিলম্ব সমস্ত ক্লায়েন্ট-সূচিত অনুরোধের জন্য সাধারণ। সার্ভার-সাইড রিকোয়েস্টের লেটেন্সি মোটামুটি সেই অনুরোধের মুলতুবি থাকা সময় এবং এক্সিকিউশন স্পিডের সমষ্টি।
- অনুমতি অস্বীকৃত: আপনার ডাটাবেসের ফায়ারবেস ডাটাবেস নিয়ম দ্বারা প্রদত্ত পাথে অপারেশনের সংখ্যা।
অপারেশন টাইপ দ্বারা গতি রিপোর্ট | |
---|---|
এক্সিকিউশন স্পিড পড়ুন | ডাটাবেস থেকে ডেটা পড়ার জন্য ক্লায়েন্টের অনুরোধের জন্য সার্ভারের প্রতিক্রিয়া সময়। রিড এক্সিকিউশন টাইম সাধারণত পঠিত ডেটার পরিমাণের সাথে স্কেল করে, কিন্তু এমনকি কিছু ছোট পঠনও ক্যাশে প্রিফেচিং দ্বারা বিলম্বিত হতে পারে। |
এক্সিকিউশন স্পিড লিখুন | ডাটাবেসে ডেটা লেখার জন্য ক্লায়েন্টের অনুরোধের জন্য সার্ভারের প্রতিক্রিয়া সময়। যে পরিমাণ ডেটা লেখা হচ্ছে তার সাথে এক্সিকিউশন টাইম স্কেল লিখুন। | এক্সিকিউশন স্পিড কানেক্ট করুন | ডাটাবেস ক্লায়েন্টদের জন্য অনুরোধের জন্য সার্ভার প্রতিক্রিয়া সময়। সংযোগের অনুরোধের জন্য লেটেন্সি সংযোগ ব্যবস্থাপনার সাথে সম্পর্কিত ইন-মেমরি সার্ভার-সাইড বুককিপিং দ্বারা প্রভাবিত হয়। |
সম্প্রচার এক্সিকিউশন গতি | রিয়েলটাইম আপডেটের জন্য প্রদত্ত পাথ শোনা ক্লায়েন্টদের কাছে ডেটা বিতরণ করতে সার্ভারের যে পরিমাণ সময় লাগে। ব্রডকাস্ট স্পিড রিপোর্টে কাউন্ট প্রপার্টিটি সংঘটিত সম্প্রচারের সংখ্যাকে একত্রিত করে, তথ্য প্রাপ্ত ক্লায়েন্টের সংখ্যা নয়। উদাহরণস্বরূপ, যদি 10 জন ক্লায়েন্ট একটি প্রদত্ত পথে শুনছিল এবং সার্ভার সমস্ত 10টি ক্লায়েন্টের জন্য একটি আপডেট সম্প্রচার করে, তবে 10 জন ক্লায়েন্ট ডেটা গ্রহণ করলেও সম্প্রচারের সংখ্যা শুধুমাত্র 1টি সম্প্রচার প্রতিফলিত করে। অনুমতি অস্বীকৃত সম্পত্তি সম্প্রচার গতি রিপোর্ট অন্তর্ভুক্ত করা হয় না. |
ব্যান্ডউইথ
ব্যান্ডউইথ রিপোর্ট ইনকামিং এবং আউটগোয়িং অপারেশন জুড়ে আপনার ডাটাবেস কতটা ডেটা ব্যবহার করে তার অন্তর্দৃষ্টি প্রদান করে। বিলিং অনুমান করার জন্য আপনার ব্যান্ডউইথ রিপোর্ট ব্যবহার করা উচিত নয়, কারণ এতে আপনার ডাটাবেস প্রোফাইল করার মতো অন্যান্য ক্রিয়াকলাপের জন্য ব্যবহৃত ব্যান্ডউইথ অন্তর্ভুক্ত নয়। ব্যান্ডউইথ রিপোর্ট মোটামুটিভাবে আপনার ডাটাবেসে এবং থেকে পড়া, লিখতে এবং সম্প্রচার ক্রিয়াকলাপ দ্বারা ব্যবহৃত ডেটার পেলোড আকার অনুমান করে। এটি এমন একটি টুল যা পারফরম্যান্স পরিমাপ করে, এমন একটি নয় যা বিলিং পূর্বাভাস দেয়।
ব্যান্ডউইথ রিপোর্টে নিম্নলিখিত বৈশিষ্ট্যগুলি অন্তর্ভুক্ত রয়েছে:
পাথ: আপনার ডাটাবেসের পাথ যেখানে অপারেশন হয়েছে। যদি 25 টিরও বেশি চাইল্ড নোড থাকে, তবে প্রোফাইলার টুল এগুলিকে একটি প্যারেন্ট পাথে ভেঙে দেয়।
মোট: প্রদত্ত পাথে সমস্ত অপারেশন জুড়ে ব্যবহৃত মোট আউটগোয়িং বা ইনকামিং বাইট।
গণনা: প্রদত্ত পাথে ঘটে যাওয়া অপারেশনের সংখ্যা।
গড়: প্রদত্ত পাথে অপারেশন জুড়ে ডাউনলোড বা আপলোড করা বাইটের গড় সংখ্যা (বাইট/লিখুন বা বাইট/পড়া)।
ব্যান্ডউইথ রিপোর্ট | |
---|---|
ডাউনলোড করা বাইট | ক্লায়েন্ট SDK এবং REST API-এর মাধ্যমে পাঠানো পঠন এবং সম্প্রচার ক্রিয়াকলাপের মাধ্যমে ব্যবহৃত ডেটা। |
আপলোড করা বাইট | ডাটাবেস সার্ভারে লেখার অনুরোধের মাধ্যমে ডেটা খরচ হয়। মুছে ফেলাগুলি ইনকামিং এর অধীনে 0 বাইট সহ লেখা হিসাবে দেখায়। |
সূচীহীন প্রশ্ন
সূচীহীন প্রশ্নগুলি ব্যয়বহুল হতে পারে, কারণ ক্লায়েন্টরা একটি অবস্থানে সমস্ত ডেটা ডাউনলোড করে এবং তারপরে এটিতে অনুসন্ধানগুলি সম্পাদন করে৷ এটি প্রয়োজনের চেয়ে বেশি ব্যান্ডউইথ ব্যবহার করে। আপনার ডাটাবেসের কর্মক্ষমতা অপ্টিমাইজ করতে আপনি যতটা সম্ভব আনইনডেক্স করা প্রশ্নের সমাধান করুন।
আনইনডেক্সড ক্যোয়ারি রিপোর্ট নিম্নলিখিত বৈশিষ্ট্যগুলি প্রদর্শন করে:
- পাথ: আপনার ডাটাবেসের পথ যেখানে সূচীহীন প্রশ্নগুলি ঘটেছে।
- সূচী: সূচীহীন প্রশ্নগুলি সমাধান করতে আপনার যে নিয়মটি যোগ করা উচিত। ইনডেক্সিং সম্পর্কে আরও জানুন ইনডেক্স আপনার ডেটা ।
- গণনা: প্রদত্ত পাথে ঘটেছে এমন সূচীহীন প্রশ্নের সংখ্যা।
উন্নত প্রোফাইলিং
আপনার ডাটাবেস পরিচালনা করা সমস্ত ক্রিয়াকলাপ দেখতে, --raw
পতাকা ব্যবহার করুন যখন আপনি আপনার ডাটাবেস প্রোফাইল করেন, নিম্নরূপ:
firebase database:profile --raw
কাঁচা আউটপুটে প্রতিটি অপারেশনের জন্য ক্লায়েন্টের তথ্যও অন্তর্ভুক্ত থাকে, যেমন userAgent
স্ট্রিং এবং IP ঠিকানা। Firebase Realtime Database অপারেশন প্রকারে আপনার Firebase Realtime Database প্রোফাইল করা বিভিন্ন অপারেশন সম্পর্কে আরও জানুন।
প্রোফাইলার টুল: একটি বিলিং টুল নয়
ব্যান্ডউইথ খরচ অনুমান করতে প্রোফাইলার টুল ব্যবহার করবেন না। প্রোফাইলার টুলটি আপনাকে আপনার ডাটাবেসের পারফরম্যান্সের একটি সামগ্রিক ছবি দেওয়ার উদ্দেশ্যে, আপনাকে অপারেশনগুলি নিরীক্ষণ করতে এবং সমস্যাগুলি সমাধান করতে সাহায্য করার জন্য, বিলিং অনুমান করার জন্য নয়। এটি নেটওয়ার্ক ট্র্যাফিকের জন্য হিসাব করে না, এটি শুধুমাত্র প্রতিক্রিয়াগুলিতে পাঠানো অ্যাপ্লিকেশন ডেটার একটি অনুমান রেকর্ড করে৷
Firebase দ্বারা বিল করা নেটওয়ার্ক ট্রাফিকের কিছু সাধারণ উদাহরণ নিচে দেওয়া হল যেগুলি আপনার ডাটাবেস প্রোফাইলে অন্তর্ভুক্ত নয়:
- প্রোটোকল ওভারহেড: সার্ভার এবং ক্লায়েন্টদের মধ্যে কিছু অতিরিক্ত ট্র্যাফিক একটি সেশন স্থাপন এবং বজায় রাখার জন্য প্রয়োজনীয়। অন্তর্নিহিত প্রোটোকলের উপর নির্ভর করে, এই ট্র্যাফিক অন্তর্ভুক্ত হতে পারে: ফায়ারবেস রিয়েলটাইম ডেটাবেসের রিয়েলটাইম প্রোটোকল ওভারহেড, ওয়েবসকেট ওভারহেড এবং HTTP হেডার ওভারহেড। প্রতিবার একটি সংযোগ স্থাপন করা হলে, এই ওভারহেড, যেকোনো SSL এনক্রিপশন ওভারহেডের সাথে মিলিত, সংযোগের খরচে অবদান রাখে। যদিও এটি সাধারণত একটি বড় পরিমাণ ব্যান্ডউইথ নয়, তবে এটি যথেষ্ট হতে পারে যদি আপনার পেলোডগুলি ছোট হয় বা আপনি ঘন ঘন, ছোট সংযোগ করেন।
- SSL এনক্রিপশন ওভারহেড: নিরাপদ সংযোগের জন্য প্রয়োজনীয় SSL এনক্রিপশন ওভারহেডের সাথে সম্পর্কিত একটি খরচ আছে। গড়ে, প্রাথমিক হ্যান্ডশেকের জন্য এই খরচ প্রায় 3.5KB, এবং প্রতিটি বহির্গামী বার্তায় TLS রেকর্ড শিরোনামের জন্য প্রায় 40B। বেশিরভাগ অ্যাপের জন্য, এটি আপনার বিলের একটি ছোট শতাংশ। যাইহোক, যদি আপনার নির্দিষ্ট ক্ষেত্রে প্রচুর SSL হ্যান্ডশেকের প্রয়োজন হয় তবে এটি একটি বড় শতাংশ হতে পারে। উদাহরণস্বরূপ, যে ডিভাইসগুলি TLS সেশনের টিকিট সমর্থন করে না সেগুলির জন্য বড় সংখ্যক SSL সংযোগ হ্যান্ডশেকের প্রয়োজন হতে পারে।
আপনার বিল বোঝা এবং অনুমান সম্পর্কে আরও পড়ুন।