وقتی که شما بخواهید .وبسایت خود را از نظر سرعت و کیفیت بهینه سازی کیند، همیشه گزینه های مختلف خواهید داشت که می توانید از آنها استفاده کنید. معمولا کارهایی مانند کش کردن صفحات، بهینه سازی تصاویر، بررسی قالب و همینطور استاندارد سازی اسکریپت ها و کدهای CSS جزو اقداماتی است که در ابتدای راه انجام می شود. اما اقدامات مهمتری است که میتواند سرعت سایت شما را به شدن بالاتر برده و به احتمال زیاد از هزینه های سایت شما نیز بکاهد. بررسی وب سرور و تیونینگ آن یکی از این موارد است که میتواند کیفیت بالا آمدن سایت شما و تجربه کاربری را به شدت بالا ببرد. یکی از وب سرور هایی که می تواند این قابلیت را به خوبی در اختیار شما بگذارد، لایت اسپید است. که در اینجا با تنظیمات تیونینگ لایت اسپید بیشتر آشنا خواهیم شد.
مطلب آموزش تیونینگ لایت اسپید به صورت جزء به جزء در تاریخ سوم اردیبهشت ماه بازنویسی و به طور کامل بروزرسانی شد
فهرست عناوین
منظور از تیونینگ لایت اسپید چیست
در این مقاله هدف آشنایی با تنظیمات تیونینگ لایت اسپید است که در این بخش پارامترهای مربوط به Tuning توضیح داده میشود. در بخش Configuration کنسول ادمین LiteSpeed قسمت Tuning مربوط به یکسری از تنظیمات اصلی وب سرور جهت افزایش سرعت لود وب سایت هستند که در ادامه براساس LiteSpeed Tuning Configuration و با جزئیات توضیح داده خواهند شد. همانطور که در مقاله آشنایی با وب سرور لایت اسپید توضیح داده شد با اعمال تنظیمات صحیح تیونینگ لایت اسپید، سرعت لود وب سایت بصورت چشمگیری افزایش پیدا خواهد کرد.
چنانچه با وب سرور لایت اسپید آشنایی ندارید، می توانید به مقاله مذکور مراجعه کنید.
دسترسی به تنظیمات تیونینگ لایت اسپید
برای اینکه به تنظیمات مربوط به تیونینگ لایت اسپید دسترسی داشته باشید باید در صفحهی اولیه پنل ادمین روی Configuration کلیک نمائید سپس وارد سربرگ Tuning شوید. برای اینکار طبق مراحل زیر انجام دهید:
پارامترهایی که در سربرگ تیونینگ لایت اسپید تنظیم میشوند و ما در ادامه آنها را توضیح خواهیم داد به هفت دستهی کلی تقسیم میشوند:
- بهبود عملکرد سیستم عامل (OS Optimization)
- ارتباطات (Connection)
- درخواستها و پاسخها (Request/Response)
- بهینهسازی تحویل فایلهای استاتیک (Static File Delivery Optimization)
- فشردهسازی دو نوع GZIP و Brotli
- تنظیمات کلی SSL
- QUIC
لازم به ذکر است برای تغییر هر پارامتر روی دکمهی Edit در روبروی دسته بندی کلیک نمائید.
پارامترهای بهبود عملکرد سیستم عامل در تیونینگ لایت اسپید
بخش OS Optimization از Tuning لایت اسپید مربوط به تنظیمات مرتبط با لایه سیستم عامل است که با وب سرور لایت اسپید در ارتباط هستند
RAM Disk Path: تنظیم کردن این پارامتر تیونینگ لایت اسپید به شما اجازه میدهد تا محل قرار گیری دیسک RAM را مشخص کنید. یک سروری که رَم اضافی و بیکار دارد میتواند مدت زمان خواندن از دیسک (HDD) را با خواندن اطلاعات از رم دیسک کاهش دهد.
شاید برای شما سوال پیش بیاید که رم دیسک چیست؟ اگر بخواهیم بصورت خلاصه رم دیسک را توضیح دهیم RAM Disk یا رم درایو RAM Drive یک فناوری قدیمی است که به صورت یک درایو مانند همهی درایوهای دیگر در کامپیوتر اجازه میدهد که بخشی از حجم حافظه تصادفی یا همان رَم را به یک فضای ذخیره سازی مستقل تبدیل کنیم به طوری بتوان فایل، برنامه ها و … را روی آن ذخیره و به حالت عادی از آنها استفاده نمود اما مهمترین ویژگی این فناوری این است که چندین برابر از هارد دیسک سریعتر است یعنی اگر نرم افزاری را داخل این درایو نصب کنید فرایند اجرای آن به مراتب کمتر از اجرای آن از روی هارد HDD و SSD است. وب سرور لایت اسپید LSWS برای بهبود عملکرد خود به شما اجازه میدهد که از این امکان در تیونینگ لایت اسپید استفاده کنید.
نکته رم دیسک ابتدا باید در تنظیمات سطح OS یا همان سیستم عامل انجام شود تا وب سرور بتواند از آن استفاده کند. معمولاً توزیعهای مختلف لینوکس از /dev/shm بعنوان مسیر رم دیسک استفاده میکنند اما بصورت کلی به سیسم عامل بستگی دارد.
Default SHM Directory: با تنظیم این پارامتر تیونینگ لایت اسپید دایرکتوری پیش فرض مموری اشتراکی (shared memory) تغییر میکند و اگر این مسیر موجود نباشد ایجاد خواهد شد. همهی دادههای SHM در این دایرکتوری ذخیره میشوند مگر اینکه مسیر دیگری مشخص شود.
Reverse DNS Lookup: این پارامتر از تیونینگ لایت اسپید یک جستجویی مبتنی بر IP -> Domain Name برای هر یوزر انجام میدهد که میتوانید برای دسترسی لاگینها بررسی شود و بصورت پیش فرض نیز غیرفعال است.
پارامترهای ارتباطات
بخش Connection از تیونینگ لایت اسپید مربوط به تنظیمات اتصالاتی است که سرور قبول میکند با تنظیم صحیح پارامترهای این بخش، میزان connectionهای کمتری از دست خواهید داد و بهرهوری کلی سرور افزایش خواهد یافت همچنین ریسک حملات DOS و DDOS کاهش پیدا میکند.
Max Connections: این پارامتر تیونینگ لایت اسپید از نوع integer است و حداکثر تعداد اتصالات یا Connectionهایی که سرور میتواند قبول کند را مشخص میکند. این مقدار مربوط به هر دو نوع اتصالات TCP ساده و SSL است. این عدد بهتر است که از حد سخت افزاری یا hard limitی که توسط server software edition یا لایسنس تعریف میشود، تجاوز نکند. این عدد برای انواع لایسنس به این شرح است: 500 برای لایسنس VPS و 800 برای Ultra VPS. زمانی که تعداد اتصالات همزمان ( concurrent connections ) به مقدار ماکسیمم تعریف شده رسید، سرور اتصالات زنده نگه داشته شده (Keep-Alive connections) را به محض تمام شدن درخواستشان میبندد.
نکته زمانی که سرور با یوزر root شروع به کار میکند، تلاش میکند تا محدودیتها را بر اساس مقدار تعریف شده برای هر پروسه بصورت اتوماتیک تعریف کند که اگر با خطا مواجه شود ممکن است نیاز باشد مقدار این محدودیت را بصورت دستی افزایش دهید.
Max SSL Connections: این پارامتر تیونینگ لایت اسپید از نوع integer است و حداکثر تعداد اتصالات از نوع SSL یا SSL Connection هایی که سرور میتواند قبول کند را مشخص میکند. مجموع اتصالات SSL و non- SSL نباید از مقدار Max Connections تجاوز کند بنابراین باید مقدار واقعی Max SSL Connections مجاز کمتر از Max Connections باشد.
Connection Timeout (secs): این پارامتر نیز از نوع integer است و ماکسیمم مدت زمان بیکاری یک اتصال در طول پردازش یک درخواست را مشخص میکند. اگر در طول این زمان درخواست بیکار باشد مثلاً هیچ فعالیت ورودی یا خروجی ( I/O activity ) نداشته باشد، اتصال بسته میشود.
نکته: اگر این پارامتر به مقدار کمی تنظیم شود، باعث میشود که در طول حملات DoS اتصالات زیادی که سمت سرور هستند سریع بسته شوند.
Max Keep-Alive Requests: این پارامتر تیونینگ لایت اسپید هم یک عدد از نوع integer است و ماکسیمم تعداد درخواستهایی را مشخص میکند که در طول یک جلسه پایدار و فعال (persistent session ) از سمت سرور پذیرفته و پردازش میشود. بعد از رسیدن به این عدد، سرور تمامی اتصالات را میبندد.
Keep-Alive چیست؟ با استفاده از Keep-Alive یک پل ارتباطی بین وب سرور و مرورگر ایجاد میشود بنابراین برای هر درخواست نیاز به یک اتصال جدید نیست و از طریق یک اتصال چند فایل رد و بدل میشود.
نکته: بهتر است این پارامتر تا حد قابل قبولی بالا باشد. مقادیر “1” و “0” حالت keep-alive را غیرفعال میکنند.
Keep-Alive Timeout (secs): این پارامتر از نوع integer است و ماکسیمم زمان بیکاری بین درخواستهای یک اتصالی که در حالت فعال است (keep-alive) را مشخص میکند. منظور این است که زمانیکه یک اتصال بین وب سرور و مرورگر برقرا میشود اگر در این مدت تعیین شده هیچ درخواستی ارسال نشود، کل اتصال بسته میشود و برای درخواستهای بعدی باید اتصال جدیدی برقرار شود. این تنظیمات فقط برای اتصالات HTTP/1.1 کار میکند. اتصالات HTTP/2 دارای keep-alive timeoutهای طولانیتری هستند و تحت تاثیر این تنظیمات نیستند.
Send Buffer Size (bytes): این پارامتر از نوع integer است و سایز بافر ارسالی برای هر سوکت TCP را مشخص میکند. ماکسیمم مقدار مجاز512K است.
نکته: بهتر است این پارامتر به حالت ” Not Set ” یا 0 تنظیم شود تا از مقادیر پیش فرضی که توسط سیستم عامل تعیین میشود، تبعیت کند. همینطور اگر وب سایتتان فایلهایی با سایز بزرگ ارسال میکند بهتر است سایز بار ارسالی برای بهبود عملکرد افزایش داده شود. نکته دیگری که وججود دارد و لازم است که به آن توجه داشته باشید، کاهش این پارامتر متواند توان عملیاتی و مموری مصرفی را کاهش دهد.
Receive Buffer Size (bytes): این پارامتر از نوع integer است و سایز بافر دریافتی برای هر سوکت TCP را مشخص میکند. ماکسیمم مقدار مجاز512K است.
نکته: بهتر است این پارامتر به حالت ” Not Set ” یا 0 تنظیم شود تا از مقادیر پیش فرضی که توسط سیستم عامل تعیین میشود، تبعیت کند. همینطور اگر سایز بافر دریافتی زیاد باشد هنگام پردازش درخواست های ورودی با payload بزرگ موجب افزایش عملکرد میشود و کاهش این پارامتر متواند توان عملیاتی و مموری مصرفی را کاهش دهد.
پارامترهای مربوط به درخواستها و پاسخها در تیونینگ لایت اسپید
بخش Request/Response از تیونینگ لایت اسپید مربوط به درخواست هایی که کاربران به سمت وب سایت ارسال می کنند و همچنین پاسخ هایی که دریافت میکنند، می باشد.
Max Request URL Length (bytes): این پارامتر تیونینگ لایت اسپید از نوع integer است و ماکسیمم طول مجاز URL است. URL یک آدرس متنی است که برای دسترسی به وب سایت استفاده میشود. محدودیت سخت افزاری 65530 بایت است، اگر این پارامتر به مقداری بزرگتر مانند 64K تنطیم شود زمانی استفاده میشود که 65530 پر شد. مقدار پیش فرض این پارامتر 8192 یا 8K است.
Max Request Header Size (bytes): این پارامتر از نوع integer است و ماکسیمم سایز هدر HTTP یک URL درخواستی را مشخص میکند. محدودیت سخت افزاری این پارامتر 65530 بایت است و برای مقادیر بزرگتر از این عدد اگر کل مقدار 65530 پر شود، مورد استفاده قرار میگیرند.
نکته: برای کاهش مموری مصرفی، رفع باگهای احتمالی و تشخیص DoS، تا حد امکان این پارامتر را در تیونینگ لایت اسپید کوچک نگاه دارید. در حالت عادی مقدار 4-8K برای بیشتر وب سایتها مناسب است.
Max Request Body Size (bytes): این پارامتر تیونینگ لایت اسپید ماکسیمم سایز مربوط به body یک درخواست HTTP را مشخص میکند. حداکثر مقدار آن برای سیستم عاملهای 32Bit عدد 2GB و برای سیستم عاملهای 64 بیتی این عدد بصورت مجازی نامحدود است.
نکته: برای کمک به جلوگیری از حملات DoS، در تیونینگ لایت اسپید این پارامتر را به مقدار واقعی مورد نیازتان محدود کنید. فضای swap شما نیز باید فضای کافی برای تأمین این حد را داشته باشد.
Max Dynamic Response Header Size (bytes): این پارامتر از نوع integer است و ماکسیمم سایز هدر پاسخ هایی که بصورت داینامیک ایجاد میشوند را مشخص میکند. محدودیت سخت افزاری این پارامتر 65530 بایت است و برای مقادیر بزرگتر از این مقدار اگر عدد 65530 کاملاً استفاده شود، آن مقدار مورد استفاده قرار میگیرد. مقدار پیشفرض برایاین پارامتر در تیونینگ لایت اسپید برابر با 32768 یا 32K در نظر گرفته می شود.
نکته: برای تشخیص پاسخهای داینامیکِ بدِ تولید شده توسط اپلیکیشنهای خارجی، این پارامتر را به مقدار منطقی پایینی تنظیم نمائید.
Max Dynamic Response Body Size (bytes): این پارامتر از نوع integer است و ماکسیمم سایز بدنه یا body پاسخهایی که بصورت داینامیک ایجاد میشوند را مشخص میکند. حداکثر حد مجاز برای این پارامتر 2047MB است.
پارامترهای بهینهسازی تحویل فایلهای استاتیک در تیونینگ لایت اسپید
بخش Static File Delivery Optimization از تیونینگ لایت اسپید مربوط به بهینه سازی فایلهای ثابتی است که در طی درخواست ها و پاسخ ها برای کاربران وب سایت ارسال می شوند. تنظیمات این پارامتر ها به ویژه زمانی که حجم فایل ها زیاد باشد بسیار حائز اهمیت است.
Max Cached Small File Size (bytes): این پارامتر از نوع integer است و سایز بزرگترین فایلی که می تواند در مموری کَش شود را مشخص می کند. بصورت کلی فایل های استاتیک به 4 صورت می توانند خوانده شوند: memory buffer cache، memory-mapped cache، plain read/write و sendfile();.
فایل هایی که سایز آنها از این مقدار کمتر است از memory buffer cache خوانده می شوند، فایل هایی که سایز آنها از این مقدار بیشتر است اما از Max MMAP File Size (bytes) (در ادامه تیونینگ لایت اسپید این پارامتر را توضیح خواهیم داد) کمتر است از memory-mapped cache خوانده می شوند و فایل هایی که سایز آنها بیشتر از Max MMAP File Size (bytes) است توسط plain read/write یا sendfile(); خوانده می شوند. بهینه ترین حالت نگهداری فایل های استاتیک با سایز کمتر از 4K در memory buffer cache است.
نکته: در واقع memory-mapped cache بخشی از مموری مجازی است که بصورت بیت به بیت به یک فایل نسبتاً بزرگ اختصاص داده می شود. در واقع نگاشتی از فایل در مموری قرار می گیرد که باعث افزایش کارایی ورودی خروجی خصوصاً روی فایل های بزرگ است.
Total Small File Cache Size (bytes): این پارامتر تیونینگ لایت اسپید از نوع integer است و مشخص کننده مقدار کل مموری که می توان به کشِ بافر برای نگهداری یا کَش فایل های استاتیک کوچک تخصیص داد.
Max MMAP File Size (bytes): این پارامتر تیونینگ لایت اسپید از نوع integer است و مشخص کننده بزرگترین فایلی است که می تواند در مموری map یا نگاشت شود. فایلهای استاتیک در 4 قسمت می توانند نگهداری شوند: memory buffer cache، memory-mapped cache، plain read/write و sendfile();.
فایلهایی که سایز ان ها کمتر ااز Max Cached Small File Size باشد از memory buffer cache خوانده می شود . فایل هایی که سایز آنها بیشتر از Max Cached Small File Size باشد اما از Max MMAP File Size کمتر باشد از memory-mapped cache خوانده می شوند و فایل هایی که سایز آنها بیشتر از Max MMAP File Size (bytes) است توسط plain read/write یا sendfile() خوانده می شوند. از آنجا که سرور فضای آدرس 32 بیتی دارد ( 2 گیگ) پیشنهاد می شود این پارامتر خیلی بزرگ نباشد.
Total MMAP Cache Size: این پارامتر تیونینگ لایت اسپید از نوع integer است و مقدار نهایی و کلی که می توان برای memory- mapped cache برای کش کردن یا خواندن فایل های استاتیک با حجم متوسط استفاده شود را مشخص می کند.
use sendfile(); : این پارامتر تیونینگ لایت اسپید از نوع radio box انتخابی است و مشخص میکند در چه وضعیتی از سیستم فراخوانی sendfile() برای فایلهای استاتیک استفاده شود. همانطور که قبلاً توضیح داده شد فایل های استاتیک به چهار روش پردازش می شوند: memory buffer cache، memory-mapped cache، plain read/write و sendfile();. فایلهای کوچکتر از Max Cached Small File Size از memory buffer cache پردازش می شوند.
فایل های بزرگتر از Max Cached Small File Size اما کوچکتر از Max MMAP File Size از memory-mapped cache پردازش می شوند. فایل های بزرگتر از Max MMAP File Size بصورت read/write ساده یا توسط sendfile(); استفاده می شوند. sendfile(); یک سیستم فراخوانی “zero copy” است که میتواند بهره وری CPU را موقع خواند فایل های بزرگ بشدت کاهش دهد. sendfile(); به یک درایور کارت شبکه با هسته بهینه شده نیاز دارد و بهمین جهت برای آداپتور های شبکه سایز کوچک نمی تواند مناسب باشد.
Use AIO: این پارامتر تیونینگ لایت اسپید حالت انتخابی از لیست کشویی دارد. AIO مخفف asynchronous I/O است، در واقع نوعی از پردازش ورودی / خروجی است که اجازه می دهد تا پردازش دیگر که به I/O وابسته هستند قبل از پایان انتقال فعلی ادامه یابد. در واقع این با فعال کردن این پارامتر امکان استفاده از AIO برای فایل های استاتیک فراهم می شود. این پارامتر مرتبط با I/O است و اگر سرور I/O wait بالایی دارد این پارامتر مفید و کمک کننده است. برای سیستمهای 64 بیتی این امکان وجود دارد که فایل های نگاشت شده در فضای پردازش آدرس برای بهبود کارآیی AIO نگهداری شوند.
AIO Block Size: این پارامتر حالت انتخابی از لیست کشویی دارد و سایز بلاک ارسالی برای AIO را مشخص می کند. این بلاک سایز در تعداد کل فایل هایی که در حال پردازش هستند ضرب می شود و مقدار نهایی آن باید کمتر از physical memory سرور باشد در غیر اینصورت AIO کارایی نخواهد داشت. اگر سرور به اندازه کافی memory دارد می توانید از اعداد بزرگتری استفاده کنید. مقدار پیش فرض این پارامتر “1M” است.
File ETag: این پارامتر بصورت انتخاب از بین چند گزینه است و برای استفاده از ویژگی های inode فایل، آخرین زمان اصلاح فایل و سایز برای تولید هدرETag HTTP در فایل های استاتیک است. این سه مشخصه ذکر شده بصورت پیش فرض فعال هستند. اگر قصد پردازش فایل از جایی خارج از سرور فعلی دارید بعنوان مثال از روی سرور mirrored شده، بهتر است که inode فایل را تیک نزنید، زیرا اگر تیک بخورد ETag که برای فایل تولید می شود روی سرور ها متفاوت خواهد بود!
فشردهسازی دو نوع GZIP و Brotli در تیونینگ لایت اسپید
بخش GZIP/Brotli Compression از تیونینگ لایت اسپید مربوط به تنظیمات فشرده سازی است. در واقع این تنظیمات تیونینگ لایت اسپید مربوط به الگوریتمهای فشردهسازی GZIP و Brotli هستند.
هنگام برقراری ارتباط با یک وب سایت بین کاربر وب سایت و سرور فایل های زیادی رد و بدل می شود که در فرمت های مختلف متنی و مدیا هستند. هرچه حجم این فایل ها کمتر باشد سرعت لود و در نتیجه پاسخ دهی به کاربران افزایش می یابد. در این زمینه معمولاً دو الگوریتم پر کاربرد برای فشرده سازی برای کاهش حجم فایل ها استفاده می شود:
- الگوریتم GZIP که قدیمی تر است و روی انواع مدیا ها مانند عکس و فیلم و … اجرا میشود
- الگوریتم Brotli که اخیراً ارائه شده است کاربردی عمومی دارد و هر نوع فایلی را فشرده میکند
پیشنهاد می شود که الگوریتم Brotli برای PNG ، JPG و GIF استفاده نشود و معمولاً روی فایل های مبتنی بر متن مانند HTML، جاوا اسکریپت و CSS بهترین کارآیی را دارد. الگوریتم Brotli توسط شرکت گوگل ارائه شد و بعلت کارآیی فوق العاده اش به سرعت همه گیر شد، این الگوریتم در مقایسه با GZIP قدرت بیشتری دارد.
Enable Compression: این پارامتر تیونینگ لایت اسپید به صورت انتخاب از دکمه رادیویی است و فشرده سازی نوع GZIP/Brotli را برای انواع فایل های استاتیک و داینامیک فعال می کند. این گزینه در حالت پیش فرض تنظیمات تیونینگ لایت اسپید فعال است.
نکته: فعال کردن آن موجب کاهش پهنای باند مصرفی شبکه میشود. فایلهای مبتنی بر متن مانند html ، css و javascript تا 50% می توانند کاهش حجم داشته باشند که این خیلی عالی است.
Compressible Types: مشخص می کند چه نوعی از MIME ها فشرده شوند. بهتر است unset باشد یا تنظیمات default گذاشته شود تا mime-typesهای پیش فرض سرور استفاده شود زیر تقریباً اکثر آنها را پوشش میدهد.
مقادیر پیش فرض این پارامتر در تیونینگ لایت اسپید به این صورت می باشند:
text/*
application/x-javascript
application/javascript
application/xml
image/svg+xml
application/rss+xml
application/json
application/vnd.ms-fontobject
application/x-font
application/x-font-opentype
application/x-font-truetype
application/x-font-ttf
font/eot
font/opentype
font/otf
font/ttf
image/x-icon
image/vnd.microsoft.icon
application/xhtml+xml
مثال: اگر قصد تغییر آنها را دارید و میخواهید نوع خاصی را حذف کنید از علامت ! استفاده کنید بعنوان مثال میخواهید نوع text/* فشرده شود اما text/css نشود. به رولی شبیه text/*, !text/css نیاز دارید.
نکته: در این بخش از تنظیمات تیونینگ لایت اسپید فقط از نوع هایی استفاده کنید که فشرده سازی GZIP/Brotli برای آنها مفید باشد. فایل های باینری مثل عکس های gif/png/jpeg یا فایل های flash از این فشرده سازی سودی نمی برند چون این این نوع فایل ها بعلت پسوند شان از قبل فشرده شده اند و Brotli در واقع آنها را بزرگتر می کند.
Enable GZIP Dynamic Compression: این پارامتر تیونینگ لایت اسپید به صورت انتخاب از دکمه رادیویی است و با فعال کردن آن فشرده سازی GZIP پاسخهایی که اتوماتیک تولید می شوند را کنترل می کند. برای کارکرد درست این پارامتر باید Enable Compression که بعنوان اولین پارامتر این بخش توضیح داده شد، فعال باشد.
نکته: این پارامتر تیونینگ لایت اسپید بهره وری رَم و سی پی یو را افزایش می دهد و موجب ذخیره پهنای باند شبکه می شود.
GZIP Compression Level (Dynamic Content): این پارامتر تیونینگ لایت اسپید از نوع عددی بین ۱ تا ۹ است و مشخص کننده سطح فشرده سازی الگوریتم GZIP که روی محتوای داینامیک اعمال می شود. این پارامتر از رنج 1 (کمترین فشردهسازی ) تا 9 (بیشترین فشرده سازی) تغییر می کند. برای اعمال این پارامتر باید Enable Compression و Enable GZIP Dynamic Compression که پیش تر توضیح داده شدند، فعال باشند. مقدار پیش فرض این پارامتر 6 است.
نکته: سطح فشردگی بالا از CPU و memory بیشتری استفاده می کند. اگر از سرور قدرتمندی استفاده می کنید می توانید این پارامتر را روی مقادیر بالا سِت کنید اما تفاوت محسوسی بین رنج 6 و 9 نیست اما 9 از CPU cycles خیلی بیشتری استفاده می کند.
Brotli Compression Level (Dynamic Content): این پارامتر تیونینگ لایت اسپید از نوع عددی بین ۰ تا ۶ است و سطح فشرده سازی برای الگوریتم Brotli که روی responses های پویا اعمال می شود را مشخص می کند. رنج این پارامتر از 0 (غیر فعال شدن فشرده سازی) تا 6 ( بیشترین فشرده سازی ) است. این تنظیمات زمانی اعمال می شود که Enable Compression فعال باشد.
Auto Update Static File: این المان در تیونینگ لایت اسپید مشخص می کند آیا ورژن های فشرده سازی GZIP/Brotli روی فایل های استاتیک بصورت اتوماتیک ایجاد یا آپدیت شود یا خیر؟ اگر این پارامتر به Yes تنظیم شود، زمانی که یک فایل با MIME type موجود در Compressible Types ها درخواست داده می شود، سرور الگوریتم فشرده سازی متناسب با آن فایل را براساس نوع فایل ایجاد یا آپدیت می کند. فشرده سازی فایل در Static Cache Directory یا همان دایرکتوری کش ثابت انجام می شود نام فایل هم براساس MD5 hash از مسیر فایل اصلی ایجاد می شود.
GZIP Compression Level (Static File): این پارامتر از نوع عددی بین ۱ تا ۹ است و سطح فشردهسازی الگوریتم GZIP روی محتوای استاتیک را مشخص میکند. این پارامتر از رنج 1 (کمترین فشردهسازی) تا 9 (بیشترین فشردهسازی) تغییر میکند. برای اعمال این تنظیمات باید پارامترهای Enable Compression و Auto Update Static File فعال باشند. مقدار پیشفرض این پارامتر 6 است.
Brotli Compression Level (Static File): پارامتر مورد نظر در تیونینگ لایت اسپید از نوع عددی بین ۱ تا ۱۱ است و سطح فشردهسازی الگوریتم Brotliی که روی فایلهای استاتیک اعمال میشود را مشخص میکند. رنج این پارامتر از 1 (کمترین فشردهسازی ) تا 11 ( بیشترین فشردهسازی) است. این تنظیمات زمانی اعمال میشود که Enable Compression فعال باشد. مقدار پیش فرض این پارامتر 5 است. برای اعمال این پارامتر باید Enable Compression و Auto Update Static File فعال باشند.
نکته: این پارامتر میزان پهنای باند شبکه کمتری مصرف می کند. پاسخ های مبتنی بر متن مثل فایلهای html, css و javascript بیشترین میزان بهره وری از این قابلیت را دارند و می توانند تا 50 درصد نسبت به فایل اصلی فشرده شوند.
Static Cache Directory: این پارامتر تیونینگ لایت اسپید از نوع مسیر دایرکتوری است و مشخص کننده مسیر دایرکتوری ای است که برای ذخیره ی فایل های استاتیک فشرده شده استفاده می شود. این دایرکتور بصورت پیش فرض SWAP است.
Max Static File Size (bytes): در تیونینگ لایت اسپید این مورد از نوع عددی و در واحد بایت می باشد. ماکسیمم سایز یک فایل استاتیک است برای فشرده سازی اتوماتیک را مشخص می کند. مقدار پیش فرض آن 10M است و این پارامتر مقادیر نباید کمتر از 1K (در مقیاس بایت) باشد.
نکته: پبشنهاد میشود که فشردهسازی فایل برای فایلهای بزرگ ایجاد یا آپدیت نشود.
Min Static File Size (bytes): مینیمم سایز یک فایل استاتیک برای اجرای الگوریتم فشرده سازی مرتبط را در تیونینگ لایت اسپید مشخص می کند. مقدار پیش فرض 200 بایت است و بهتر است از این مقدار کمتر نباشد.
نکته فشرده سازی فایل ها با سایز خیلی کوچک ضروری نیست زیرا پهنای باند زیادی مصرف نمی کنند.
تنظیمات کلی SSL تیونینگ لایت اسپید
بخش SSL Global Setting از تیونینگ لایت اسپید مربوط به تنظیمات گواهینامههای SSL است که روی وب سایت ها نصب می شوند.
Default Cipher Suite: این پارامتر الگوریتم Cipher Suite پیشفرض مورد استفاده برای گواهینامههای ssl را مشخص میکند و ورودی آن بصورت Cipher مدنظر است و Cipher ها با ; جدا میشوند.
Cipher Suite ها مجموعه ای از الگوریتم ها و دستورالعملهایی هستند که برای استفاده از TLS و SSL به جهت امن کردن اتصالات شبکه استفاده میشوند.
SSL Strong DH Key: این پارامتر مشخص میکند که از DH keys با 2048 بیت برای پروسه دست دهی SSL (SSL Handshake) استفاده شود یا از 4096بیتی. این پارامتر ازنوع انتخابی از دکمه رادیویی است.
DH Key کلیدی است که مبتنی برا الگوریم Diffie-Hellman ایجاد میشود و در SSL/TLS استفاده میشود.
Enable Certificate Compression: قابلیت فشرده سازی SSL را فعال میکند. این پارامتر ازنوع انتخابی از دکمه رادیویی است.
Enable Handshake Offload: در تیونینگ لایت اسپید این پارامتر از نوع انتخابی از دکمههای رادیویی است. با فعالی سازی این پارامتر پروسه Handshake SSL در یک thread جداگانه بارگیری میشود. بصورت پیش فرض نیز فعال است.
Enable Session Cache: این پارامتر تیونینگ لایت اسپید ازنوع انتخابی از دکمههای رادیویی است، قابلیت کَش کردن شناسه جلسه یا همان session id را با استفاده از تنظیمات پیشفرض OpenSSL مجاز میکند و بصورت پیشفرض غیرفعال است.
Session Cache Size (bytes): این پارامتر از نوع عددی است و ماکسیمم تعداد شناسه جلسههای SSL ( SSL session IDs) که میتوان در کَش ذخیره کرد را مشخص میکند. مقدار پیش فرض 1.000.000 است.
Session Cache Timeout (secs): این پارامتر از نوع عددی است و مشخص کننده مدت زمانی که یک شناسهی جلسه (session ID) داخل cache معتبر است و بعد از آن برای ادمهی session نیاز به مذاکره مجدد هست. مقدار پیشفرض این پارامتر 3600 است.
Enable Session Tickets: این پارامتر بلیط جلسه یا همان session ticket را با استفاده از تنظیمات session ticket پیش فرض OpenSSL فعال میکند. برای اینکه این پارامتر روی هاستهای مجازی یک سرور ( Server-level) موثر باشد باید تنظیمات مربوط به Server-level فعال باشد. بصورت پیش فرض Server-level و VH-Level فعال هستند.
session ticket قابلیتی که در آخرین تغییرات پروتکل SSL برای پروسه دستدهی یا همان handshake اضافه شده است که در یک session ticket اطلاعات کامل مربوط به session ارسال میشود مانند Cipher Suiteی که استفاده میشود.
SSL Session Ticket Key File: این پارامتر اجازه میدهد که SSL Ticket Key توسط administrator ایجاد یا نگهداری شود. فایل باید 48 بایت باشد و اگر این پارامتر خالی بماند، متعادل کننده بار ( load balancer) مجموعه کلیدهای خود را تولید و نگهداری میکند. فرمت این پارامتر نیز بصورت مسیر یک دایرکتوری است.
نکته: برای حفاظت از امنیت پیش رو (Forward secrecy)، اکیداً توصیه میشود که Key بعد از اتمام ثانیه های مدت عمر SSL Session Ticket تغییر داده شود. اگر نمیتوانید این مورد را کنترل نمائید بهتر است این پارامتر خالی گذاشته شود.
Forward secrecy یک policy جدید از پروتکل HTTPS است که مطابق با این سیاست در صورتی که کلیدهای یک Session یا همان نشست SSL دزدیده شود امکان هک یا دزدیده شدن کلیدهای نشستهای قبلی و بعدی نخواهد شد. بهمین خاطر برای پارامتر اکیداً توصیه میشود که بعد از اتمام Lifetime یک SSL session ticket فایل key تغییر داده شود.
QUIC در تیونینگ لایت اسپید
بخش QUIC از تیونینگ لایت اسپید، مربوط به تنظیمات پروتکل QUIC هستند.
QUIC مخفف Quick UDP Internet Connections است که یک روش جدید انتقال است که تاخیر را در مقایسه با TCP کاهش میدهد. این پروتکل توسط گوگل طراحی شده و بسیار شبیه TCP+TLS+HTTP/2 است که روی UDP اجرا شوند. که این پارامتر پههی پروتکل های شبکهای سرور را روی QUIC فعال میکند و بصورت پیش فرض نیز فعال است.
Enable QUIC: در تیونینگ لایت اسپید این پارامتر پروتکل شبکهای سرور QUIC فعال میکند و بصورت پیش فرض نیز فعال است.
نکته اگر QUIC فعال شود همچنان در listener level از طریق Allow QUIC یا virtual host level از طریق Enable QUIC میتوان آن را غیرفعال کرد.
QUIC SHM Directory: دایرکتوری ذخیرهی دادههای QUIC در حافظهی اشتراکی را مشخص میکند. SHM در اینجا مخفف save to shared memory است. دایرکتوری پیشفرض /dev/shm است.
نکته: برای این پارامتر یک پارتیشن مبتنی بر رَم مانند /dev/shm استفاده میشود.
QUIC Versions: این پارامتر یک لیستی از ورژنهای QUIC است. این تنظیمات فقط برای محدود کردن پشتیبانی از ورژنهای QUIC موجود استفاده میشود و بهتر است این فیلد خالی بماند. این پارامتر بصورت ورژنهایی از QUIC است که با کاما مجزا میشوند. بعنوان مثال: Q035, Q039
نکته: اکیداً توصیه میشود این پارامتر خالی گذاشته شود تا بهترین تنظیمات بصورت اتوماتیک اعمال شود.
Congestion Control: این پارامتر مشخص کننده الگوریتم کنترل ازدحام (congestion control) مورد استفاده است. congestion control مبحثی مربوط به پروتکلهای شبکه مانند TCP است که از ازدحام بیش از حد دادههای انتقالی در صف انتظار که موجب از بین رفتن بستهها میشود، جلوگیری میکند. این پارامتر را میتوان بصورت دستی تنظیم کرد یا اینکه با انتخاب حالت Default روی مقادیر موجود در کتابخانههای QUIC تنظیم شود.
Connection Flow Control Window: سایز ابتدایی بافر تخصیص داده شده برای یک اتصال QUIC است. مقدار پیشفرش این پارامتر 1.5M است. این پارامتر می تواند بین 64K و 512M تنظیم شود.
نکته: مقدار بیشتر از محدودهی اعلام شده از مموری بیشتری استفاده میکند.
Max Connection Flow Control Window: مشخص کننده ماکسیم سایزی است که به window buffer یک اتصال کنترل ازدحام برای تنظیم سایز windows داده میشود. در واقع windows مفهومی است که در الگوریتمهای کنترل ازدحام استفاده میشود.
مقدار پیشفرض این پارامتر صفر است و به این معنا است که مقدار Connection Flow Control Window (پارامتر قبلی) استفاده میشود و auto-tuning یا همان تنظیم خودکار انجام نخواهد شد. این پارامتر میتواند صفر باشد یا به عددی بین 64K و 512M تنظیم شود.
نکته: تنظیم مقدار بیشتر از محدودهی اعلام شده از مموری بیشتری استفاده میکند.
Stream Flow Control Window: این مورد در تیونینگ لایت اسپید مقدار اولیهای از دادهها است که برای یک ارتباط QUIC در هر استریم دریافت خواهد کرد. مقدار پیش فرض این پارامتر 1M است. این پارامتر میتواند عددی بین 64K و 128M بگیرد.
نکته: تنظیم به مقدار بیشتر از محدودهی اعلام شده از مموری بیشتری استفاده میکند.
Max Stream Flow Control Window: مشخص کنندهی ماکسیمم سایز window از یک استریمِ کنترل جریان (stream flow control window) است که برای تنظیم خودکار window مجاز است.
مقدار پیش فرض صفر است و به این معنا است که مقدار Stream Flow Control Window استفاده میشود و auto-tuning یا همان تنظیم خودکار انجام نخواهد شد. این پارامتر میتواند عددی بین
۶۴K و 128M بگیرد.
نکته: تنظیم به مقدار بیشتر از محدودهی اعلام شده از مموری بیشتری استفاده میکند.
Max Concurrent Streams Per Connection: ماکسیمم تعداد مجاز استریم در هر ارتباطِ QUIC است. مقدار پیشفرض این پارامتر نیز 100 است و بصورت کلی یک عدد Integer در بازه 10 تا 100 میگیرد.
Handshake Timeout: مدت زمانی به ثانیه که به یک اتصال جدید QUIC داده میشود تا پروسه handshake را کامل کند و بعد از آن اتصال قطع میشود. (aborted ) مقدار پیش فرض نیز 10 است. بصورت کلی یک عدد Integer در بازه 1 تا 15 میگیرد.
Idle Timeout: این پارامتر از نوع Integer است و عددی بین 10 تا 30 به ثانیه میگیرد و مشخص کننده مدت زمانی است که اگر در طول این بازه یک اتصال QUIC بیکار باشد، بسته می شود. مقدار پیش فرض این پارامتر 30 است.
نتیجه گیری
به طور کلی می توان تیونینگ لایت اسپید یکی از اقداماتی انجام داد که میتواند در سرعت سایت شما و همینطور میزان هزینه ای که قرار است برای پهنای باند و خرید منابع بیشتر بپردازید بسیار موثر باشد. شما با استفاده از امکاناتی که این وب سرور در اختیار شما قرار می دهد این امکان را دارید تا یک کارکرد ایده آل از آن را بدست آورید و به طور حرفه ای یک وب سرور را برای سایت خود شخصی سازی کنید. البته باید توجه داشته باشید که نکات و موارد گفته شده در این مقاله را حتما رعایت کنید.