وضعیت سرورها

وبــلاگ

وضعیت سرورها
  • بهینه سازی وب سرور Nginx – بخش دوم

    شریفی پویا جمعه ۱ بهمن ۱۳۹۵ امنیت , لینوکس , مقالات

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

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

    وقفه ها

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

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

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

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

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

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

    Gzip کردن محتوا

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

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

    این دستورات فایل سیستم، مدیریت حافظه سیستم را  بهبود می دهند و می توانید آنها را در فایل /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 نوشته می شود.

    0

    برچسب ها :

با عضویت در خبرنامه شما را از آخرین تجربیات مان و مطالب تخصصی آگاه خواهیم کرد.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *