در این بخش از سری مطالب آموزش Nginx در وبلاگ آذرآنلاین به درخواست کاربران گرامی با آموزش بهینه سازی Nginx (بخش دوم) خدمت شما خواهیم بود تا بتوانید با رعایت و تنظیم چندین بخش ، بهترین کارایی را از Nginx داشته باشید.
در مطلب آموزش بهینه سازی Nginx (بخش اول) با مواردی همچون تغییرات در Worker و اتصالات آن ، بهینه سازی Keep Alive و تنظیمات بافر در Nginx پرداخته شد و حال در این مطلب با ادامه آموزشهای بهینه سازی Nginx در خدمت شما کاربران گرامی خواهیم بود.
با ادامه مبحث آموزش بهینه سازی Nginx (بخش دوم) همراه ما باشید.
آموزش بهینه سازی Nginx (بخش دوم)
-
صف اتصال در Nginx
یکی دیگر از مواردی که در بهینه سازی Nginx اهمیت دارد ، صف اتصال اتصالات Worker ها و بستهها میباشند که از طریق دو متغیر در فایل کانفیگ Nginx قابل تغییر هستند.
در صف اتصال ، نمیتوان به طور حتم عددی را مشخص کرد و شما تنها نیاز است با خواندن لاگهای Nginx و در صورت وجود خطا سیستمی ، عدد را افزایش داده تا از رخ دادن خطا جلوگیری کنید.
بنابراین در صورتی که در لاگهای Nginx با خطاهای سیستمی برخورد داشتید ، دو متغیر عددی عباراتی در زیر نوشته شده است را در فایل کانفیگ یافته و آنها را افزایش دهید.
net.core.somaxconn = 65536
net.ipv4.tcp_max_tw_buckets = 1440000
همچنین شایان ذکر است که شما به عنوان یک مدیر سرور میتوانید با تنظیم متغیر max backlog ، بستهها را قبل از پردازش توسط CPU و با استفاده از تگ net.core.netdev_max_backlog ، در کارت شبکه سرور بافر نمایید.
نکته : توجه داشته باشید با مطالعه مشخصات کارت شبکه خود میتوانید میزان بافر را یافته و عدد آن را در متغیر ذکر شده جایگزین نمایید.
-
نحوه نگهداری محتوای استاتیک سایت
یکی از امکاناتی که Nginx به شما میدهد ، قابلیت کش کردن محتوای ثابت یا استاتیک سایت شما را نسبت به تنظیماتتان دارد.
در سایتها عموماً دادههایی مانند کدهای جاوا اسکریپت ، CSS و تصاویری وجود دارد که به صورت استاتیک و یا نیمه استاتیک قرار دارند و کاربران با ورود به هر صفحهای از سایت شما این دادهها را استفاده مینمایند.
Nginx این قابلیت را به شما میدهد که با اضافه کردن تکه کد زیر ، دادههای استاتیک و پر استفاده را برای 60 ثانیه به تعداد 500 فایل در حافظه کش خود نگهداری کند و اگر در مدت 30 ثانیه بیش از 4 بار از این دادهها استفاده شد ، آن را در کش نگه دارد و در غیر این صورت از کش خود حذف نماید.
open_file_cache max=500 inactive=30s;
open_file_cache_valid 60s;
open_file_cache_min_uses 4;
open_file_cache_errors off;
البته به جز روش ذکر شده که به صورت خودکار توسط Nginx انتخاب و کش میشوند ، روش دیگری برای کش استاتیک یک دایرکتوری خاص به همراه پسوند فایلها وجود دارد که به شکل زیر میباشد.
location ~* .(woff|eot|ttf|svg|mp4|webm|jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}
تکه کد بالا ، به Nginx دستور میدهد که در تمامی دایرکتوریها ، تمامی فایلهای که با پسوند ذکر شده قرار دارند را به مدت 365 روز کش نماید.
-
استفاده از Gzip در Nginx
مطمئناً قابلیت Gzip یکی از موارد مورد استفاده همه وب سرورها امروزی است که میتوان گفت یکی از بهترین راهکارها برای افزایش سرعت لود سایت نیز میباشد.
Gzip تمامی محتوای قابل فشرده سازی را فشرده کرده و با حالتی ساده به مرورگر کاربر ارسال مینماید و به همین ترتیب باعث میگردد تعداد فایلهای دانلود شده کاربر از روی سایت شما کمتر و با سرعت بیشتری انجام شود که در نتیجه باعث افزایش سرعت لود سایت شما در سمت کاربر میباشد.
بنابراین در صورت نیاز به تنظیم و اجرای Gzip بر روی Nginx تنها نیاز است تکه کدهای زیر را در فایل کانفیگ Nginx افزوده و از آن بهره ببرید.
gzip on;
gzip_min_length 1000;
gzip_types: text/html application/x-javascript text/css application/javascript text/javascript text/plain text/xml application/json application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/xml font/eot font/opentype font/otf image/svg+xml image/vnd.microsoft.icon;
gzip_disable "MSIE [1-6]\.";
-
تنظیم وقفهها در Nginx
وقفهها و یا همان میزان Timeout بسیار در سرعت عملکرد وب سرور و همچنین لود سایت تأثیر گذار میباشد.
متغیر Client_body_timeout و Client_header_timeout مسئول کنترل زمان هستند. این به این معناست که سرور در هنگام ارسال و دریافت اطلاعات به سمت کاربر زمانی را مشخص خواهد کرد و اگر کاربر در این بازه زمانی ، کار خود را مانند پر کردن یک فرم و ارسال آن به پایان نرساند ، سرور خطای Request time out را باز میگرداند.
در کنار این دو متغیر ، متغیری با نام Send_timeout وجود دارد که مقدار زمانی است که سرور منتظر یک درخواست دیگر از سمت کاربر است و اگر در این بازه زمانی درخواستی صورت نپذیرد ، سرور ارتباط را با کلاینت قطع مینماید.
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
پایان بخش دوم
امیدواریم از مطلب آموزش بهینه سازی Nginx (بخش دوم) استفاده لازم را برده باشید.
برای مطالعه سایر بخشهای بهینهسازی Nginx به لینکهای زیر مراجعه نمایید.
آموزش بهینه سازی Nginx (بخش اول)
آموزش بهینه سازی Nginx (بخش سوم)
آموزش بهینه سازی Nginx (بخش چهارم)
کاربر گرامی شما میتوانید سؤالات مربوط به این آموزش را در بخش کامنتها عنوان کرده و در همین قسمت پاسخ خود را دریافت کنید و یا برای رفع مشکلات دیگر در زمینه آموزشهای آذرآنلاین به بخش Community مراجعه کرده و مشکل خود را در آن مطرح نمایید تا در اسرع وقت کاربران دیگر و کارشناسان به سؤالات شما پاسخ دهند.