آموزش نحوه بهینه سازی عملکرد سرور
آموزش نحوه بهینه سازی عملکرد سرور
سرورها خدماتی را در شبکه به مشتریان ارائه می دهند.
سرورهای محبوب ممکن است به هزاران یا میلیون ها مشتری در یک روز خدمات رسانی کنند.
همچنین، با محدود بودن سرعت شبکه، به نظر می رسد که سرورها باید برای حداکثر کارایی بهینه شوند.
علاوه بر این، برای اطمینان از اینکه سرور به ارائه خدمات خود ادامه می دهد، مهم است که سرور امن باشد.
یادگیری برخی از این نکات بهینه سازی و امنیت برای سرورهای لینوکس ممکن است به بسیاری از مدیران کمک کند.
توجه: این مقاله در درجه اول بر روی بهینه سازی تمرکز دارد تا امنیت.
اولین مجموعه از بهینه سازی ها و بهبودهای امنیتی با سخت افزار سرور شروع می شود.
اطمینان حاصل کنید که تمام سخت افزار در شرایط کار قرار دارد و سرور از نظر فیزیکی ایمن است.
اگر افراد ناخواسته بتوانند به طور فیزیکی به سرور دسترسی داشته باشند، امنیت نرم افزار بی فایده است.
هنگامی که شخصی دسترسی فیزیکی داشته باشد، سخت افزار و داده ها می توانند به راحتی نابود یا دزدیده شوند.
در مورد بهینهسازی سختافزار، مهمترین سختافزار شامل CPU، دستگاههای ذخیرهسازی (یعنی هارد درایو)، RAM/حافظه و دستگاههای شبکه (مانند کارتهای شبکه) است.
حتما تراشه های حافظه کافی، CPU های قدرتمند، دستگاه های ذخیره سازی سریع و پایدار (ترجیحا با RAID) و کارت های شبکه سریع نصب کنید.
نکته: نکات زیادی برای بخش سخت افزار و شبکه امنیت و بهینه سازی سرور وجود دارد. با این حال، این مقاله بر روی نرم افزار تمرکز دارد.
هنگام نصب توزیع لینوکس برای سرور، توزیعی را انتخاب کنید که بهترین نیازها را برآورده کند
در صورت امکان، پارتیشن swap را روی دستگاه ذخیره سازی خودش یا روی دستگاه ذخیره سازی کم استفاده شده قرار دهید.
هنگام تنظیم پلن پارتیشن بندی، سعی کنید از جدول پارتیشن بندی GPT و فایل سیستم های ext4 استفاده کنید.
هنگام قالب بندی فایل سیستم ها، سعی کنید از یک بلوک بزرگ (مانند 8192) استفاده کنید.
علاوه بر این، سیستم عامل اصلی، home directory، داده ها و فایل های سرور و boot directory هر کدام را در پارتیشن یا دستگاه ذخیره سازی خود قرار دهید.
این نکات بک آپ گیری، بازیابی، نوشتن فایل و دسترسی به داده ها را آسان تر و کارآمدتر می کند.
در سرور، برنامههایی را که به آنها نیاز ندارید، حذف کنید.
همچنین اکثر سرورها نباید رابط کاربری گرافیکی نصب داشته باشند.
سرور باید یک رابط خط فرمان باشد.
همچنین دایمون ها و سرویس های غیر ضروری را غیرفعال کنید.
نرمافزار کمتری روی سرور اجرا و نصب شود، زیرا منجر به سرور سریعتر و نگهداری آسانتر میشود.
هر بار که یک فایل خوانده می شود، متا داده های زمان دسترسی روی هارد دیسک نوشته می شود.
بدیهی است که غیرفعال کردن ضبط در زمان دسترسی، سرعت خواندن فایل ها را افزایش می دهد.
برای غیرفعال کردن Access-time فایل etc/fstab/ را باز کنید و “noatime” را به ستون پارامترها برای فایل سیستم مورد نظر اضافه کنید.
برای اعمال تغییر بدون راهاندازی مجدد، “/mount -oremount /MOUNT/POINT” را در ترمینال با امتیازات Root اجرا کنید.
با این حال، برخی از برنامه ها به زمان دسترسی نیاز دارند.
اگر با این مشکل مواجه شدید یا مشکوک هستید، از “relatime” به جای “noatime” استفاده کنید که جایگزین سریعتری برای ذخیره زمان دسترسی است.
یکی دیگر از پارامترهای مورد استفاده “nodiratime” است که ضبط زمان دسترسی را برای فهرست ها غیرفعال می کند.
افزایش حافظه مشترک باعث افزایش سرعت سیستم و وب سایت می شود.
حافظه مشترک فضای حافظه ای است که هر برنامه ای می تواند به آن دسترسی داشته باشد.
چند گزینه وجود دارد که می توان آنها را در etc/sysctl.conf/ تنظیم کرد.
shmmax – حداکثر بایت در هر بخش حافظه مشترک. این نباید از کل حافظه تجاوز کند
shmmin – دقیقه بایت در هر بخش حافظه مشترک. این معمولا “1” است
shmall – مجموع تمام بخش های به اشتراک گذاشته شده (اندازه گیری شده در صفحات)
shmmni – حداکثر تعداد بخش
برای پی بردن به مقدار مناسب shmmax، مقدار حافظه سیستم را بدانید.
این را می توان با این دستور “cat /proc/meminfo | grep MemTotal” پیدا کرد.
پس از مشخص شدن کل حافظه، آن را با استفاده از یکی از فرمول های زیر به بایت تبدیل کنید.
در مرحله بعد، مقداری کمتر از مقدار کل حافظه (بر حسب بایت) انتخاب کنید.
این مورد نیاز است زیرا کارت گرافیک و هسته لینوکس مقداری از حافظه را برای خود ذخیره می کنند.
معمولاً نیم گیگابایت (536870912 بایت) برای حافظه رزرو شده کافی است.
برای بدست آوردن مقدار shmmax، حافظه رزرو شده را از کل کم کنید.
- KILOBYTES*1024=BYTES
- MEGABYTES*1024*1024=BYTES
- GIGABYTES*1024*1024*1024=BYTES
برای بدست آوردن shmall، shmmax را بر اندازه صفحه تقسیم کنید.
برای دریافت اندازه صفحه، “getconf PAGE_SIZE” را اجرا کنید.
بنابراین، shmall به صورت shmax تقسیم بر “getconf PAGE_SIZE” است.
برای مشاهده مقادیر فعلی، “ipcs -lm” را در ترمینال اجرا کنید،یا etc/sysctl.conf/ را مشاهده کنید، یا فایل های مختلف Proc را مشاهده کنید (cat /proc/sys/kernel/shmmax).
مقادیر مورد نظر را می توان با ویرایش etc/sysctl.conf/ به طور دائم تنظیم کرد.
سپس، “sysctl -p” را با امتیازات Root اجرا کنید تا تغییرات بدون راهاندازی مجدد اعمال شوند.
از طرف دیگر، مقادیر را می توان به طور موقت تا راه اندازی مجدد بعدی با اجرای دستوراتی مانند “echo 3758096384 > /proc/sys/kernel/shmmax” تنظیم کرد.
در سیستم دسکتاپ ، من مقادیر زیر را دارم.
- kernel.shmmax=3758096384
- kernel.shmmin=1
- kernel.shmall=917504
- kernel.shmmni=4096
نکته: برای مشاهده صفهای پیام، بخشهای حافظه مشترک و آرایههای semaphore، دستور “ipcs -a” را اجرا کنید.
اگر IPv6 استفاده نمی شود، آن را غیرفعال کنید.
برای انجام این کار، etc/sysctl.conf/ را باز کنید و مطمئن شوید که خطوط لیست شده در زیر در فایل وجود دارد.
در مرحله بعد، “sysctl -p” را در ترمینال با امتیازات Root اجرا کنید تا تنظیمات را بدون راهاندازی مجدد بازخوانی کنید.
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
نکته: هنگام ایجاد تغییرات در etc/sysctl.conf/، به یاد داشته باشید که “sysctl -p” را اجرا کنید و دایمون های مورد نیاز برای سرور را مجددا راه اندازی کنید.
برخی از مقادیر دیگری که مدیران سرور ممکن است نیاز به تغییر در etc/sysctl.conf/ داشته باشند شامل موارد زیر می شود:
fs.file-max – (int) max open files
net.ipv4.ip_local_port_range – (int int) range of usable ports; state start and end (1024 65535)
net.ipv4.tcp_tw_recycle – (bool) fast recycling of TIME_WAIT sockets
net.ipv4.tcp_tw_reuse – (bool) reuse of sockets in TIME_WAIT state
net.ipv4.tcp_syncookies – (bool) use syncookies
kernel.sched_migration_cost_ns – (int) migrate processes after X nanoseconds; useful on forking servers like Apache and PostgreSQL
net.core.rmem_max – (int) receiving socket buffer size in bytes
توجه: در etc/sysctl.conf/، مقادیر boolean به صورت “1” برای true و “0” برای false نمایش داده می شود.
کاهش یا غیرفعال کردن گزارش و اشکال زدایی عملکرد IO را بهبود می بخشد، فضای ذخیره سازی را ذخیره می کند و فعالیت فرآیند را کاهش می دهد.
با این حال، ثبت و اشکال زدایی کمتر، تشخیص مشکلات را دشوارتر می کند.
اندازه کش برخی از پایگاه های داده SQL (مانند MySQL) را افزایش دهید.
همچنین پایگاه داده ها را تا حد امکان کوچک و منظم نگه دارید.
برای یافتن فرآیندهایی که باعث مشکلات عملکرد یا گلوگاه می شوند، دستورات فهرست شده زیر را امتحان کنید.
iostat – نمایش شبکه، دستگاه و استفاده CPU از پردازش ها (در بسته “sysstat”)
top – فرآیندها و اطلاعات پردازش مانند PID، استفاده از حافظه، استفاده از CPU و غیره را فهرست می کند.
vmstat – فهرست استفاده از CPU، IO و حافظه را برای فرآیندهانشان می دهد.
کدهای وب سایت را بهینه، ساده و کوچک کنید.
نمونه هایی از کدهایی که باید تقویت شوند عبارتند از Javascript، CSS، HTML و PHP.
فایل های کوچکتر منجر به کاهش زمان آپلود برای سرور و سرعت دانلود سریع تر برای مشتری می شود.
کد بهینه شده علاوه بر تعمیر و نگهداری آسانتر، منجر به اجرا و پردازش سریعتر و کارآمدتر کد می شود.
سرورهای HTTP (مانند آپاچی) را می توان برای فشرده سازی داده ها تنظیم کرد.
این منجر به سرعت اتصال بهتر می شود.
علاوه بر فشرده سازی، فعال کردن کش راهی برای مشتری برای ذخیره کش در سیستم محلی فراهم می کند.
بنابراین، بازدید مجدد از وب سایت منجر به زمان بارگذاری بهتر می شود زیرا بخشی یا تمام محتوای وب در سیستم مشتری ذخیره می شود.
در سرورهایی که از آپاچی استفاده می کنند، تنظیمات فشرده سازی و کش در فایل “htaccess.” پیکربندی می شوند.
سرورهای دارای پایگاه داده از استفاده از صفحات عظیم سود می برند.
Hugepage ها صفحات حافظه ای هستند که می توانند بزرگتر از صفحات معمولی باشند.
“grep -i hugetlbfs /proc/filesystems” یا “grep Huge /proc/meminfo” را اجرا کنید تا ببینید آیا سیستم از Hugepages پشتیبانی می کند یا خیر.
“hugetlbfs” ماژولی است که از صفحه بزرگ پشتیبانی می کند.
Hugepage sizes
- x86 – 4K and 4M (2M in PAE mode)
- x86-64 – 4K, 8K, 64K, 256K, 1M, 4M, 16M, 256M
- ppc64 – 4K and 16M
مقالات و دوره های مرتبط:
پک آموزشی بهینه سازی و بهبود عملکرد لینوکس
پک آموزشی ورود به دنیای لینوکس Linux Essentials
دوره آموزشی +Linux یا LPIC 1 – Exam 101
دوره آموزشی امنیت سرورهای لینوکسی lpic 3-303
بررسی اجمالی شناسایی بدافزار لینوکس (Linux Malware Detect یا LMD)
سایر مقالات مربوط به حوزه لینوکس
آموزش نحوه بهینه سازی عملکرد سرور – نویسنده: موسی رشوند
# بهینه سازی عملکرد سرور ، # نحوه بهینه سازی عملکرد سرور
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.