هیچ چیز برای کاربران آزاردهندهتر از یک سرور کند نیست. سروری که پاسخدهی آن چند ثانیه طول بکشد، حتی اگر سختافزار قدرتمندی داشته باشد، در عمل کارایی لازم را نخواهد داشت. در دنیای امروز که هر میلیثانیه اهمیت دارد، Performance Tuning یا بهینهسازی عملکرد سرور یکی از کلیدیترین مهارتهای یک مدیر سیستم محسوب میشود.
هدف Performance Tuning این است که از منابع موجود — اعم از CPU، RAM، Disk و Network — بیشترین کارایی ممکن گرفته شود بدون اینکه هزینه اضافی بابت ارتقا سختافزار پرداخت شود.
در این مقاله از نوین هاست یاد میگیرید چگونه با مجموعهای از تنظیمات دقیق، سرور خود را تا چند برابر سریعتر و پایدارتر کنید.
Performance Tuning چیست؟
Performance Tuning مجموعهای از تنظیمات و تغییرات نرمافزاری است که با هدف افزایش سرعت، پایداری و کارایی سرور انجام میشود.
این فرآیند میتواند شامل اصلاح کرنل، بهینهسازی سرویسها، مدیریت حافظه و یا تنظیم شبکه باشد.
تفاوت Tuning با Optimization:
- Optimization معمولاً در سطح نرمافزار (مثلاً تنظیم MySQL) انجام میشود.
- Tuning شامل تنظیمات سیستمی و زیرساختی است که روی کل سرور تأثیر میگذارد.
به بیان ساده، Performance Tuning یعنی فشار کمتر، سرعت بیشتر.
چرا Performance Tuning مهم است؟
حتی قدرتمندترین سرورها بدون تنظیم مناسب میتوانند کند و ناپایدار شوند.
دلایل اصلی اهمیت Tuning:
- افزایش سرعت پاسخدهی تا چند برابر
- کاهش بار CPU و مصرف RAM
- جلوگیری از Bottleneck در Disk یا Network
- کاهش هزینههای زیرساخت با استفاده بهینه از منابع
- افزایش رضایت کاربران نهایی و SEO سایتها
ابزارهای پایه برای بررسی عملکرد
قبل از اعمال تغییرات، باید بدانیم گلوگاه سیستم کجاست. ابزارهای زیر برای تحلیل عملکرد حیاتیاند:
| ابزار | کاربرد |
|---|---|
htop | نمایش زنده مصرف CPU و RAM |
iostat | تحلیل ورودی/خروجی دیسک |
vmstat | مشاهده وضعیت حافظه و پردازشها |
sar | ثبت دادههای عملکرد در زمان طولانی |
glances | مانیتورینگ جامع CPU، RAM، I/O، Network |
بخش اول: بهینهسازی سیستمعامل (OS Level Tuning)
۱. بهروزرسانی کرنل و پکیجهای حیاتی
قبل از هر کاری، سیستم باید بروز باشد. بسیاری از بهبودهای عملکردی در نسخههای جدید کرنل وجود دارند.
# برای AlmaLinux / CentOS
sudo dnf update -y
# برای Ubuntu / Debian
sudo apt update && sudo apt upgrade -y
۲. انتخاب Scheduler مناسب برای CPU و Disk
Scheduler مسئول مدیریت صف پردازشها است. انتخاب نوع درست آن میتواند عملکرد I/O را متحول کند.
برای مشاهدهی Scheduler فعلی:
cat /sys/block/sda/queue/scheduler
پیشنهاد:
- Deadline برای SSDها
- BFQ یا MQ-Deadline برای سرورهای با بار IO بالا
۳. تنظیم فایل sysctl.conf برای Memory و Network
این فایل قلب تنظیمات سیستم است. برخی پارامترهای کلیدی:
vm.swappiness = 10
vm.vfs_cache_pressure = 50
fs.file-max = 2097152
net.core.somaxconn = 1024
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_window_scaling = 1
اعمال تنظیمات:
sudo sysctl -p
🔸 این تغییرات باعث افزایش سرعت شبکه، کاهش مصرف حافظه و بهبود مدیریت فایلها میشود.
۴. حذف سرویسهای غیرضروری
هر سرویس غیرضروری در حال اجرا، بخشی از CPU و RAM را مصرف میکند.
برای شناسایی آنها:
systemd-analyze blame
سپس غیرفعالسازی:
sudo systemctl disable bluetooth cups avahi-daemon
بخش دوم: بهینهسازی CPU
۱. مدیریت اولویت فرآیندها با Nice و Renice
فرآیندهای سنگین را میتوان با اولویت کمتر اجرا کرد:
nice -n 10 ./backup.sh
برای تغییر اولویت فرآیند در حال اجرا:
sudo renice +5 -p 1234
۲. فعالسازی حالت Performance Governor
حالت Performance باعث میشود CPU همیشه در حداکثر فرکانس کار کند.
sudo cpupower frequency-set -g performance
برای بررسی:
cpupower frequency-info
۳. استفاده از Cgroups برای کنترل منابع
Cgroups به شما اجازه میدهد برای هر سرویس، میزان CPU و RAM مشخصی تعیین کنید:
sudo cgcreate -g cpu,memory:/limited
sudo cgset -r cpu.shares=512 limited
sudo cgset -r memory.limit_in_bytes=512M limited
بخش سوم: بهینهسازی حافظه (RAM & Swap)
۱. تنظیم Swappiness
Swappiness تعیین میکند سیستم چقدر از Swap استفاده کند.
مقدار پیشنهادی برای سرورهای با RAM زیاد:
sudo sysctl vm.swappiness=10
۲. فعالسازی ZRAM یا ZSWAP
ZRAM بخشی از RAM را برای فشردهسازی دادهها استفاده میکند:
sudo dnf install zram-generator -y
sudo systemctl enable zram-generator
نتیجه: عملکرد سریعتر در زمان کمبود حافظه فیزیکی.
۳. پاکسازی حافظه Cache
برای آزادسازی حافظه کش:
sync; echo 3 > /proc/sys/vm/drop_caches
بخش چهارم: بهینهسازی Disk I/O
۱. بررسی عملکرد دیسک
iostat -xm 5
ioping /
اگر دیسک درگیر است، زمان پاسخگویی سیستم افزایش مییابد.
۲. انتخاب File System مناسب
- EXT4 برای پایداری
- XFS برای کارایی بالا در فایلهای بزرگ
- Btrfs برای Snapshot و Volume Management
۳. استفاده از Mount Options
افزودن پارامترهای زیر در /etc/fstab:
noatime,nodiratime,discard
باعث کاهش I/O و افزایش سرعت SSD میشود.
۴. Write Back Cache
برای SSD فعال کنید:
sudo hdparm -W1 /dev/sda
بخش پنجم: بهینهسازی شبکه (Network Tuning)
۱. افزایش Connection Limit
در فایل /etc/security/limits.conf:
* soft nofile 100000
* hard nofile 100000
۲. تنظیم TCP Stack
پارامترهای زیر برای کاهش Latency:
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
net.ipv4.tcp_fin_timeout = 10
۳. فعالسازی TCP Fast Open
برای کاهش زمان Handshake:
net.ipv4.tcp_fastopen = 3
۴. استفاده از ابزار تست شبکه
iperf3 -s # روی سرور
iperf3 -c IP # روی کلاینت
بخش ششم: بهینهسازی سرویسها
۱. Apache / Nginx
در Nginx:
worker_processes auto;
worker_connections 4096;
keepalive_timeout 15;
در Apache:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
۲. MySQL / MariaDB
در فایل /etc/my.cnf:
innodb_buffer_pool_size = 2G
query_cache_size = 128M
max_connections = 200
۳. PHP-FPM
در /etc/php-fpm.d/www.conf:
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.max_requests = 500
بخش هفتم: ابزارهای Benchmark و مانیتورینگ
برای سنجش اثر تغییرات:
| ابزار | کاربرد |
|---|---|
ab (Apache Benchmark) | تست تعداد درخواستها |
wrk | تست همزمانی بالا |
sysbench | تست CPU, I/O, DB |
glances | مانیتورینگ بلادرنگ |
نمونه تست:
ab -n 10000 -c 100 http://example.com/
بخش هشتم: اتوماسیون Tuning با Tuned و Ansible
۱. استفاده از Tuned Profiles
sudo dnf install tuned -y
sudo systemctl enable --now tuned
sudo tuned-adm profile throughput-performance
پروفایلهای آماده برای موارد مختلف وجود دارد:
- balanced
- latency-performance
- throughput-performance
۲. تنظیم خودکار با Ansible
میتوانید فایل playbook بنویسید که روی تمام سرورها تغییرات را اعمال کند.
بخش نهم: اشتباهات رایج در Performance Tuning
- تغییر تنظیمات بدون Backup
- استفاده از مقادیر بیش از حد بالا برای Cache یا Threads
- غیرفعال کردن Swap یا SELinux بدون دلیل
- اعمال تنظیمات عمومی بدون شناخت Workload
- نداشتن ابزار مانیتورینگ لحظهای
جمعبندی
Performance Tuning یعنی شناخت دقیق رفتار سیستم و اعمال تغییرات هدفمند.
درست مانند تیونکردن موتور خودرو، هر پیچ کوچک در تنظیمات میتواند تفاوت بزرگی در سرعت و پایداری ایجاد کند.
یک سرور بهینه، فقط سریعتر نیست — پایدارتر، مقاومتر و اقتصادیتر است.
با اجرای تنظیمات این مقاله میتوانید تا چند برابر سرعت و بهرهوری سرور خود را افزایش دهید.
نوین هاست یار نوین شماست
در نوین هاست، ما بهینهسازی را بخشی از پیکربندی استاندارد میدانیم، نه گزینه اضافی. تمام سرورهای ابری و اختصاصی نوین هاست با پروفایلهای Performance Tuned ارائه میشوند ، از بهینهسازی کرنل تا تنظیمات Nginx و MySQL برای حداکثر سرعت.
