بهینه سازی وب سرور Nginx – بخش دوم

بهینه سازی وب سرور Nginx – بخش دوم

[ad_1]

بهینه سازی وب سرور Nginx – بخش اول

بهینه سازی وب سرور Nginx – بخش سوم

وقفه ها

خوب است بدانید که وقفه ها هم شدیدا در افزایش کارایی وب سرور  موثر هستند.

client_body_timeout

زمانی که یک سرور منتظر است تا یک بدنه ارسال شود، دستورات را می فرستد.

client_header_timeout

زمانی که یک سرور منتظر است تا هدر یک بدنه ارسال شود، دستورات را می فرستد. این دستورات مسئول کنترل زمان هستند، شاید این سوال برای شما هم پیش آمده است که این دستورات دقیقا چه زمانی را کنترل می کنند؟ زمانی که که یک سرور بعد از دریافت یک درخواست باید برای یک بدنه کلاینت یا هدر کلاینت منتظر بماند تا ارسال شوند.  اگر نه بدنه و نه هدر هیچیک ارسال نشوند ، سرور به خطای ۴۰۸ یا “Request time out” بر می خورد.

send_timeout

وقفه پاسخ را به کلاینت اختصاص می دهد. این وقفه روی تمامی انتقالات اعمال نمی شود، اما ترجیحا، تنها بین عمل خواندن  دو -کلاینت بعدی اعمال می شود. بنابراین، اگر کلاینت در این بازه زمانی، هیچ داده ای را نخواند، وب سرور Nginx اتصال را قطع می کند.

client_header_timeout  3m;
client_body_timeout    3m;
send_timeout           3m;

نگهداری محتوای ثابت وب سایت

اگر وب سایت شما دارای محتوای ثابت مثل کد های CSS، جاوا اسکریپت یا تصاویر است، وب سرور Nginx می تواند این فایل ها را برای بازه زمانی کوتاهی در حافظه کش نگهداری کند. اگر قطعه کدی که در زیر مشاهده می کنید را به تنظیمات Nginx اضافه کنید به وب سرور خود دستور می دهید که برای مدت  ۳۰ ثانیه ۱۰۰۰ فایل را در حافظه کش نگهداری کند، فایل هایی را که در مدت ۲۰ ثانیه پیاپی هیچ دسترسی به آنها انجام نشود را از حافظه کش خود بیرون بگزارد و تنها فایل هایی را نگهداری کند که حداقل ۵  بار در این ۳۰ ثانیه مورد درخواست قرار بگیرند.  اگر محتوای سایت خود را مرتبا تغییر نمی دهید می توانید این اعداد را بالاتر انتخاب کنید. البته باید در انتخاب این اعداد دقت لازم را داشته باشید.

open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 5;
open_file_cache_errors off;

همچنین شما می توانید  توسط یک موقعیت خاص اطلاعات را کش کنید. نگهداری اطلاعات در حافظه کش برای مدت طولانی سودمند است. به خصوص اگر فایل ها جزئی از یک سیستم مدیریت محتوا  یا CMS باشند.

location ~* .(woff|eot|ttf|svg|mp4|webm|jpg|jpeg|png|gif|ico|css|js)$
    expires 365d;

Gzip کردن محتوا

در مورد محتواهای ساده ی یک وب سایت، وب سرور Nginx می تواند از فشرده سازی Gzip  استفاده کند، تا این محتوای فشرده شده را به کلاینت برساند. مرورگرهای وب امروزی، فشرده سازی Gzip را می پذیرند و این کار باعث می شود حجم محتوایی که به صورت متن ساده ارسال شده است به مقدار بسیار زیادی کاهش پیدا کند. لیستی که در زیر برای شما تهیه شده است، فهرست “امنی” از انواع محتوای قابل فشرده سازی است، حتما دقت داشته باشید فقط فشرده سازی  آن دسته از انواعی را که در وب سایت شما استفاده شده است فعال کنید.

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].";

بهینه سازی های فایل سیستم

این دستورات فایل سیستم، مدیریت حافظه سیستم را  بهبود می دهند و می توانید آنها را در فایل

/etc/sysctl.conf

 اضافه نمایید.

پورت های موقت

هنگامی که شما از وب سرور Nginx به عنوان یک پراکسی استفاده می کنید، هر اتصالی که به سرور ارسال می گردد از یک پورت بی دوام یا موقت استفاده می کند.

رنج پورت  IPورژن ۴ محلی،  محدوده رنج پورت را مشخص می کند. یک مثال از تنظیمات رایج پورت های موقت را در زیر می بینید:

net.ipv4.ip_local_port_range 1024 65000

وقفه پروتکل TCP FIN ، مقدار زمانی را که یک پورت باید قبل از اینکه بتواند برای اتصال دیگر دوباره مورد استفاده قرار بگیرد غیرفعال باشد را مشخص می کند. زمان پیشفرض برای این موضوع ۶۰ ثانیه است. اما معمولا برای امن تر بودن آن را به ۳۰ یا حتی ۱۵ ثانیه کاهش می دهند.

net.ipv4.tcp_fin_timeout 15

اندازه پنجره پروتکل کنترل انتقال یا TCP

گزینه اندازه پنجره TCP،  گزینه ای است که می تواند اندازه پنجره را نسبت به آنچه در پروتکل کنترل انتقال مجاز شمرده شده است افزایش دهد و آن را از مقدار پیشین آن که ۶۵۵۳۵ بایت است بالاتر ببرد. این امکان در TCP به همراه چند گزینه دیگر در  IETF RFCبا مقدار ۱۳۲۳  تعیین شده اند که برای کار در شبکه های بزرگ مناسب است. این گزینه می تواند در تگ  

net.ipv4.tcp_window_scaling = 1

مقدار دهی شود.

جمع کردن بسته ها قبل از رها کردن آنها

دستور

net.ipv4.tcp_max_syn_backlog

 تعداد بسته هایی را که باید قبل از اینکه هسته شروع به رها سازی آنها کند جمع آوری شود را مشخص می کند. یک مثال برای مقداردهی به  این متغیر چنین است: 

net.ipv4.tcp_max_syn_backlog = 3240000

بستن اتصالات در پاسخ به کلاینت از دست رفته

دستور  

reset_timedout_connection on;

به سرور اجازه می دهد که بعد از اینکه پاسخگویی از سمت کلاینت متوقف شد اتصال را قطع کند.  این کار باعث می شود حافظه اختصاص داده شده به سوکت آزاد شود.

توصیف گر های فایل

شاید برای شما جالب باشد که بدانید توصیف گر فایل چیست و چه کاری انجام می دهد؟ توصیف گرهای فایل منابعی از سیستم عامل هستند که کارشان مدیریت کردن اموری مثل اتصالات و فایل های باز است.  وب سرور Nginx می تواند تا دو توصیف گر فایل را برای هر اتصال استفاده کند. به عنوان مثال، اگر از یک سرور به عنوان پراکسی استفاده می کنید، معمولا یک توصیف گر فایل برای اتصال کلاینت و دیگری برای اتصال به سرور پراکسی استفاده می گردد. هرچند اگر از Keep Alive استفاده کنید این مقدار بسیار پایین تر می آید. برای سیستمی که به تعداد بالایی از اتصالات پاسخگویی می کند این تنظیمات حتما باید انجام شود.

sys.fs.file_max

 حد گستردگی سیستم را برای توصیف گر های فایل مشخص می کند.

nofile

 حد توصیف گر فایل کاربر را تعیین می کند، که در فایل

/etc/security/limits.conf

نوشته می شود.

soft nofile 4096
hard nofile 4096
}

[ad_2]

لینک منبع

بازگشت به صفحه قبل
×