8 মিনিট

Mark Russinovich ও Windows Internals: পর্যবেক্ষণযোগ্যতা ও নির্ভরযোগ্যতা

জানুন কিভাবে Mark Russinovich-এর Windows Internals মানসিকতা Sysinternals, WinDbg ও বাস্তব পরিবীক্ষণকে গঠন করেছে — উইন্ডোজে ডিবাগিং ও নির্ভরযোগ্যতার জন্য ব্যবহারিক ওয়ার্কফ্লো।

Mark Russinovich ও Windows Internals: পর্যবেক্ষণযোগ্যতা ও নির্ভরযোগ্যতা

কেন Mark Russinovich এখনও উইন্ডোজ অপারেশনে প্রাসঙ্গিক

আপনি যদি প্রোডাকশনে উইন্ডোজ চালান—ল্যাপটপ, সার্ভার, VDI, বা ক্লাউড VM—তাহলে Mark Russinovich-এর কাজ দৈনন্দিন অপারেশনে এখনও দেখা যায়। না, সেটা ব্যক্তিত্ব বা নস্টালজিয়ার কারণে নয়, বরং কারণ তিনি সমস্যার সমাধানে প্রমান-প্রধান পদ্ধতি প্রসারিত করেছেন: OS আসলে কী করছে সেটা দেখুন, তারপর লক্ষণের ব্যাখ্যা প্রমাণ সহ দিন।

তিনটি সরল-ইংরেজি ধারণা

পর্যবেক্ষণযোগ্যতা (Observability) মানে আপনি সিস্টেম থেকে উৎপন্ন সিগন্যাল (ইভেন্ট, ট্রেস, কাউন্টার) ব্যবহার করে “এখন কী ঘটছে?” উত্তর দিতে পারেন। যখন একটি সার্ভিস ধীর হয়ে যায় বা লগঅন হ্যাং করে, পর্যবেক্ষণযোগ্যতাই অনুমান বনাম জ্ঞানের পার্থক্য নির্ধারণ করে।

ডিবাগিং হল অস্পষ্ট সমস্যা ("এটি ফ্রিজ করেছে")কে একটি নির্দিষ্ট মেকানিজমে পরিণত করা ("এই থ্রেডটি I/O-তে ব্লক করছে", "এই প্রসেস পেজ ফাইল থ্র্যাশ করছে", "এই DLL injection আচরণ বদলে দিয়েছে")।

নির্ভরযোগ্যতা হল চাপের অধীনে কাজ চালিয়ে যাওয়ার এবং পূর্বানুমেয়ভাবে পুনরুদ্ধার করার ক্ষমতা—কম ইনসিডেন্ট, দ্রুত রিস্টোর, এবং নিরাপদ পরিবর্তন।

কেন ইন্টার্নালস জ্ঞান ইনসিডেন্ট ত্বরান্বিত করে

অধিকাংশ “রহস্যময় আউটেজ” আসলে রহস্য নয়—এগুলো হল উইন্ডোজ আচরণ যেগুলো আপনি এখনও ম্যাপ করেননি: হ্যান্ডেল লিক, অস্থির চাইল্ড প্রসেস, আটকে থাকা ড্রাইভার, DNS টাইমআউট, ভাঙা অটো-স্টার্ট এন্ট্রি, বা সিকিউরিটি টুলিং যা ওভারহেড যোগ করে। উইন্ডোজ ইন্টার্নালস (প্রসেস, থ্রেড, হ্যান্ডেল, সার্ভিস, মেমরির, I/O) সম্পর্কে একটি মৌলিক ধারণা আপনাকে দ্রুত প্যাটার্ন চিনতে এবং সমস্যা অদৃশ্য হওয়ার আগেই সঠিক প্রমাণ সংগ্রহ করতে সাহায্য করে।

এই আর্টিকেলটি আপনাকে কী করতে সাহায্য করবে

আমরা প্র্যাকটিকাল, অপারেশন-ফ্রেন্ডলি ওয়ার্কফ্লোতে ফোকাস করব, বিশেষ করে:

  • Sysinternals টুলগুলো (বিশেষ করে Process Explorer এবং Process Monitor) দ্রুত, কম ঘর্ষণযুক্ত দৃশ্যমানতার জন্য
  • লোগ যথেষ্ট না হলে এবং আপনাকে উচ্চ-ফিডেলিটি “কি ঘটল” টাইমলাইন দরকার হলে ETW ট্রেসিং
  • ব্যর্থতাকে কার্যকর রুট-কজে পরিণত করতে WinDbg ও ক্র্যাশ/হ্যাং ডাম্প

লক্ষ্যটি আপনাকে কার্নেল ইঞ্জিনিয়ার তৈরি করা নয়। বরং উইন্ডোজ ইনসিডেন্টগুলো ছোট, শান্ত এবং বোঝানো সহজ করে তোলা—যাতে ফিক্সগুলো নিরাপদ ও পুনরাবৃত্তিযুক্ত হয়।

উইন্ডোজ ইন্টার্নালস একটি ট্রাবলশুটিং সুপারপাওয়ার হিসেবে

উইন্ডোজ “ইন্টার্নালস” সহজভাবে বলতে গেলে সেই মেকানিজমগুলোর সেট যা উইন্ডোজ বাস্তব কাজ করার জন্য ব্যবহার করে: থ্রেড শিডিউলিং, মেমরি ম্যানেজমেন্ট, সার্ভিস শুরু/বন্ধ, ড্রাইভার লোড, ফাইল ও রেজিস্ট্রি কার্যকলাপ, এবং সিকিউরিটি বাউন্ডারি প্রয়োগ। প্রায়োগিক প্রতিশ্রুতি সরল: যখন আপনি OS কী করছে তা বুঝবেন, আপনি অনুমান বন্ধ করে ব্যাখ্যা শুরু করবেন।

এটা গুরুত্বপূর্ণ কারণ অধিকাংশ অপারেশনাল লক্ষণ পরোক্ষ। “মেশিন ধীর” হতে পারে CPU কণ্টেনশন, একক হট থ্রেড, ড্রাইভার ইন্টারাপ্ট স্টর্ম, পেজিং প্রেসার, বা অ্যান্টিভাইরাস ফিল্টার ফাইল I/O ব্লক করছে। “এটি হ্যাং করছে” হতে পারে ডেডলক, আটকে থাকা নেটওয়ার্ক কল, স্টোরেজ টাইমআউট, বা একটি সার্ভিস যে নির্ভরতায় অপেক্ষা করছে। ইন্টার্নালস জ্ঞান অস্পষ্ট অভিযোগগুলোকে পরীক্ষাযোগ্য হাইপোথিসিসে পরিণত করে।

ইউজার-মোড বনাম কার্নেল-মোড (উপযুক্ত মাত্রা)

উপরের স্তরে, ইউজার-মোডেই বেশিরভাগ অ্যাপ ও সার্ভিস চলে; এগুলো ক্র্যাশ করলে সাধারণত কেবল নিজেকে নিয়ে যায়। কার্নেল-মোডে উইন্ডোজ নিজেই এবং ড্রাইভারগুলি চলে; সেখানে সমস্যা হলে পুরো সিস্টেম ফ্রিজ, বাগচেক (ব্লু স্ক্রিন) কিংবা নীরবে নির্ভরযোগ্যতা কমতে পারে।

এ পার্থক্য ব্যবহার করতে গিয়ে গভীর তত্ত্বের দরকার নেই—শুধু যথেষ্ট যাতে আপনি প্রমাণ বেছে নিতে পারেন। একটি অ্যাপ CPU পেগ করলে সেটা প্রায়শই ইউজার-মোড; বারবার স্টোরেজ রিসেট বা নেটওয়ার্ক ড্রাইভার সমস্যা হলে সেটা কার্নেল-মোড ইঙ্গিত করে।

প্রমাণ-প্রথম ট্রাবলশুটিং

Russinovich-এর মানসিকতা—Sysinternals এবং Windows Internals-এ প্রতিফলিত—হল “প্রমাণ প্রথম।” সেটিং বদলানোর, অন্ধভাবে রিবুট দেওয়ার, বা পুনরায় ইনস্টল করার আগে, সিস্টেম ঠিক কি করছে তা ধরুন: কোন প্রসেস, কোন থ্রেড, কোন হ্যান্ডেল, কোন রেজিস্ট্রি কী, কোন নেটওয়ার্ক কানেকশন, কোন ড্রাইভার, কোন ইভেন্ট।

একবার আপনি উত্তর দিতে পারেন “উইন্ডোজ এখন কী করছে এবং কেন,” ফিক্সগুলো ছোট, নিরাপদ এবং যুক্তিসঙ্গত হয়ে ওঠে—এবং নির্ভরযোগ্যতা কাজ প্রতিক্রিয়াশীল ফায়ারফাইটিং থেকে বন্ধ হয়ে যায়।

Sysinternals পদ্ধতি: অদৃশ্যকে দৃশ্যমান করুন

Sysinternals সবচেয়ে ভালোভাবে বোঝা যায় একটি “দৃশ্যমানতা টুলকিট” হিসেবে: ছোট, পোর্টেবল ইউটিলিটি যেগুলো সিস্টেম আসলে কী করছে তা প্রকাশ করে—প্রসেস বাই প্রসেস, হ্যান্ডেল বাই হ্যান্ডেল, রেজিস্ট্রি কী বাই কী। উইন্ডোজকে একটি ব্ল্যাকবক্স হিসেবে না দেখে, Sysinternals আপনাকে “অ্যাপ ধীর”, “CPU উচ্চ”, বা “সার্ভার সংযোগ হারাচ্ছে” মত লক্ষণের পেছনের আচরণ পর্যবেক্ষণ করতে দেয়।

বিশ্বাস কিন্তু যাচাই: অনুমান করবেন না, পরিমাপ করুন

অপারেশনাল ব্যথার অনেকটাই যুক্তিসংগত শোনানো অনুমান থেকে আসে: এটা অবশ্যই DNS, এটা সম্ভবত অ্যান্টিভাইরাস, উইন্ডোজ আপডেট আবার আটকে গেছে। Sysinternals মনোভাব সহজ: আপনার অন্তঃদৃষ্টি যথেষ্ট করে একটি হাইপোথিসিস গঠন করুন, তারপর প্রমাণ দিয়ে তা যাচাই করুন।

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

লাইভ ইনসিডেন্টে কেন Sysinternals উজ্জ্বল

এই টুলগুলো “সবকিছু আগুনে” মুহূর্তের জন্য তৈরি:

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

এইগুলো তখনই জরুরি যখন আপনি দীর্ঘ সেটআপ সাইকেল, ভারী এজেন্ট রোলআউট, বা ভাল ডেটা সংগ্রহের জন্য রিবুট চালাতে পারবেন না।

নিরাপদ ব্যবহারের নীতিমালা

Sysinternals শক্তিশালী, এবং শক্তি সহ গার্ড্রেইল দরকার:

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

এইভাবে ব্যবহৃত হলে, Sysinternals একটি শৃঙ্খলাবদ্ধ পদ্ধতি হয়: অদৃশ্যকে পর্যবেক্ষণ করুন, সত্য পরিমাপ করুন, এবং আশা নিয়ে নয়—যুক্তিসহ পরিবর্তন করুন।

Process Explorer & Process Monitor: প্রতিদিনের ডিবাগ জোড়া

যদি আপনি আপনার অ্যাডমিন টুলকিটে শুধু দুইটি Sysinternals টুল রাখেন, তা হলে রাখুন Process Explorer এবং Process Monitor। একসাথে এগুলো সবচেয়ে সাধারণ “উইন্ডোজ এখন কী করছে?” প্রশ্নগুলোর উত্তর দেয়, কোনো এজেন্ট, রিবুট, বা ভারী সেটআপ ছাড়াই।

Process Explorer: সেকেন্ডে দ্রুত উত্তর

Process Explorer হলো Task Manager-এর এক্স-রে ভিশন। যখন একটি মেশিন ধীর বা অস্থিতিশীল, এটা আপনাকে নির্দিষ্ট করে দেয় কোন প্রসেস দায়ী এবং কি সাথে এটি সংযুক্ত।

এটি বিশেষভাবে উপযোগী:

  • CPU ও থ্রেড: কোন প্রসেস CPU খাচ্ছে, এবং তা কি এক হট থ্রেড নাকি বহু?\n- Parent/child সম্পর্ক: কী এটা চালিয়েছে (সার্ভিস, শিডিউল টাস্ক, আপডেটার, বা ব্যবহারকারী ক্রিয়া)?\n- DLLs ও হ্যান্ডেল: কোন মডিউল লোড আছে, এবং প্রসেস কোন ফাইল/রেজিস্ট্রি কী/পাইপ খোলা রেখেছে?

শেষটি একটি নির্ভরযোগ্যতা সুপারপাওয়ার: “কেন আমি এই ফাইলটি মুছতে পারি না?” প্রায়শই হয়ে ওঠে “এই সার্ভিসটির কাছে এটা ওপেন হ্যান্ডেল আছে।”

Process Monitor: সম্পূর্ণ কার্যকলাপ ট্রেল

Process Monitor (Procmon) ফাইল সিস্টেম, রেজিস্ট্রি, এবং প্রসেস/থ্রেড কার্যকলাপ জুড়ে বিস্তারিত ইভেন্ট ক্যাপচার করে। এটি সেই টুল যখন আপনি জানতে চান: “অ্যাপ হ্যাং হলে কী বদলেছে?” বা “প্রতি 10 মিনিটে ডিস্ক কে টপকে দিচ্ছে?”

ক্যাপচার শুরু করার আগে প্রশ্নটি ফ্রেম করুন:

  • লক্ষণটি কী (স্লো লগঅন, উচ্চ ডিস্ক, ক্র্যাশ, access denied)?
  • এটা কখন হয় (স্টার্টআপে, 09:00-এ, স্লিপের পরে)?
  • কোন মেশিন ও ব্যবহারকারী প্রসঙ্গ (শুধু এক সার্ভার, কেবল এক ইউজার প্রফাইল, কেবল VPN এ)?

শুধু যা দরকার তা ক্যাপচার করুন (নয়েজ শত্রু)

Procmon আপনাকে ওভারওয়েল্ম করতে পারে যদি আপনি কঠোরভাবে ফিল্টার না করেন। শুরু করুন:

  • নির্দিষ্ট Process Name বা PID দিয়ে ফিল্টার করুন।
  • আপনি যা মনোযোগ দিতে চান সেই পাথের জন্য Include নিয়ম ব্যবহার করুন (উদাহরণ: একটি কনফিগ ফোল্ডার) এবং বাকিটা এক্সক্লুড করুন।
  • লক্ষণের চারপাশে সংক্ষিপ্ত উইন্ডো ক্যাপচার করুন, তারপর বন্ধ করুন।

এর থেকে আপনি যা পাবেন

সাধারণ ফলাফলগুলো খুবই ব্যবহারিক: একটি খাটো সার্ভিস বারবার অনুপস্থিত রেজিস্ট্রি কী কোয়েরি করছে, একটি রিয়েল-টাইম ফাইল স্ক্যান হাজার হাজার ফাইল স্পর্শ করছে, বা একটি মিসিং DLL লোড প্রচেষ্টা (“NAME NOT FOUND”) যা ব্যাখ্যা করে কেন একটি অ্যাপ এক মেশিনে শুরু হয় না কিন্তু অন্যটিতে হয়।

Autoruns, TCPView, RAMMap: ভারী সেটআপ ছাড়াই দ্রুত ক্লু

প্রথম ১৫ মিনিট স্বয়ংক্রিয় করুন
observe capture explain চেকলিস্টকে একটি গাইডেড রেসপন্ডার ফ্লোতে রূপান্তর করুন।

যখন একটি উইন্ডোজ মেশিন "অদ্ভুত লাগে," প্রায়শই একটি পূর্ণ মনিটরিং স্ট্যাক দরকার হয় না। কিছু Sysinternals টুল দ্রুত তিনটি বাস্তব প্রশ্নের উত্তর দিতে পারে: কি স্বয়ংক্রিয়ভাবে চালু হয়? কে নেটওয়ার্কে কথা বলছে? মেমরি কোথায় গেছে?

Autoruns: নির্ভরযোগ্যতা শুরু হয় বুট থেকেই

Autoruns হল দ্রুততম উপায় সবকিছুকে বোঝার যা ব্যবহারকারী স্পষ্টভাবে চালাবার আগেই লোড হতে পারে: সার্ভিস, শিডিউল টাস্ক, শেল এক্সটেনশন, ড্রাইভার ইত্যাদি।

কেন এটি নির্ভরযোগ্যতার জন্য গুরুত্বপূর্ণ: স্টার্টআপ আইটেমগুলো ধীর বুট, ইন্টারমিটেন্ট হ্যাং, এবং লগইন-পরবর্তী CPU স্পাইক-এর সাধারণ উৎস। একটি একেবারে অস্থিতিশীল আপডেটার, লেগ্যাসি ড্রাইভার হেলপার, বা ভাঙা শেল এক্সটেনশন পুরো সিস্টেমকে ব্যাহত করতে পারে।

প্রায়োগিক টিপ: প্রথমে unsigned, সাম্প্রতিকভাবে যোগকরা, বা লোড করতে ব্যর্থ এন্ট্রিগুলোর দিকে ফোকাস করুন। যদি একটি আইটেম নিষ্ক্রিয় করে বক্স স্থিতিশীল হয়, আপনি অস্পষ্ট লক্ষণকে একটি নির্দিষ্ট কম্পোনেন্টে পরিণত করেছেন যেটা আপডেট/অপসারণ/প্রতিস্থাপন করা যাবে।

TCPView: কে লিসেন করছে, কে কথা বলছে—নিশ্চিত করুন

TCPView আপনাকে প্রসেস নাম ও PID-র সাথে সংযুক্ত সক্রিয় কানেকশন এবং লিসেনারগুলোর একটি ইনস্ট্যান্ট মানচিত্র দেয়। দ্রুত স্যানিটি চেকের জন্য এটা আদর্শ:

  • অপ্রত্যাশিত LISTENING পোর্ট (বিশেষত সার্ভারে যা শান্ত থাকা উচিত)
  • এক প্রসেসের অধীনে অস্বাভাবিকভাবে উচ্চসংখ্যক সংযোগ
  • দ্রুত সংযোগ চর্ন যা CPU বা লেটেনসির সাথে মিলে যায়

নন-সিকিউরিটি তদন্তেও, এটি রানেরওয়ে এজেন্ট, ভুল কনফিগার করা প্রক্সি, বা “রিট্রাই স্টর্ম” আবিষ্কার করতে পারে যেখানে অ্যাপ ধীর মনে হলেও মূল কারণ নেটওয়ার্ক আচরণ।

RAMMap: অনুমান ছাড়া মেমরি প্রেসার

RAMMap আপনাকে দেখায় RAM আসলে কোথায় বরাদ্দ করা হচ্ছে।

একটি ব্যবহারযোগ্য বেসলাইন পার্থক্য:

  • Working sets: চলমান প্রসেসগুলো দ্বারা সক্রিয়ভাবে ব্যবহৃত মেমরি
  • Cache / standby: উইন্ডোজ টীকথেকে ডেটা রাখে দ্রুততার জন্য (স্বাভাবিকভাবে “খারাপ” নয়)

যদি ব্যবহারকারীরা “কম মেমরি” রিপোর্ট করে কিন্তু Task Manager বিভ্রান্তিকর দেখায়, RAMMap নিশ্চিত করতে পারে যে আপনার কাছে প্রকৃত প্রক্রিয়াজাত বৃদ্ধি আছে কি না, ভারী ফাইল ক্যাশ আছে কি না, অথবা কোনো ড্রাইভার ননপেজড মেমরি ব্যবহার করছে কি না।

ঐচ্ছিক: লিক সন্দেহ হলে Handle ও VMMap

যদি একটি অ্যাপ কয়েক দিন ধরে ধীর হয়ে যায়, Handle দেখাবে হ্যান্ডেল কাউন্ট অনবরত বাড়ছে কি না (একটি ক্লাসিক লিক প্যাটার্ন)। VMMap সাহায্য করবে যখন মেমরি ব্যবহার অদ্ভুত—ফ্র্যাগমেন্টেশন, বড় রিজার্ভড অঞ্চল, বা এমন অ্যলোকেশন যা সরল “private bytes” হিসেবে দেখা যায় না।

প্রথম 15 মিনিটের একটি পুনরাবৃত্তযোগ্য চেকলিস্ট

  1. Autoruns: নতুন/unsigned এন্ট্রি স্ক্যান করুন; সন্দেহজনক আইটেম একে একে নিষ্ক্রিয় করুন।
  2. TCPView: প্রত্যাশিত লিসেনার যাচাই করুন; শীর্ষ কানেকশন মালিক চিহ্নিত করুন।
  3. RAMMap: চাপ কি ওয়ার্কিং সেট বৃদ্ধির ফলে না কেচ/স্ট্যান্ডবাই-র কারণে তা চেক করুন।
  4. যদি লক্ষণ সময়-ভিত্তিক হয়: একটি দ্রুত “আগে/পরে” স্ন্যাপশট ক্যাপচার করুন (কাউন্ট, পোর্ট, মেমরি মোট)।
  5. যদি গ্রোথ স্পষ্ট হয়: হ্যান্ডেল/VMMap ব্যবহার করে লিক প্যাটার্ন নিশ্চিত করুন।
  6. সন্দেহভাজন কম্পোনেন্ট ও প্রমাণ লিখে রাখুন যাতে ফিক্স লক্ষ্যভিত্তিক হয়, অনুমান নয়।

লগ থেকে ETW পর্যন্ত: উইন্ডোজে বাস্তব পর্যবেক্ষণ তৈরি করা

উইন্ডোজ অপারেশন প্রায়ই শুরু হয় সহজেই পাওয়া জিনিস দিয়ে: Event Viewer এবং কিছু Task Manager স্ক্রিনশট। সেটা ক্রামের জন্য ঠিক আছে, কিন্তু নির্ভরযোগ্য ইনসিডেন্ট রেসপন্সের জন্য তিনটি পরিপূরক সিগন্যাল দরকার: লগ (কি ঘটল), মেট্রিকস (কত খারাপ), এবং ট্রেস (সিস্টেম মুহূর্ত-প্রতি-কী করছিল)।

ইভেন্ট লগ: দুর্দান্ত সাইনে কিন্তু অসম্পূর্ণ কভারেজ

উইন্ডোজ ইভেন্ট লগ পরিচয়, সার্ভিস লাইফসাইকেল, নীতি পরিবর্তন এবং অ্যাপ-লেভেল ত্রুটির জন্য চমৎকার। তবু এগুলো অসমান: কিছু কম্পোনেন্ট সমৃদ্ধ লগ করে, কিছু কম করে, এবং মেসেজ টেক্সট ঝিমঝিম (“The application stopped responding”) হতে পারে। এগুলোকে টাইমলাইন অ্যাংকার হিসেবে নিন, পুরো গল্প হিসেবে নয়।

সাধারণ জয়:

  • সার্ভিস স্টার্ট/স্টপ ও ক্র্যাশ ইভেন্ট
  • প্রমাণীকরণ ও অনুমোদন ইভেন্ট
  • অ্যাপ এক্সেপশন (যখন অ্যাপগুলো তা লগ করে)

আউটেজের সময় মেট্রিকস: কয়েকটি যা সাধারণত গুরুত্বপূর্ণ

পারফরম্যান্স কাউন্টারগুলো উত্তর দেয়, “মেশিন কি হেলদি?” আউটেজের সময় শুরু করুন:

  • CPU: স্থায়ী উচ্চ CPU, রেডি টাইম (VM-এ), প্রতি-প্রসেস CPU
  • Disk: কিউ লেন্থ, রিড/রাইট লেটেনসি, IOPS, ফ্রি স্পেস
  • Memory: committed bytes, commit limit, hard faults/sec, পুল ব্যবহার
  • Network: retransmits, errors, bytes/sec, connection counts

মেট্রিকস আপনাকে কেন না বলে, কিন্তু কেন শুরু হয়েছে এবং এটি উন্নত হচ্ছে কি না তা বলবে।

ETW সহজ ভাষায়: স্ট্রাকচার্ড, উচ্চ-ভলিউম ট্রেসিং

Event Tracing for Windows (ETW) উইন্ডোজের বিল্ট-ইন ফ্লাইট রেকর্ডার। অ্যাড-হক টেক্সট মেসেজের বদলে, ETW কার্নেল, ড্রাইভার, এবং সার্ভিস থেকে স্ট্রাকচার্ড ইভেন্ট উত্সর্গ করে—প্রসেস/থ্রেড কার্যক্রম, ফাইল I/O, রেজিস্ট্রি অ্যাক্সেস, TCP/IP, শিডিউলিং, এবং আরও অনেক কিছু। অনেক “রহস্যময় স্টল” এই স্তরে বোধগম্য হয়ে ওঠে।

সিগন্যাল বেছে নেওয়া (সবকিছু সংগ্রহ না করে)

একটি ব্যবহারিক নিয়ম:

  • লগ ব্যবহার করুন ডিসক্রিট ইভেন্টের জন্য (ক্র্যাশ, রিস্টার্ট, অথেন্টিকেশন ত্রুটি)।
  • মেট্রিকস ব্যবহার করুন প্রভাব সনাক্ত ও পরিমাণগত করার জন্য (ল্যাটেন্সি, স্যাচুরেশন)।
  • ETW ব্যবহার করুন যখন আপনাকে কারণ-সম্পর্ক প্রমাণ করতে হবে (কি ব্লক করছিল, কোন I/O, কোন কল-পাথ)।

“সবকিছু সর্বদা চালু রাখুন” এড়ান। একটি ছোট সবসময়-অন বেসলাইন রাখুন (কী লগ + কোর মেট্রিকস) এবং ইনসিডেন্টে টার্গেটেড ETW ক্যাপচার ব্যবহার করুন।

সময়ের সমন্বয়ই সুপারপাওয়ার

সবচেয়ে দ্রুত নির্ণয় আসে তিনটি ঘড়ি মিলিয়ে: ব্যবহারকারীর রিপোর্ট (“10:42-এ ফ্রিজ”), মেট্রিক ইনফ্লেকশন (CPU/Disk স্পাইক), এবং লগ/ETW ইভেন্ট একই টাইমস্ট্যাম্পে। একবার আপনার ডেটা একটি সঙ্গত সময়ভিত্তি শেয়ার করলে, আউটেজগুলো অনুমান নয়—নিশ্চিত গল্প হয় যা যাচাই করা যায়।

Sysmon টেলিমেট্রি: সিকিউরিটি সিগন্যাল যা নির্ভরযোগ্যতাতেও সাহায্য করে

উইন্ডোজের ডিফল্ট ইভেন্ট লগগুলো উপযোগী, কিন্তু প্রায়শই “কেন এখন?” বিস্তারিতগুলো অনুপস্থিত থাকে। Sysmon (System Monitor) সেই গ্যাপ পূরণ করে উচ্চ-ফিডেলিটি প্রসেস ও সিস্টেম কার্যকলাপ রেকর্ড করে—বিশেষ করে লঞ্চ, পারসিস্টেন্স, এবং ড্রাইভার আচরণ সংক্রান্ত।

Sysmon কি যোগ করে (ডিফল্ট লগের বাইরে)

Sysmon-এর শক্তি হল প্রসঙ্গ। কেবল “একটি সার্ভিস শুরু হয়েছে” বলার বদলে আপনি প্রায়ই দেখতে পাবেন কোন প্রসেস এটি শুরু করেছে, পূর্ণ কমান্ড লাইন, প্যারেন্ট প্রসেস, হ্যাশ, ইউজার অ্যাকাউন্ট, এবং করিলেশন-সহ টেম্পস্ট্যাম্প।

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

ন্যূনতম কনফিগারেশন: উদ্দেশ্যমূলকভাবে সংকীর্ণ শুরু করুন

সবকিছু লগ করার Sysmon কনফিগ সাধারণত প্রথম ধাপে ভালো নয়। একটি ন্যূনতম, নির্ভরযোগ্যতা-কেন্দ্রিক সেট দিয়ে শুরু করুন এবং স্পষ্ট প্রশ্ন থাকলেই এক্সপ্যান্ড করুন।

ভালো প্রাথমিক পছন্দ:

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

টার্গেটেড include নিয়ম (ক্রিটিক্যাল পাথ, নির্দিষ্ট সার্ভিস একাউন্ট, কী সার্ভার) এবং সাবধানে নির্বাচিত exclude নিয়ম যুক্ত করুন যাতে সিগন্যাল পাঠযোগ্য থাকে।

আপনি বাস্তবে যে নির্ভরযোগ্যতা কেসগুলো দেখতে পাবেন

Sysmon প্রায়ই এই সাধারণ “রহস্যময় পরিবর্তন” পরিস্থিতি নিশ্চিত বা বাতিল করতে সাহায্য করে:

  • CPU স্পাইক-র আগে একটি সার্ভিস একাউন্টের অধীনে একটি নতুন হেল্পার প্রসেস স্পন্ করে
  • প্যাচ সাইকেলের পরে সার্ভিস বাইনারি পথ বা স্টার্ট টাইপ পরিবর্তন
  • ড্রাইভার আপডেট নতুন হ্যাং, বাগচেক, বা স্টোরেজ/নেটওয়ার্ক রিসেটের সাথে মিলছে

অপারেশনাল সতর্কতা

প্রতিনিধি মেশিনে প্রভাব পরীক্ষা করুন। Sysmon ডিস্ক I/O এবং ইভেন্ট ভলিউম বাড়াতে পারে, এবং কেন্দ্রীভূত সংগ্রহ দ্রুত ব্যয়বহুল হতে পারে।

কম্যান্ডলাইন, ইউজারনেম, ও পাথের মত ফিল্ডগুলো সংবেদনশীল—অ্যাক্সেস কন্ট্রোল, রিটেনশন সীমা, এবং ফিল্টারিং প্রয়োগ করুন বিস্তৃত রোলআউটের আগে।

সম্পূরক, প্রতিস্থাপন নয়

Sysmon সবচেয়ে ভাল উচ্চ-মূল্য ব্রেডক্রাম্ব হিসেবে কাজ করে। ETW-র সাথে গভীর পারফরম্যান্স প্রশ্নের জন্য, ট্রেন্ড সনাক্তের জন্য মেট্রিকস, এবং সংযুক্ত ইনসিডেন্ট নোটের সাথে ব্যবহার করুন যাতে আপনি কি বদলেছে তা, কেন সেটা ভেঙেছে, এবং কিভাবে ঠিক করা হয়েছে সেটি সংযুক্ত করতে পারেন।

WinDbg ও ডাম্প: ক্র্যাশ ও হ্যাংকে উত্তরে পরিণত করা

দ্রুত কাজ করুন এবং নিয়ন্ত্রণ বজায় রাখুন
প্রথমে Koder.ai-তে দ্রুত শুরু করুন, পরে যখন আরও গভীর মালিকানা চান কোড এক্সপোর্ট করুন।

কিছু যখন “শুধু ক্র্যাশ করে,” সবচেয়ে মূল্যবান আর্টিফ্যাক্ট প্রায়শই একটি ডাম্প ফাইল: মেমরির স্ন্যাপশট ও পর্যাপ্ত এক্সিকিউশন স্টেট সহ যাতে ব্যর্থতার মুহূর্তে প্রক্রিয়াটির কার্যকলাপ পুনর্নির্মাণ করা যায়। লগের মত নয়—ডাম্পগুলো আপনাকে পরে থেকেই প্রমাণ ধরে দেয়, তাই আপনাকে আগে সঠিক মেসেজ prévoir করতে হয় না।

ক্র্যাশ ডাম্প কী এবং কেন চান

  • অ্যাপ ক্র্যাশ ডাম্প (ইউজার-মোড) একটি একক প্রসেস রেকর্ড করে। যখন একটি সার্ভিস মারা যায় কিন্তু মেশিন থাকে চালু—এগুলো আদর্শ।
  • কার্নেল ডাম্প (সিস্টেম-ওয়াইড) বাগচেক (BSOD)-এর জন্য ব্যবহৃত হয় এবং OS-লেভেল স্টেট, ড্রাইভার, ও কার্নেল থ্রেড কভার করে।

ডাম্প সাধারণত একটি নির্দিষ্ট মডিউল, কল-পাথ, ও ব্যর্থতা প্রকার (access violation, heap corruption, deadlock, driver fault) দেখায়—যা লক্ষণ থেকে অনুমান করা কঠিন।

WinDbg বেসিক: সিম্বল, স্ট্যাক, এবং “কি ব্যর্থ হয়েছে”

WinDbg এক ডাম্পকে গল্পে রূপান্তর করে। মূল বিষয়গুলো:

  • সিম্বলস কাঁচা ঠিকানাকে ফাংশন নাম ও লাইন ইনফোতে ম্যাপ করে। সঠিক সিম্বল ছাড়া বিশ্লেষণ দ্রুত অনুমানমুখী হয়ে যায়।
  • স্ট্যাক ট্রেস ক্র্যাশ বা হ্যাং পর্যন্ত কল সিকোয়েন্স দেখায় বা “অবস্থায় থাকা” থ্রেডের সমসাময়িক স্টেট।
  • লক্ষ্য হল ব্যর্থ উপাদান চিহ্নিত করা: আপনার কোড, একটি ডিপেন্ডেন্সি DLL, একটি ড্রাইভার, একটি অ্যান্টিভাইরাস শিম, গ্রাফিক্স স্ট্যাক ইত্যাদি।

একটি সাধারণ ওয়ার্কফ্লো: ডাম্প খুলুন → সিম্বল লোড করুন → অটোমেটেড বিশ্লেষণ চালান → শীর্ষ স্ট্যাকে চেক করে যাচাই করুন।

ক্র্যাশ বনাম BSOD বনাম হ্যাং: বিভাগ মিশাবেন না

  • Bugcheck (BSOD): পুরো সিস্টেম থেমে যায়। কার্নেল ডাম্প ও ড্রাইভার/রুট-কজ ওয়ার্ক প্রত্যাশা করুন।
  • অ্যাপ ক্র্যাশ: একটি প্রসেস টার্মিনেট করে। ইউজার-মোড ডাম্প ও এক্সেপশন কোড দেখুন।
  • হ্যাং: কিছু ক্র্যাশ করে না, কিন্তু কাজ থেমে যায়। আপনি জানতে চান কোন থ্রেড কী-তে অপেক্ষা করছে।

হ্যাং-এর জন্য প্রমাণ: স্ট্যাক, ওয়েট, এবং লক

“এটি ফ্রিজ” একটি লক্ষণ, নির্ণয় নয়। হ্যাং-এর জন্য, অ্যাপ অপ্রত্যাশিত অবস্থায় থাকাকালীন একটি ডাম্প নিন এবং পরীক্ষা করুন:

  • থ্রেড স্ট্যাক—প্রতি থ্রেড কী করছে তা দেখতে
  • ওয়েট রিজন (I/O, RPC, mutex/critical section, নেটওয়ার্ক)
  • লক/কনটেনশন প্যাটার্ন—প্রায়শই “হ্যাং” UI থ্রেড এমন একটি ওয়ার্কার থ্রেডের উপর অপেক্ষা করে যা অন্য কোথাও ব্লক আছে

বাস্তবসম্মত প্রত্যাশা: স্বয়ং-ডায়াগনোসিস বনাম এসক্যালেট

আপনি প্রায়ই নিজেই দ্রুত-স্পষ্ট ইস্যুগুলি ডায়াগনোসিস করতে পারবেন (এক মডিউলে পুনরাবৃত্ত ক্র্যাশ, স্পষ্ট ডেডলক, একটি নির্দিষ্ট DLL/ড্রাইভার-এ শক্ত সংশ্লেষ)। যখন ডাম্প তৃতীয়-পার্টি ড্রাইভার/সিকিউরিটি সফটওয়্যার, কার্নেল কম্পোনেন্ট, বা সিম্বল/সোর্স অ্যাক্সেস অনুপস্থিত করে—তখন এসক্যালেট করুন; সেই ক্ষেত্রে ভেণ্ডর (বা মাইক্রোসফট) পুরো চেইন ব্যাখ্যা করতে প্রয়োজন হতে পারে।

সাধারণ ব্যর্থতা প্যাটার্ন এবং ইন্টার্নালস কিভাবে এগুলো ব্যাখ্যা করে

অনেক “রহস্যময় উইন্ডোজ ইস্যু” একই প্যাটার্ন বার বার প্রকাশ পায়। অনুমান ও মেরামতের মধ্যে পার্থক্য হল OS কী করছে তা বোঝা—এবং Internals/Sysinternals মানসিক মডেল আপনাকে সেটা দেখতে সাহায্য করে।

মেমরি লিক: ওয়ার্কিং সেট বনাম কমিট

যখন লোকজন বলে “অ্যাপ লিক করছে,” তারা প্রায়শই দুটি ভিন্ন জিনিসের কথা বোঝায়।

Working set হল প্রসেসের ফিজিক্যাল RAM যা বর্তমানে ব্যাকিং দিচ্ছে। এটা চাপের সময় উইন্ডোজ যতাবে ট্রিম করতে পারে।

Commit হল ভার্চুয়াল মেমরি যা সিস্টেম র্যাম বা পেজ ফাইল দিয়ে ব্যাক করার প্রতিশ্রুতি দিয়েছে। যদি commit ধারাবাহিকভাবে বাড়ে, তাহলে আপনার একটি প্রকৃত লিক রিস্ক আছে: শেষ পর্যন্ত আপনি commit limit-এ পৌঁছাবেন এবং এলোকেশন ব্যর্থ হতে শুরু করবে বা হোস্ট অস্থিতিশীল হয়ে যাবে।

একটি সাধারণ লক্ষণ: Task Manager “available RAM” দেখালেও মেশিন ধীর—কারণ constraint হচ্ছে commit, খালি RAM নয়।

হ্যান্ডেল লিক: ধীর ব্যর্থতা যা র‍্যান্ডম মনে হয়

একটি হ্যান্ডেল হল OS অবজেক্টের রেফারেন্স (ফাইল, রেজিস্ট্রি কী, ইভেন্ট, সেকশন ইত্যাদি)। যদি একটি সার্ভিস হ্যান্ডেল লিক করে, তা ঘণ্টা বা দিন চলতে পারে, তারপর বিচিত্র ত্রুটি নিয়ে শুরু করবে (ফাইল খোলা যায় না, থ্রেড তৈরি করা যায় না, সংযোগ গ্রহণ করা যায় না) কারণ পার-প্রসেস হ্যান্ডেল কাউন্ট বাড়ছে।

Process Explorer-এ হ্যান্ডেল কাউন্ট ট্রেন্ড দেখুন। ধীর কিন্তু ধারাবাহিক বৃদ্ধি হলে এটি শক্তিশালী ক্লু যে সার্ভিসটি কিছু বন্ধ করতে ভুল করছে।

ডিস্ক ও ফাইল সিস্টেম সমস্যা: লেটেনসি, রিট্রাই, ফিল্টার ড্রাইভার

স্টোরেজ সমস্যা সবসময় উচ্চ থ্রুপুট হিসাবে দেখা যায় না; সেগুলো প্রায়ই উচ্চ লেটেনসি এবং রিট্রাই হিসেবে দেখা যায়। Process Monitor-এ দেখুন:

  • পুনরাবৃত্ত CreateFile/ReadFile অপারেশন
  • দীর্ঘ-সময়কালীন I/O ইভেন্ট
  • অনেক NAME NOT FOUND / PATH NOT FOUND (ভুল কনফিগার করা পথ)

এছাড়াও ফিল্টার ড্রাইভার (AV, ব্যাকআপ, DLP) লক্ষ্য রাখুন—ওরা ফাইল I/O পথে নিজেকে ঢুকিয়ে বিলম্ব বা ব্যর্থতা যোগ করতে পারে, অ্যাপ্লিকেশন কিছু “ভুল” না করেও।

CPU স্পাইক: এক হট প্রসেস বনাম কণ্টেনশন

একটি একক হট প্রসেস সরাসরি চিনে নেওয়া যায়: এক্সিকিউটেবলটা CPU ঝরাচ্ছে।

সিস্টেম-ওয়াইড কণ্টেনশন জটিল: CPU উচ্চ কারণ অনেক থ্রেড runnable এবং লক, ডিস্ক, বা মেমরির উপর লড়াই করছে। ইন্টার্নালস চিন্তা আপনাকে জিজ্ঞাসা করতে বলে: “CPU কার্যকর কাজ করছে নাকি অন্য কোথাও ব্লক থেকে স্পিন করছে?”

নেটওয়ার্ক সমস্যা: কে কানেকশনের মালিক?

টাইমআউট হলে প্রসেস → কানেকশন ম্যাপ করুন TCPView বা Process Explorer ব্যবহার করে। ভুল প্রসেস যদি সকেটের মালিক হয়, আপনি একটি নির্দিষ্ট কুকুর পেয়েছেন। যদি সঠিক প্রসেস মালিক হয়, তাহলে প্যাটার্ন দেখুন: SYN রিট্রাই, দীর্ঘস্থায়ী কানেকশন যা idle, বা ছোট-অবধি আউটবাউন্ড প্রচেষ্টার বিস্ফোরণ—যা DNS/firewall/proxy সমস্যার ইঙ্গিত দেয় না কি “অ্যাপ ডাউন”।

একটি ব্যবহারিক ওয়ার্কফ্লো: Observe → Capture → Explain → Fix

আপনি যা তৈরি করেছেন তা শেয়ার করুন
আপনার নির্মাণ সম্পর্কে কনটেন্ট তৈরি করুন এবং আপনার অ্যাকাউন্টের জন্য প্ল্যাটফর্ম ক্রেডিট উপার্জন করুন।

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

1) পুনরুত্পাদন (বা ট্রিগার সংজ্ঞায়িত)

“খারাপ” কেমন—এক বাক্যে লিখুন: “বড় ফাইল সেভ করার সময় অ্যাপ 30–60 সেকেন্ডের জন্য ফ্রিজ করে” অথবা “প্রতি 10 মিনিটে CPU 100% এ উঠে যায়।” যদি পুনরুত্পাদন সম্ভব হয়, প্রয়াস করুন; না হলে ট্রিগার সংজ্ঞায়িত করুন (টাইম উইন্ডো, ওয়ার্কলোড, ব্যবহারকারী ক্রিয়া)।

2) পর্যবেক্ষণ (হালকা থেকে শুরু)

ভারী ডেটা ক্যাপচার করার আগে লক্ষণ ও স্কোপ নিশ্চিত করুন:

  • এটি কি এক মেশিন নাকি বহু?\n- একটি প্রসেস না পুরো হোস্ট?\n- পারফরম্যান্স ইস্যু, ক্র্যাশ, না হ্যাং?

এখানে দ্রুত চেক (Task Manager, Process Explorer, বেসিক কাউন্টার) আপনাকে পরবর্তী ধাপ বেছে নিতে সাহায্য করবে।

3) ক্যাপচার (একটি ভালো কেস ফাইল তৈরি করুন)

বিশ্বাস করুন আপনি এই কেসটি যে টিমকে দেবেন তারা অগ্রহণযোগ্য—তারা সেখানে উপস্থিত ছিলেন না। একটি ভাল কেস ফাইলে সাধারণত থাকবে:

  • টাইমস্ট্যাম্প (শুরু/শেষ, টাইমজোন, ফ্রিকোয়েন্সি)
  • ভার্সন (Windows build, অ্যাপ ভার্সন, ড্রাইভার ভার্সন)
  • কনফিগারেশন (ফিচার ফ্ল্যাগ, পলিসি, এনভায়রনমেন্ট ভ্যারিয়েবল, সিকিউরিটি টুলিং)
  • ট্রেস (Procmon ফিল্টার, ETW সেশন নাম, সময়কাল)
  • ডাম্প (হ্যাং/ক্র্যাশ: ফুল বনাম মিনি, কোন প্রসেস, কীভাবে ট্রিগার করা হয়েছিল)

ক্যাপচারগুলো সংক্ষিপ্ত ও লক্ষ্যভিত্তিক রাখুন। একটি 60-সেকেন্ড ট্রেস যা ব্যর্থতা উইন্ডো কভার করে এমন 6-ঘণ্টার ক্যাপচারের থেকে ভাল।

4) ব্যাখ্যা (ডেটা থেকে গল্প বানান)

আপনি যা সংগ্রহ করেছেন তা সরল গল্পে অনুবাদ করুন:

  • কি বদলেছে? (নতুন বিল্ড, পলিসি, ড্রাইভার, লোড)
  • সিস্টেম পরিবর্তে কী করছে? (রিট্রাই, কনটেনশন, ব্লকড I/O, টাইমআউট)
  • সম্ভাব্য কারণ? (এক বা দুইটি হাইপোথিসিস, র‍্যাঙ্ক করা)

আপনি যদি সহজভাবে ব্যাখ্যা না করতে পারেন, সম্ভবত একটি পরিষ্কার ক্যাপচার বা আরো সংকীর্ণ হাইপোথিসিসের প্রয়োজন।

5) ঠিক করুন, নিশ্চিত করুন, এবং পরবর্তীবার MTTR কমান

সবচেয়ে ছোট নিরাপদ ফিক্স প্রয়োগ করুন, তারপর একই পুনরুত্পাদন ধাপ ও “আগে বনাম পরে” ক্যাপচারের সাথে নিশ্চিত করুন।

MTTR কমাতে, প্লেবুক স্ট্যান্ডার্ড করুন এবং বিরক্তিকর কাজগুলো অটোমেট করুন:

  • ট্রেস শুরু করার একটি স্ক্রিপ্ট/কমান্ড, বন্ধ করার আরেকটি
  • ধারাবাহিক ফোল্ডার স্ট্রাকচার ও নামকরণ কনভেনশন
  • লক্ষণ অনুযায়ী কি সংগ্রহ করতে হবে তার চেকলিস্ট (ক্র্যাশ বনাম হ্যাং বনাম স্লোডাউন)

পোস্ট-ইনসিডেন্ট শিক্ষা: অনুপস্থিত সিগন্যাল যোগ করুন

সমাধানের পরে প্রশ্ন করুন: “কোন সিগন্যাল থাকলে এটা আগেই সহজতর হত?” সেই সিগন্যাল যোগ করুন—Sysmon ইভেন্ট, ETW প্রোভাইডার, একটি পারফরম্যান্স কাউন্টার, বা একটি হাল্কা হেলথ চেক—যাতে পরবর্তী ইনসিডেন্ট ছোট ও শান্ত হয়।

এটাকে টেকে রাখুন: নিরাপদ ফিক্স ও দীর্ঘমেয়াদি নির্ভরযোগ্যতা

উইন্ডোজ ইন্টার্নালস কাজের উদ্দেশ্য ডিবাগ সেশনে জেতা নয়—এটি যা আপনি দেখলেন সেটা পরিবর্তনে রূপান্তর করে যাতে ইনসিডেন্ট ফিরে না আসে।

ফলাফলগুলোকে কনক্রিট অ্যাকশন এ পরিণত করুন

Internals টুলগুলো সাধারণত একটি সমস্যা ছোট সেট লিভারে সংকুচিত করে। অনুবাদটি স্পষ্ট রাখুন:

  • কনফিগ চেঞ্জ: সার্ভিস অ্যাকাউন্ট পারমিশন, রেজিস্ট্রি ভ্যালু, পুল সাইজ, শিডিউল টাস্ক কেডেন্স
  • প্যাচ: OS cumulative update, .NET আপডেট, বা ভেণ্ডরের হটফিক্স যা স্ট্যাক বা ড্রাইভার ভার্সনের সাথে মেলে
  • ড্রাইভার আপডেট (বা রোলব্যাক): Procmon/ETW দেখলে স্টল ড্রাইভার/নেটওয়ার্ক/ফিল্টার ড্রাইভার-কে প্রথম শ্রেণির ডিপেন্ডেন্সি হিসেবে বিবেচনা করুন
  • রোলব্যাক: যদি ফিক্স ঝুঁকিপূর্ণ হয়, দ্রুত revert করার পরিকল্পনা রাখুন (known-good প্যাকেজ, পূর্বের GPO, পুরোনো ড্রাইভার)

“কারণ লিখে রাখুন”: “আমরা X পরিবর্তন করেছি কারণ Process Monitor / ETW / ডাম্পে Y দেখা গেছে।” এই বাক্যটি ট্রাইবাল কনসেন্সকে প্রতিরোধ করবে।

গার্ড্রেইল: চেঞ্জ উইন্ডো, ভ্যালিডেশন, রোলব্যাক

আপনার পরিবর্তন প্রভাবের সাথে মেলান:

  • সম্ভব হলে একটি চেঞ্জ উইন্ডো ব্যবহার করুন যাতে ট্র্যাফিক কম থাকে।
  • ভ্যালিডেশন স্টেপ সংজ্ঞায়িত করুন (কোন কাউন্টার, ইভেন্ট ID, বা ইউজার জার্নি উন্নতি করা উচিত)।
  • একটি স্পষ্ট রোলব্যাক প্ল্যান প্রস্তুত রাখুন—একজন মালিক এবং সময়সীমা সহ ("15 মিনিটের মধ্যে ত্রুটি না কমলে revert করুন")।

বারবার প্রয়োগযোগ্য নির্ভরযোগ্যতা প্যাটার্ন

যদিও মূল কারণ নির্দিষ্ট, টেকসইতায় পুনরায় ব্যবহারযোগ্য প্যাটার্নগুলি প্রয়োগ করা যায়:

  • টাইমআউট থ্রেড স্টার্ভেশন ও আটকে যাওয়া নির্ভরতা চেইন প্রতিরোধ করতে
  • রেট লিমিটিং/ব্যাকঅফ রিট্রাই স্টর্ম থামাতে
  • সার্ভিস রিকভারি অপশন (রিস্টার্ট অ্যাকশন, ফেইলিওর রিসেট পিরিয়ড) প্রত্যাশিত ট্রান্সিয়েন্ট ফল্টের জন্য
  • হেলথ চেক যা শুধু ক্র্যাশ নয়—হ্যাংও সনাক্ত করে

ক্যাপচার ও টেলিমেট্রির ডাটা হাইজিন

আপনি যা দরকার, সেটুকুই রাখুন; যা না রাখা উচিত তা রক্ষা করুন।

Procmon ফিল্টারটি সন্দেহভাজন প্রসেসে সীমাবদ্ধ রাখুন, শেয়ার করার আগে পাথ/ইউজারনেম স্ক্রাব করুন, ETW/Sysmon ডেটার রিটেনশন সীমা নির্ধারণ করুন, এবং প্রয়োজন ছাড়া পে-লোড-ভারি নেটওয়ার্ক ক্যাপচার এড়ান।

ওয়ার্কফ্লো অপারেশনালাইজ (Koder.ai কোথায় সাহায্য করতে পারে)

একবার আপনার একটি পুনরাবৃত্তিযোগ্য ওয়ার্কফ্লো থাকলে, পরের ধাপ হলো এটাকে "প্যাকেজ করা" যাতে অন্যরাও ধারাবাহিকভাবে চালাতে পারে। এখানে Koder.ai-এর মত প্ল্যাটফর্ম সহায়ক হতে পারে: আপনি আপনার ইনসিডেন্ট চেকলিস্টকে একটি ছোট অভ্যন্তরীণ ওয়েব অ্যাপে (React UI, Go ব্যাকএন্ড সাথে PostgreSQL) পরিণত করতে পারেন যা রেসপন্ডারদের “observe → capture → explain” গাইড করে, টাইমস্ট্যাম্প ও আর্টিফ্যাক্ট সংরক্ষণ করে, এবং নামকরণ ও কেস-ফাইল স্ট্যান্ডার্ড করে।

Koder.ai-তে চ্যাট ব্যবহার করে এপ তৈরি করা যায়, তাই টিমগুলো দ্রুত ইটারেট করতে পারে—"start ETW session" বোতাম, Procmon ফিল্টার টেমপ্লেট লাইব্রেরি, স্ন্যাপশট/রোলব্যাক বাটন, বা এক্সপোর্টেবল রানবুক জেনারেটর যোগ করা সহজ। যদি আপনি অভ্যন্তরীণ নির্ভরযোগ্যতা অনুশীলন শেয়ার করেন, Koder.ai সোর্স-কোড এক্সপোর্ট ও ফ্রিতে থেকে এন্টারপ্রাইজ পর্যায় পর্যন্ত সমর্থন করে, তাই ছোট থেকে governance পর্যন্ত ধাপে বাড়ানো যায়।

একটি ছোট সাপ্তাহিক অনুশীলন প্ল্যান

সপ্তাহে একবার একটি টুল এবং একটি 15-মিনিট অনুশীলন বেছে নিন: Procmon দিয়ে একটি স্লো অ্যাপ স্টার্ট ট্রেস করা, Process Explorer-এ একটি সার্ভিস ট্রি পর্যালোচনা, Sysmon ইভেন্ট ভলিউম চেক করা, বা একটি ক্র্যাশ ডাম্প নিয়ে ফেল রুকি করা এবং ব্যর্থ মডিউল শনাক্ত করা। ছোট রিপগুলি মসেল মেমোরি গড়ে তোলে যা প্রকৃত ইনসিডেন্টকে দ্রুত ও নিরাপদ করে তোলে।

সাধারণ প্রশ্ন

কেন Mark Russinovich আজও উইন্ডোজ অপারেশনে এত গুরুত্বপূর্ণ?

মার্ক রাসিনোভিচ উইন্ডোজ ট্রাবলশুটিং-এ একটি প্রমাণ-প্রথম (evidence-first) মনোভাব জনপ্রিয় করেছেন এবং এমন টুল/ওয়ার্কফ্লোগুলো শৈল্পিকভাবে ছেড়েছেন যা OS-কে ব্যবহারযোগ্যভাবে পর্যবেক্ষণযোগ্য করে তোলে।

আপনি যদি কখনই Windows Internals না পড়েও থাকেন, তাহলে সম্ভবত Sysinternals, ETW, এবং ডাম্প বিশ্লেষণের দ্বারা গঠিত ওয়ার্কফ্লোগুলোর ওপর নির্ভর করছেন—এগুলো ঘটনার সময় কমাতে এবং ফিক্সগুলো পুনরায় অনুসরণযোগ্য করতে সাহায্য করে।

উইন্ডোজ অপারেশন প্রসঙ্গে “observability” বলতে কী বোঝায়?

পর্যবেক্ষণযোগ্যতা (observability) হল সিস্টেমের প্রযোজিত সিগন্যাল থেকে “এখন কী ঘটছে?” উত্তর দেয়ার ক্ষমতা।

উইন্ডোজে এটা সাধারণত মানে:

  • ডিসক্রিট ইভেন্টের জন্য ইভেন্ট লগ
  • প্রভাব ও স্যাচুরেশনের জন্য মেট্রিকস (Perf counters)
  • উচ্চ-ফিডেলিটি কারণ নির্ণয়ের জন্য ট্রেস (ETW)
কীভাবে উইন্ডোজ ইন্টার্নালস জ্ঞান ইনসিডেন্ট টাইম (MTTR) কমায়?

ইন্টার্নালস জ্ঞান আপনাকে অস্পষ্ট লক্ষণগুলোকে পরীক্ষাযোগ্য হাইপোথিসিসে পরিণত করতে সাহায্য করে।

উদাহরণস্বরূপ, “সার্ভার ধীর” হওয়া CPU contention, paging pressure, I/O latency বা ড্রাইভার/ফিল্টার ওভারহেড—এসবের একটি ছোট সেট হিসেবে ব্যাখ্যা করা যায়। এভাবে দ্রুত ট্রায়াজ হয় এবং সঠিক প্রমাণ সংগ্রহ করা যায়, ফলে MTTR কমে।

কখন আমি Task Manager-এর বদলে Process Explorer ব্যবহার করবো?

Process Explorer ব্যবহার করুন যখন আপনি জানতে চান কে দায়ী:

  • কোন প্রসেস CPU/মেমরি ব্যবহার করছে
  • parent/child সম্পর্ক (কি এটি চালিয়েছে)
  • থ্রেড-লেভেল হটস্পট এবং ওয়েট
  • প্রসেস কোন DLL/হ্যান্ডেলগুলা খোলা রেখেছে
Process Monitor (Procmon) কোন ধরনের সমস্যার সমাধানে সবচেয়ে উপকারী?

Process Monitor (Procmon) ব্যবহার করুন যখন আপনাকে ফাইল, রেজিস্ট্রি এবং প্রসেস/থ্রেড ক্রিয়াকলাপের অ্যাকটিভিটি ট্রেইল জানতে হবে।

প্র্যাকটিক্যাল উদাহরণ:

  • অ্যাপ স্টার্টআপ ভাঙে কারণ “NAME NOT FOUND” dependency
  • Access denied কে প্রমাণ করা যে এটা permissions/path সমস্যা
  • নির্দিষ্ট সময়ে ডিস্ক-হ্যামারিং কোথায় হচ্ছে সেটা নির্ধারণ করা
কীভাবে Procmon-এর শব্দ (noise) এড়িয়ে দরকারী প্রমাণ পাব?

কঠোরভাবে ফিল্টার করুন এবং শুধু ব্যর্থতা উইন্ডোই ক্যাপচার করুন।

শ্রেষ্ঠ শুরুয়াতি ওয়ার্কফ্লো:

  • প্রথমে Process Name বা PID দিয়ে ফিল্টার করুন
  • নির্দিষ্ট পথ/কী-র জন্য Include নিয়ম যোগ করুন
  • লক্ষণটির চারপাশে 30–120 সেকেন্ডের জন্য ক্যাপচার করুন, তারপর বন্ধ করুন

একটি ছোট ট্রেস যা আপনারা খুলে বিশ্লেষণ করতে পারেন তা অনেক বড় অপ্রচলিত ক্যাপচারের থেকে ভাল।

কীভাবে Autoruns নির্ভরযোগ্যতা ও বুট/লগঅন সমস্যা সমাধানে সাহায্য করে?

Autoruns উত্তর দেয় “স্বয়ংক্রিয়ভাবে কি কি চালু হয়?”—সার্ভিস, শিডিউল টাস্ক, শেল এক্সটেনশন, ড্রাইভার ইত্যাদি।

এটি বিশেষভাবে কার্যকর:

  • ধীর বুট/লগঅন
  • ইন্টারমিটেন্ট পোস্ট-লগইন CPU spike
  • গোপন ব্যাকগ্রাউন্ড প্রসেস

প্রথমে এমন এন্ট্রিগুলোর দিকে মনোযোগ দিন যা unsigned, সাম্প্রতিক যুক্ত, বা লোড করতে ব্যর্থ হচ্ছে—এবং সন্দেহজনক আইটেম একবারে একটিভ করে নোট রাখুন।

কখন আমি লগ/মেট্রিকস থেকে ETW ট্রেসিং-এ উত্থান করব?

ETW (Event Tracing for Windows) হলো উইন্ডোজের বিল্ট-ইন উচ্চ-ভলিউম স্ট্রাকচার্ড ট্রেসার।

লগ ও মেট্রিকস আপনাকে কি ভুল হচ্ছে সেটা বললেও, ETW বলে দেয় কেন—উদাহরণ: কোন I/O ব্লক করছে, কোন ড্রাইভার সময়সীমা ঘটাচ্ছে, কোন কল-পাথে বিলম্ব হচ্ছে।

ইতিবাচক অনুশীলন: সবকিছু অন করেই রাখবেন না—একটি ছোট সবসময়-চলমান বেসলাইন রাখুন (কী লগ + কোর মেট্রিকস) এবং ইনসিডেন্টের সময় টার্গেটেড ETW ক্যাপচার নিন।

Sysmon কীভাবে কেবল সিকিউরিটি নয়—নির্ভরযোগ্যতা তদন্তেও সাহায্য করে?

Sysmon উচ্চ-কনটেক্সট টেলিমেট্রি যোগ করে (parent/child, command lines, হ্যাশ, ড্রাইভার লোড) যা “কি বদলেছে?” জানতে সাহায্য করে।

বিশেষত নির্ভরযোগ্যতার জন্য এটি কার্যকর:

  • spike-এর আগে নতুন হেল্পার প্রসেস দেখা যায় কি না
  • ড্রাইভার লোড নতুন হ্যাং/বাগচেকের সাথে মিলছে কি না
  • প্যাচ সাইকেলের পরে অপ্রত্যাশিত বাইনারি/পাথে পরিবর্তন

প্রাথমিকভাবে একটি ন্যারো কনফিগ দিয়ে শুরু করুন এবং ইনক্লুড/এক্সক্লুড নিয়ম দিয়ে ভলিউম নিয়ন্ত্রণ করুন।

ক্র্যাশ, BSOD, এবং হ্যাঙ্গ তদন্তে WinDbg ব্যবহার করার ব্যবহারিক পার্থক্য কী?

ডাম্প সাধারনত ক্র্যাশ ও হ্যাং-এর জন্য সবচেয়ে মূল্যবান আর্টিফ্যাক্ট কারণ এগুলো সময়ের মুহূর্তে এক্সিকিউশন স্টেট ক্যাপচার করে।

  • অ্যাপ ক্র্যাশ: ইউজার-মোড ডাম্প; এক্সেপশন কোড ও স্ট্যাক বিশ্লেষণ করুন।
  • BSOD: কার্নেল ডাম্প; ড্রাইভার ও কার্নেল স্টেট চিহ্নিত করুন।
  • হ্যাং: অ্যাপ/সিস্টেম অপরিবর্তিত অবস্থায় থাকাকালীন ডাম্প নিন; থ্রেড স্ট্যাক, ওয়েট রিজন ও লক কনটেনশন পরীক্ষা করুন।

WinDbg ডাম্পকে একটি গল্পে পরিণত করে, কিন্তু সঠিক সিম্বল ছাড়া স্ট্যাকগুলো অর্থহীন হতে পারে।

Related posts