Docker Performance Tuning (ডকার পারফরম্যান্স টিউনিং)
ডকার কন্টেইনারগুলো সাধারণত খুব হালকা হলেও, প্রোডাকশন লোডে এদের পারফরম্যান্স অপ্টিমাইজ করা জরুরি। ভুল কনফিগারেশনের কারণে অ্যাপ্লিকেশন স্লো হতে পারে বা অতিরিক্ত রিসোর্স খরচ হতে পারে।
১. স্টোরেজ ড্রাইভার (Storage Drivers)
ডকার ইমেজ এবং কন্টেইনারের লেয়ার ম্যানেজ করার জন্য স্টোরেজ ড্রাইভার ব্যবহার করে। সঠিক ড্রাইভার নির্বাচন পারফরম্যান্সে বড় প্রভাব ফেলে।
- overlay2: এটি বর্তমানে ডকারের ডিফল্ট এবং সবচেয়ে আধুনিক ড্রাইভার। এটি খুব দ্রুত এবং মেমোরি সাশ্রয়ী।
- aufs: পুরানো সিস্টেমে ব্যবহৃত হতো, এখন খুব একটা ব্যবহৃত হয় না।
- btrfs/zfs: যদি হোস্ট ফাইলসিস্টেম এই টাইপ হয়, তবে এগুলো ব্যবহার করা যায়। বিশেষ করে ব্যাকআপ এবং স্ন্যাপশট নিতে এগুলো ভালো কাজ করে।
২. লগিং ড্রাইভার পারফরম্যান্স (Logging Driver)
ডিফল্টভাবে ডকার সব লগ json-file হিসেবে সেভ করে। যদি অ্যাপ্লিকেশনের লগের পরিমাণ অনেক বেশি হয়, তবে ডিস্ক I/O এবং CPU-তে চাপ বাড়তে পারে।
- Optimization: প্রোডাকশনে
json-fileএর বদলেsyslogবাjournaldব্যবহার করা পারফরম্যান্সের জন্য ভালো। - Log Rotation: লগ বড় হয়ে যাতে ডিস্ক ফুল না হয় এজন্য লগের সাইজ লিমিট করে দিন।
৩. নেটওয়ার্ক পারফরম্যান্স (Network Performance)
কন্টেইনার নেটওয়ার্কিং ওহোয়াইটহেড (Overhead) কমাতে নিচের টিপসগুলো কাজে লাগাতে পারেন:
- Host Mode: অত্যন্ত হাই-পারফরম্যান্স অ্যাপের (যেমন: বড় ডেটাবেস) জন্য
bridgeমোডের বদলে সরাসরিhostনেটওয়ার্ক ব্যবহার করুন। - Overlay Networking: সোয়ার্ম মোডে ওভারলে নেটওয়ার্কের MTU (Maximum Transmission Unit) টিউন করলে নেটওয়ার্ক প্যাকেট লস কমে।
৪. রিসোর্স অ্যালোকেশন এবং কার্নেল টিউনিং
- Resource Limits: কন্টেইনারকে লিমিট ছাড়া চলতে দিলে এটি অন্য কন্টেইনারের মেমোরি বা CPU কেড়ে নিতে পারে।
- Kernel Parameters (
sysctl): হোস্ট মেশিনের কার্নেল প্যারামিটার টিউন করে কানেকশন লিমিট বাড়ানো যায়। যেমন:net.core.somaxconnবাfs.file-maxটিউনিং।
৫. ডকার ডিমন টিউনিং (Docker Daemon)
/etc/docker/daemon.json ফাইলে কিছু পরিবর্তন করে পারফরম্যান্স বাড়ানো যায়:
{
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5,
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}৬. বেঞ্চমার্কিং (Benchmarking)
আপনার কন্টেইনারের পারফরম্যান্স মাপার জন্য নিচের টুলগুলো ব্যবহার করতে পারেন:
- docker stats: লাইভ মেমোরি এবং CPU ব্যবহার দেখার জন্য।
- Sysbench: CPU এবং I/O টেস্টিংয়ের জন্য।
- Apache Benchmark (ab): ওয়েব সার্ভারের ট্রাফিক হ্যান্ডেল করার ক্ষমতা মাপার জন্য।
সারাংশ
পারফরম্যান্স টিউনিং একটি ধারাবাহিক প্রক্রিয়া। আপনার অ্যাপ্লিকেশনের ক্যারেক্টার অনুযায়ী (CPU intensive বা I/O intensive) কনফিগারেশন পরিবর্তন করতে হবে।