تحسين خادم الويب اباتشي للأجهزة المحمولة. لا تستسلم قبل الانهيار الجليدي: إعداد خادم ويب لأحمال عالية. تكوين وحدات المعالجات المتعددة

Apache هو خادم الويب الأكثر شيوعًا. يمكن أن يؤدي تعيين بعض المعلمات (الضبط) إلى زيادة سرعة تشغيله بشكل كبير.

ترتيب

تم تكوين Apache في ملف التكوين. يمكن إيجادها:

ديبيان
/etc/apache2/apache2.conf
فري
/usr/local/etc/apache22/httpd.conf

الوحدات

تعطيل الوحدات التي لا تحتاجها. سيوفر هذا الكثير من الموارد في معالجة الطلبات. وحدات اباتشييتم توفيرها عادةً كمكونات إضافية (DSOs) ، لذلك يتم تمكينها وتعطيلها ببساطة عبر ملف الضبط.

عادة لا تحتاج إلى أي شيء آخر غير هذه الوحدات:

mod_alias mod_authz_host mod_deflate mod_dir mod_expires mod_headers mod_mime mod_rewrite mod_log_config mod_autoindex mod_negotiation mod_setenvif

MPM

يتيح لك MPM اختيار كيفية معالجة الطلبات المتوازية. الخيار الأفضلعامل- في خط MPM. في ذلك ، يتم تقديم كل طلب في سلسلة منفصلة لإحدى العمليات التابعة. الخيوط هي كائنات أسهل لنظام التشغيل من العمليات. لذلك ، في هذه الحالة ، يتم تحسين الأداء.

لتمكين Worker MPM ، تحتاج إلى فتح الملف nano / etc / sysconfig / httpd

وأزل التعليق من السطر HTTPD = / usr / sbin / httpd.worker

أعد تشغيل Apache /etc/init.d/apache2

AllowOverride و. htaccess

يتيح التوجيه AllowOverride استخدام ملف htaccess. في هذه الحالة ، لكل منها طلب اباتشيسيبحث عن هذا الملف في الدلائل المطلوبة. انقل كل التكوين إلى الملفات مضيفات افتراضية(folder / etc / apache2 / sites-enabled / for Debian) وقم بتعطيل استخدام htaccess: AllowOverride None

ماكسكلينتس


مجموعات التوجيه MaxClients الحد الأقصى للمبلغالطلبات المتوازية التي سيعالجها الخادم. يجب تعديل هذا الإعداد بمرور الوقت ، والعمل في نطاق 128 ... 4096: MaxClients 256

إذا كان الخادم يخدم بالفعل طلبات MaxClients ، فسيتم وضع الطلبات الجديدة في قائمة الانتظار ، ويتم تعيين حجمها باستخدام توجيه ListenBacklog.

MinSpareServers و MaxSpareServers و StartServers

تسمح لك هذه التوجيهات بإنشاء عمليات في الذاكرة مسبقًا ، حتى لا تضطر إلى القيام بذلك عند تلقي طلب. تم تثبيتها فقط ل Prefork MPM.

بدء الخوادم 3

# عند بدء تشغيل Apache ، سيتم إنشاء 3 عمليات

MinSpareServers 3

# لن يقتل Apache العمليات المجانية إذا كان هناك أقل من ثلاثة

MaxSpareServers 5

# 5 عمليات مجانية كحد أقصى ، سيتم قتل الباقي

MaxRequestsPerChild

يعيّن التوجيه MaxRequestsPerChild عدد الطلبات التي يمكن معالجة / مؤشر ترابط واحد تابع لها قبل إنهائه. بشكل افتراضي ، يتم تعيين قيمة هذا التوجيه على 0 ، مما يعني أنه بمجرد إنشاء عملية / مؤشر ترابط ، فلن تنتهي أبدًا. يساعد هذا الخيار في التخلص من مشكلات تسرب الذاكرة ، لذا من الأفضل ضبطه:

الحد الأقصى للطلبات 4096

# بعد معالجة 4096 طلبًا ، ستتم إعادة العملية

حافظ على حياتك

تسمح لك طلبات KeepAlive بضبط ملفات اتصالات مستمرةبين العميل والخادم. هذا يوفر الموارد على الغياب إعادة التثبيتروابط. تأكد من تمكين هذا الخيار.

KeepAlive على KeepAliveTimeout 30

# قم بتشغيل KeepAlive واضبط المهلة قبل إغلاق الاتصال على 30 ثانية

هناك أوقات يرسل فيها المستخدم طلبًا واحدًا فقط. على سبيل المثال ، قم بتنزيل الخادم. ثم يمكن أن يكون KeepAlive عديم الفائدة وحتى ضارًا. عند تمكين KeepAlive ، لا يغلق الخادم الاتصال على الفور ، ولكنه ينتظر لبعض الوقت (KeepAliveTimeout).

ضغط


الجميع المتصفحات الحديثةدعم الضغط. سيؤدي تمكين gzip إلى تقليل حجم حركة المرور بشكل كبير. يجب أن يتم ذلك دائمًا.

AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x- جافا سكريبت

تأكد من أن الضغط يعمل مع مدقق Gzip على الإنترنت.

DNS


قم بإيقاف تشغيل عمليات بحث DNS غير الضرورية في Apache: HostnameLookups Off

# سيؤدي ذلك إلى قيام Apache بتسجيل عنوان IP الخاص بالعميل بدلاً من مضيفه.

استخدم دائمًا عنوان IP بتنسيق توجيهات السماحمن وإنكار ، لا أسماء المجال. السماح من 1.1.1.1 الرفض من 2.2.2.2

الأكثر أهمية

سيكون التأثير الأكبر على الزوار هو التضمين ضغط gzip . غالبًا ما يوفر هذا حوالي 70٪ من حركة المرور.

كيفية زيادة أداء الخادم على CentOS. الجزء الثالث: التحسين السريع لإعدادات خادم الويب.

في هذه المقالة ، سنخبرك بكيفية زيادة أداء الخادم (المخصص أو الافتراضي) باستخدام CentOS كمثال باستخدام التحسين السريعإعدادات الويب خوادم nginxو Apache (httpd).

تستهدف المادة المستخدمين الذين لديهم قدر ضئيل من المعرفة في مجال الإدارة ، وسننظر في أبسط الطرق ، وفي نفس الوقت فعالة ، لتحسين أداء الخادم. في هذه المقالة ، لن نتحدث عن الغرض ونصف جميع إعداداته ، بل سنتطرق فقط إلى أكثر النقاط الضرورية. المقالة مناسبة لأي لوحة تحكم ، لذلك لن نقوم بتقسيم الأقسام إلى لوحات.

من الأفضل العمل مع الخادم عبر SSH ، ولكن إذا واجهت صعوبات في العمل مع SSH ، فيمكنك فتح الملفات من خلال مدير الملفات بلوحة التحكم. (تعليمات للعمل مع SSH في الجزء الأول من هذه المقالة)

تحسين إعدادات خادم الويب Apache (httpd).

يوجد ملف تكوين خادم الويب Apache في المسار التالي:

/etc/httpd/conf/httpd.conf

في هذا الملف ، من الضروري وضع قيود على الرقم في نفس الوقت ادارة العملياتقاعدة بيانات للانترنت. للقيام بذلك ، ابحث عن السطر MaxClients فيه ، يجب أن تبدو الكتلة كما يلي:

بدء الخوادم 5
MinSpareServers 5
خوادم ماكس الاحتياطية 20
ماكسكلينتس 256
MaxRequestsPerChild 0

يجب حساب Maxclients بناءً على عدد ذاكرة الوصول العشوائيمثبت على الخادم الخاص بك. يجب عليك أيضًا مراعاة حجم الذاكرة المستخدمة بواسطة عملية خادم ويب واحدة. يمكنك معرفة مقدار الذاكرة المستهلكة من خلال عملية خادم ويب واحدة باستخدام أفضل أداة مساعدة ، تعليمات للاستخدام في قاعدة المعرفة الخاصة بنا.

بعد ذلك ، اطرح 2/3 من إجمالي ذاكرة الوصول العشوائي لخادمك واقسمها على مقدار الذاكرة المستهلكة بواسطة عملية خادم ويب واحدة. سيكون الرقم الناتج القيمة المثلىماكسكلينتس.

على سبيل المثال ، لدينا خادم بسعة 8 جيجابايت من ذاكرة الوصول العشوائي. 2 \ 3 من 8 ستكون 5.3 جيجا بايت. عادةً ما تستهلك عملية خادم ويب واحدة حوالي 40 ميغابايت من الذاكرة. نحن نعتبر 5300mb \ 40mb ، نحصل على 132. الأفضل التقريب. نترك القيمة 130 ، ونتيجة لذلك ، يجب أن تبدو كتلة ملف التكوين كما يلي:

بدء الخوادم 5
MinSpareServers 5
خوادم ماكس الاحتياطية 20
ماكسلينتس 130
MaxRequestsPerChild 0

قم أيضًا بتمكين KeepAlive ، للقيام بذلك ، ابحث عن السطر في ملف التكوين:

ابق على قيد الحياة

تغيير قبالة إلى تشغيل:

ابق على قيد الحياة

بعد إجراء التغييرات ، أعد تشغيل خادم الويب بالأمر:

/etc/init.d/httpd إعادة التشغيل

إعادة تشغيل خدمة httpd

تحسين إعدادات خادم الويب Nginx.

يوجد ملف تكوين خادم الويب Nginx في المسار التالي:

/etc/nginx/nginx.conf

في ذلك ، تحتاج إلى تكوين عدد عمليات Nginx. عادة هذا الإعداديعتمد على عدد نوى المعالج المتوفرة لخادمك. يعتبر التوجيه worker_processes مسؤولاً عن ذلك ، في ملف التكوين يبدو كالتالي:

مستخدم اباتشي

pid /var/run/nginx.pid ؛
عمليات العمال 4 ؛

كما ترى ، تم تكوين عدد عمليات Nginx لـ 4 نوى لوحدة المعالجة المركزية. إذا كان الخادم الخاص بك يتعامل مع الكثير من الاتصالات ، فيمكنك زيادة هذه القيمة بمقدار النصف ، وإذا قمت بتعيينها على قيمة أعلى ، فسيكون ذلك بتكلفة الأداء.

Worker_rlimit_nofile 65536 ؛
أحداث (
استخدام epoll
اتصالات العمال 65536 ؛
}

سيؤدي هذا إلى زيادة حدود Nginx على عدد الملفات المعالجة وتحسين أدائها. إذا كان ملف التكوين الخاص بك يحتوي بالفعل على worker_rlimit_nofile أو worker_connections - فاحذفهما ، واترك الكتلة فقط ، كما في النموذج.

نتيجة لذلك ، يجب أن تبدو بداية ملف التكوين كما يلي:

مستخدم اباتشي
error_log /var/log/nginx/error.log warn ؛
pid /var/run/nginx.pid ؛
عمليات العمال 4 ؛
worker_rlimit_nofile 80000 ؛
أحداث (
استخدام epoll
اتصالات العمال 65536 ؛
}
http (

تطبيق default_type / ثماني دفق ؛
log_format main "$ remote_addr - $ remote_user [$ time_local]" $ request ""
"$ status $ body_bytes_sent" $ http_referer ""
"" http_user_agent $ "" $ http_x_forwarded_for ""؛
access_log /var/log/nginx/access.log main ؛

access_log إيقاف ؛

(يمكنك عرض تحميل القرص باستخدام الأداة المساعدة العليا)

يمكنك أيضًا تمكين ضغط Nginx Gzip. يمكن أن يؤدي ذلك إلى تسريع تحميل موقعك ، وهو مفيد أيضًا في الترويج لكبار المسئولين الاقتصاديينومع ذلك ، نوصيك بالتحقق من سرعة التنزيل بعد تمكين Gzip ، لأن. المواقع التي تحتوي على عدد كبير من الطلبات يمكن أن تتأثر سلبًا. إلى تفعيل ضغط gzip في nginx، تحتاج إلى إضافته إلى قسم http (رمز مثل هذا:

على Gzip
gzip_comp_level 5 ؛
gzip_min_length 10240 ؛


gzip_disable "msie6" ؛

أضف هذا الرمز إلى السطر التاليبعد http (لجعله يبدو هكذا:

استخدام epoll ؛
اتصالات العمال 65536 ؛
}
http (
تشغيل gzip ؛
gzip_comp_level 5 ؛
gzip_min_length 10240 ؛
gzip_proxied مصادقة خاصة no-cache no-store منتهية الصلاحية ؛
نص gzip_types / نص عادي / css application / json application / x-javascript text / xml application / xml application / xml + rss text / javascript application / javascript ؛
gzip_disable "msie6" ؛
تشمل /etc/nginx/mime.types ؛
تطبيق default_type / ثماني دفق ؛

إذا كانت هناك إعدادات Gzip في الكود أدناه ، فقم بإزالتها.

بعد إكمال التكوين ، أعد تشغيل Nginx بالأمر:

/etc/init.d/nginx إعادة التشغيل

إعادة تشغيل خدمة nginx

يمكنك قراءة المواد السابقة حول تحسين إعدادات الخادم على الروابط:

إذا واجهت أي صعوبات في إعداد الخادم وإدارته ، فيمكنك دائمًا الاتصال بخدمة الدعم الفني لدينا.

Apache هو خادم الويب الأكثر شيوعًا. يمكن أن يؤدي تعيين بعض المعلمات (الضبط) إلى زيادة سرعة تشغيله بشكل كبير.

ترتيب

تم تكوين Apache في ملف التكوين. يمكن إيجادها:

ديبيان
/etc/apache2/apache2.conf
فري
/usr/local/etc/apache22/httpd.conf

الوحدات

تعطيل الوحدات التي لا تحتاجها. سيوفر هذا الكثير من الموارد في معالجة الطلبات. عادةً ما يتم شحن وحدات Apache كمكونات إضافية (DSOs) ، لذلك يتم تمكينها وتعطيلها ببساطة من خلال ملف التكوين.

عادة لا تحتاج إلى أي شيء آخر غير هذه الوحدات:

mod_alias mod_authz_host mod_deflate mod_dir mod_expires mod_headers mod_mime mod_rewrite mod_log_config mod_autoindex mod_negotiation mod_setenvif

MPM

يتيح لك MPM اختيار كيفية معالجة الطلبات المتوازية. الخيار الأفضل هو عامل- في خط MPM. في ذلك ، يتم تقديم كل طلب في سلسلة منفصلة لإحدى العمليات التابعة. الخيوط هي كائنات أسهل لنظام التشغيل من العمليات. لذلك ، في هذه الحالة ، يتم تحسين الأداء.

لتمكين Worker MPM ، تحتاج إلى فتح الملف nano / etc / sysconfig / httpd

وأزل التعليق من السطر HTTPD = / usr / sbin / httpd.worker

أعد تشغيل Apache /etc/init.d/apache2

AllowOverride و. htaccess

يتيح التوجيه AllowOverride استخدام ملف htaccess. في هذه الحالة ، عند كل طلب ، سيبحث Apache عن هذا الملف في الدلائل المطلوبة. انقل كل التهيئة إلى ملفات المضيف الظاهري (/ etc / apache2 / sites-enabled / folder for Debian) وقم بتعطيل استخدام htaccess: AllowOverride None

ماكسكلينتس


يعيّن التوجيه MaxClients الحد الأقصى لعدد الطلبات المتزامنة التي سيعالجها الخادم. يجب تعديل هذا الإعداد بمرور الوقت ، والعمل في نطاق 128 ... 4096: MaxClients 256

إذا كان الخادم يخدم بالفعل طلبات MaxClients ، فسيتم وضع الطلبات الجديدة في قائمة الانتظار ، ويتم تعيين حجمها باستخدام توجيه ListenBacklog.

MinSpareServers و MaxSpareServers و StartServers

تسمح لك هذه التوجيهات بإنشاء عمليات في الذاكرة مسبقًا ، حتى لا تضطر إلى القيام بذلك عند تلقي طلب. تم تثبيتها فقط ل Prefork MPM.

بدء الخوادم 3

# عند بدء تشغيل Apache ، سيتم إنشاء 3 عمليات

MinSpareServers 3

# لن يقتل Apache العمليات المجانية إذا كان هناك أقل من ثلاثة

MaxSpareServers 5

# 5 عمليات مجانية كحد أقصى ، سيتم قتل الباقي

MaxRequestsPerChild

يعيّن التوجيه MaxRequestsPerChild عدد الطلبات التي يمكن معالجة / مؤشر ترابط واحد تابع لها قبل إنهائه. بشكل افتراضي ، يتم تعيين قيمة هذا التوجيه على 0 ، مما يعني أنه بمجرد إنشاء عملية / مؤشر ترابط ، فلن تنتهي أبدًا. يساعد هذا الخيار في التخلص من مشكلات تسرب الذاكرة ، لذا من الأفضل ضبطه:

الحد الأقصى للطلبات 4096

# بعد معالجة 4096 طلبًا ، ستتم إعادة العملية

حافظ على حياتك

تسمح لك طلبات KeepAlive بإنشاء اتصالات مستمرة بين العميل والخادم. هذا يوفر الموارد من خلال عدم الاضطرار إلى إعادة إنشاء الاتصالات. تأكد من تمكين هذا الخيار.

KeepAlive على KeepAliveTimeout 30

# قم بتشغيل KeepAlive واضبط المهلة قبل إغلاق الاتصال على 30 ثانية

هناك أوقات يرسل فيها المستخدم طلبًا واحدًا فقط. على سبيل المثال ، قم بتنزيل الخادم. ثم يمكن أن يكون KeepAlive عديم الفائدة وحتى ضارًا. عند تمكين KeepAlive ، لا يغلق الخادم الاتصال على الفور ، ولكنه ينتظر لبعض الوقت (KeepAliveTimeout).

ضغط


تدعم جميع المتصفحات الحديثة الضغط. سيؤدي تمكين gzip إلى تقليل حجم حركة المرور بشكل كبير. يجب أن يتم ذلك دائمًا.

AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x- جافا سكريبت

تأكد من أن الضغط يعمل مع مدقق Gzip على الإنترنت.

DNS


قم بإيقاف تشغيل عمليات بحث DNS غير الضرورية في Apache: HostnameLookups Off

# سيؤدي ذلك إلى قيام Apache بتسجيل عنوان IP الخاص بالعميل بدلاً من مضيفه.

استخدم دائمًا عنوان IP في توجيهات "السماح من" و "الرفض من" ، وليس أسماء المجالات. السماح من 1.1.1.1 رفض من 2.2.2.2

الأكثر أهمية

سيكون التأثير الأكبر على الزوار هو التضمين ضغط gzip. غالبًا ما يوفر هذا حوالي 70٪ من حركة المرور.

إذا قررت زيادة أداء Apache (وهو اليوم أحد أكثر خوادم الويب شيوعًا على الويب) ، فستكون النصائح التي سنقدمها في هذه المقالة مفيدة.

1. اعمل فقط مع الوحدات التي تحتاجها حقًا ، واحذف كل شيء آخر على الفور وبدون تردد! الحقيقة هي أنه في هذه الحالة ستقلل على الفور من استهلاك الذاكرة ، مما سيؤدي إلى زيادة السرعة. الخيار الثاني هو تجميع الوحدات النمطية كـ DSO باستخدام apxs (في apache 1) و apxs 2 in (apache 2) ، مما سيقلل السرعة بحوالي 11-15٪.

2. حدد MPM (وحدة المعالجة المتعددة) بشكل صحيح. لان المهمة الرئيسية MPM - استمع إلى المنافذ المطابقة المتطلبات المعمول بهاالسلامة والكمية ذاكرة متاحةأو وجود دعم مؤشر الترابط في نظام التشغيل ، فيجب عليك قصر الاختيار على وحدتي MPM - العامل و Prefork.

عامل - خدمة طلب نقل إلى موضوع منفصل.

Perfork - العمل مع العديد من العمليات الفرعية ، كل منها مسؤول عن معالجة اتصال واحد.

لتغيير MPM ، سيتعين عليك إعادة ترجمة أباتشي مع المستند إلى المصدر ، مما سيؤدي على الفور إلى تحسين سرعة النظام بأكمله.

3. إعداد DNSالطلبات. أولاً ، قم بتضمين التوجيه "HostnameLookups". ثانيًا ، تأكد من أن التوجيهين "السماح من" و "الرفض من" يستخدمان عناوين IP بدلاً من أسماء المجال لحفظ الطلبات المزدوجة التي ستقدمها من أجل التحقق من صحة بيانات العميل.

4. قم بتعيين التوجيه AllowOverride على "None" ، وإلا سيفتح apache (أو يحاول فتح) جميع ملفات htaccess في كل دليل تمت زيارته ، بالإضافة إلى الملفات الموجودة أعلاه:

لذلك ، إذا كنت بحاجة إلى .htaccess لدليل واحد فقط ، فافعل هذا:

وتجدر الإشارة أيضًا إلى أنه عند تمكين الدليل:

FollowSymLinks - سوف يتبع الخادم دائمًا روابط رمزيةفي هذا الدليل ؛

SymLinksIfOwnerMatch - سيتعقب الخادم الروابط فقط إذا تطابق مالك الدليل مع مالك الدليل الذي يشير إليه الرابط.

5. رفض أيضًا Content Negotiatio.

6. قم بتعيين معلمات MaxClients بشكل صحيح ، والتي تحدد عدد الطلبات التي تتم معالجتها في وقت واحد. ابحث عن القيمة المثلى لـ MaxClients لك لخدمة العدد الأمثل من العملاء. يجب أن نتذكر أنه بالنسبة للملفات الثابتة ، يتطلب أباتشي 2-3 ميجابايت لكل عملية ، للديناميكيات - 16-32 ميجابايت.

7. تثبيت MinSpareServers ، و MaxSpareServers ، و StartServers - ويجب أن يتسبب ذلك في رفض Apache لإنشاء 4 سلاسل / عمليات في ثانية واحدة ، مما سيسمح بعدم تحميل النظام بشكل زائد حتى مع الحد الأقصى لعدد العملاء.

8. قم بتغيير قيمة MaxRequestsPerChild عند تحديد عدد الطلبات التي يجب أن يعالجها مؤشر ترابط واحد / عملية فرعية قبل أن ينتهي. تذكر أن هذه القيمة مضبوطة (افتراضيًا) على "صفر" ، لذا من الأفضل تغييرها إلى 1000 أو أكثر ، مما سيوفر لك من تسريب الذاكرة إلى العمليات الفرعية ، وهو أمر ذو أهمية كبيرة عند استخدام إصدار غير مستقر من PHP.

9. قم بتنشيط KeepAlive و KeepAliveTimeout ، اللذان ، في وضع التعطيل ، يقومان بإنشاء سلسلة منفصلة لكل صورة موضوعة على صفحة html ، و "إبطاء" الصفحات باستخدام عدد كبيرالصور حجم كبير. في حالات خوادم التنزيل ، من الأفضل تعطيل KeepAlive ، والذي سيوفر لك على الفور الانتظار الطويل قبل أن يغلق الخادم الاتصالات.

10. استخدم الضغط ، والذي سيسمح لك بتقليل كمية حركة المرور المنقولة بنسبة 75 بالمائة. وافعل ذلك دون أي خوف ، لأن كل هذا اليوم هو الأحدث برامج العميلتدعم الخوادم ضغط HTTP في معيار HTTP / 1.1. ويجب أن تضغط الجهود على ملفات الفيديو والموسيقى وجميع ملفات jpg ، gif pngالملفات.

وتجدر الإشارة إلى أن معلمات التخزين المؤقت يتم تعيينها بواسطة توجيهات الوحدة النمطية mod_deflate. في هذه الحالة ، يجب ألا تضبط نسبة ضغط gzip على أكثر من 4 أو 5 ، لأن هذا سيزداد وقت وحدة المعالجة المركزيةوتقليل التأثير الكلي.

11. وبالطبع ، لا تنس التثبيت على ملفات ثابتة (يتم استخدام وحدة mod_expires لهذا) الرؤوس منتهية الصلاحية. أو قم بتخزينه مؤقتًا على العميل إذا لم يتغير الملف ، مما سيحرر الخادم من الطلبات غير الضرورية ، وسيحصل العميل على صفحة تحميل أسرع.

غالبًا ما تواجه VPS الجديدة مشكلات في الأداء عمل اباتشي. الحقيقة هي أن ملفات التكوين التي تم إنشاؤها بعد منشآت أباتشيبعيدًا عن التحسين.

أعراض إعدادات سيئةيمكن أن يكون هناك VPS يعمل مع ذاكرة الوصول العشوائي الشراهة بنسبة 100٪ أو وحدة المعالجة المركزية بنسبة 100٪. بعد تنفيذ الأمر top أو htop (إذا لم ينجح الأمر ، فقم بتشغيل apt-get install htop)في الأسطر الأولى ستكون هناك عملية اباتشي.

سأعرض التكوين الأمثل. ملف VPS

الرامات " الذاكرة العشوائية في الهواتف والحواسيب ": 512 ميجا بايت

المعالج: 2267 ميجا هرتز

نظام التشغيل: دبيان 5

# # المهلة: عدد الثواني قبل أن يستقبل ويرسل المهلة. # Timeout 300 # # KeepAlive: ما إذا كان سيتم السماح بالاتصالات المستمرة أم لا (أكثر من # طلب واحد لكل اتصال). اضبط على "إيقاف" لإلغاء التنشيط. # KeepAlive On # # MaxKeepAliveRequests: الحد الأقصى لعدد الطلبات للسماح # أثناء اتصال دائم. اضبط على 0 للسماح بمبلغ غير محدود. # نوصيك بترك هذا الرقم مرتفعًا ، لتحقيق أقصى قدر من الأداء. # MaxKeepAliveRequests 100 # # KeepAliveTimeout: عدد الثواني لانتظار الطلب التالي من نفس العميل على نفس الاتصال. # KeepAliveTimeout 15 ## ## تنظيم حجم تجمع الخوادم (خاص بـ MPM) ## # prefork MPM # StartServers: عدد عمليات الخادم لبدء # MinSpareServers: الحد الأدنى لعدد عمليات الخادم التي يتم الاحتفاظ بها احتياطيًا # MaxSpareServers: الحد الأقصى لعدد عمليات الخادم التي يتم الاحتفاظ بها احتياطيًا # MaxClients: الحد الأقصى لعدد عمليات الخادم المسموح بها لبدء # MaxRequestsPerChild: الحد الأقصى لعدد الطلبات التي تخدمها عملية الخادم StartServers 3 MinSpareServers 3 MaxSpareServers 10 MaxClients 100 MaxRequestsPerChild 0# عامل MPM # StartServers: العدد الأولي لعمليات الخادم لبدء # MaxClients: الحد الأقصى لعدد اتصالات العميل المتزامنة # MinSpareThreads: الحد الأدنى لعدد سلاسل العمليات التي يتم الاحتفاظ بها احتياطيًا # MaxSpareThreads: الحد الأقصى لعدد سلاسل العمليات التي يتم الاحتفاظ بها احتياطيًا # ThreadPerChild: ثابت عدد سلاسل العمليات العاملة في كل عملية خادم # MaxRequestsPerChild: الحد الأقصى لعدد الطلبات التي تخدمها عملية الخادم StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadPerChild 25 MaxRequestsPerChild 0

في ملف الإعدادات هذا ، يمكنك تغيير المعلمات التالية:

  • ماكسكلينتس- تحديد العدد الأقصى
  • تشغيل عمليات httpd في نفس الوقت. أولئك. في الأساس وضع حد

    لالتهام الذاكرة من خلال عملية httpd الأكثر "جوعًا"

  • StartServers- يحدد عدد العمليات التابعة عند بدء تشغيل الخادم.
  • MinSpareServersهو الحد الأدنى لعدد العمليات الفرعية غير المستخدمة.
  • MaxSpareServers- على التوالى العدد الأقصىالعمليات الفرعية غير المستخدمة.
  • MaxRequestsPerChild- الحد الأقصى لعدد الطلبات التي يُسمح لعملية فرعية بمعالجتها قبل تجاوزها. بحاجة إلى معلمة معينةلتجنب تسريب الذاكرة أو موارد Apache الأخرى ، كما لو كانت عملية الطفل تفيض ، فستفعل
  • تم إنهاؤه قسرا. في معظم الحالات ، لا يلزم إجراء أي تغيير. القيمة 0 تعني عدم وجود قيود.

|

Apache هو خادم ويب قوي للغاية. للتبسيط الإعداد الأولي، عرض على عدد كبير منسابقًا الوحدات المثبتة. لهذا السبب ، يعد Apache رائعًا لنشر المشاريع الجديدة - يمكن استخدامه لإعداد بيئة إنتاج موثوقة بسرعة. ومع ذلك ، مع نمو الموقع (وبالتالي حجم حركة المرور) ، قد تواجه مشكلات.

سيساعدك هذا الدليل على زيادة أداء Apache على الخادم الافتراضي الخاص بك.

1: تعطيل الوحدات غير الضرورية

تحتوي أنظمة Ubuntu و Debian على المجلدات / etc / apache2 / mods-available /. يقوم الأخير بتخزين قائمة بجميع الوحدات النمطية المثبتة على ملف هذا الخادم. ويحتوي الدليل الممكّن للوسائط على وحدات مدرجة في هذه اللحظة.

قد يختلف الوضع الافتراضي على كل خادم. لنفترض أن الخادم يحتوي على 17 وحدة نمطية مُمكَّنة افتراضيًا. كقاعدة عامة ، هذا كثير جدًا بالنسبة للتطبيق المتوسط. بالإضافة إلى ذلك ، من الصعب تحديده على الفور وحدات غير ضرورية، والتي يمكن تعطيلها كـ وحدات فرديةهي تبعيات للآخرين.

بادئ ذي بدء ، يوصى بحفظ قائمة الوحدات النشطة افتراضيًا حتى تتمكن من استخدامها للاسترداد في المستقبل. المعلمات القياسية. يمكنك بعد ذلك ببساطة تعطيل جميع الوحدات غير الضرورية واحدة تلو الأخرى ، وإعادة تشغيل Apache بعد تعطيل كل وحدة لضمان عدم حدوث أخطاء في النظام.

يتم تعطيل الوحدات النمطية لـ Ubuntu و Debian باستخدام هذا الأمر:

sudo a2dismod الفهرس التلقائي

تستهلك الوحدات الفردية الكثير من الموارد ؛ إذا كنت لا تستخدم الوحدات التالية ، فقط قم بتعطيلها:

  • اعادة كتابة
  • بايثون
  • رف / روبي / راكب

لا يتم تمكين كل هذه الوحدات بشكل افتراضي ، ولكن الوضع فردي لكل خادم.

ملاحظة: عادةً ما يشتمل Apache على وحدة إعادة الكتابة افتراضيًا ، على الرغم من أنه يمكن استبدالها بوحدة الاسم المستعار. إذا كان الاسم المستعار يناسب تطبيقك ، فقم بتعطيل إعادة الكتابة - هذه واحدة من أثقل الوحدات. للتبديل من إعادة الكتابة إلى الاسم المستعار ، راجع وثائق الوحدة. حتى إذا لم تتمكن من تعطيل إعادة الكتابة تمامًا ، يمكنك التحسين قواعد منفصلةوحدة.

بعد تعطيل الوحدة ، أعد تشغيل Apache ثم تحقق من سجل الأخطاء للتأكد من أن تعطيل الوحدة لم يؤذي خادم الويب.

على سبيل المثال ، قد تحصل على هذا الخطأ:

خطأ في بناء الجملة في السطر 6 من / etc / apache2 / sites-enabled / site1:
أمر غير صالح "DAVLockDB" ، ربما يكون به خطأ إملائي أو معرف بواسطة وحدة نمطية غير مضمنة في تكوين الخادم
فشل الإجراء "configtest".

هذا يعني أن الوحدة المعطلة مطلوبة من أجل العملية الصحيحةقاعدة بيانات للانترنت. قم بتشغيله.

sudo a2enmod dav_fs

2: انقل الكود

غالبًا ما تستخدم مواقع PHP وحدة mod_php الشائعة ، وغالبًا ما تستخدم مواقع Ruby Passenger Phusion (نماذج mod_rails أو mod_rack modules).

تكمن المشكلة في أن كود C لمترجم تلك اللغة متداخل في Apache ، الأمر الذي يتطلب المزيد من الذاكرةلعرض كل صفحة. اذا كان صفحة شعبيةموقعك يتلقى 30 طلب HTTP ، واحد منهم سيكون لأجل صفحة ديناميكية، أما الـ 29 المتبقية فهي للموارد الثابتة (الصور و css وجافا سكريبت). لتحسين أداء Apache ، يمكنك استبعاد 29 طلبًا لا تقدم محتوى ديناميكيًا.

يمكن أن يؤدي تمكين وحدة mod_php إلى أن تتطلب عملية Apache التابعة واحدة 100 ميغابايت من ذاكرة الوصول العشوائي للخدمة. كلما زاد عدد عمليات Apache التي سيتم تشغيلها على الخادم ، زادت صعوبة معالجتها.

لإصلاح هذه المشكلة ، يمكنك استخدام الأدوات التالية:

  • بالنسبة إلى PHP ، يمكنك تثبيت php-fpm ، وهي عملية منفصلة تعتمد على بروتوكول fastcgi.
  • في Python ، استخدم uWSGI أو gnunicorn
  • بالنسبة إلى ريلز ، استخدم يونيكورن.

تبدأ عملية PHP أو Python أو Ruby أولاً ، ثم يقوم Apache بإعادة توجيه المكالمات محتوى ديناميكيلهذه العملية بدلاً من محاولة التعامل معها باستخدام كود متداخل.

بعد إزالة وحدة mod_php ، يمكن أن يتغير حجم عمليات Apache من 90-120 ميجابايت إلى 10 ميجابايت فقط. يتم تقديم كل المحتوى الديناميكي من خلال عمليتين فقط في الواجهة الخلفية.

3: تحديد عدد عمليات Apache

عديدة أنظمة التشغيلاستخدام تكوينات افتراضية ليست مناسبة جدًا للخوادم الصغيرة - 25 عملية فرعية. إذا كانت كل عملية تابعة لـ Apache تتطلب 120 ميغابايت من ذاكرة الوصول العشوائي ، فسيقضي الخادم 3 غيغابايت على Apache وحده.

يمكن لمتصفح الويب الخاص بمستخدم واحد أن يطلب 4 عناصر للموقع في المرة الواحدة ، مما يعني أن 7-8 أشخاص فقط قادرون على زيادة التحميل على الخادم. تتجمد صفحات الويب أو يتم تحميلها ببطء شديد.

غالبًا ما يحتفظ الخادم بعمليات Apache الميتة هذه حالة نشطةفي محاولة لخدمة المحتوى المطلوب ، وهذا يقلل من عدد العمليات المتاحة لخدمة المستخدمين ومقدار الذاكرة. نتيجة لذلك ، تحصل على تجربة مستخدم سيئة.

حدد مقدار ذاكرة الوصول العشوائي التي يحتاجها التطبيق ومقدار الذاكرة المتبقية ، ثم خصص معظم الذاكرة المتبقية إلى Apache.

على سبيل المثال ، لديك ثلاث عمليات php-fpm لمعالجة المحتوى الديناميكي ، حيث تستخدم كل عملية ما يصل إلى 70 ميغابايت من الذاكرة ، و خادم MySQL، والتي تستهلك ما يصل إلى 120 ميغا بايت من ذاكرة الوصول العشوائي. والنتيجة هي أن التطبيق يستخدم 330 ميغا بايت من الذاكرة. اذا كنت تمتلك خادم صغير، يمكنك تخصيص حوالي 150 ميغا بايت من الذاكرة لأباتشي.

متي خادم الويب Apacheقيد التشغيل ، قم بتشغيل الأمر العلوي. إنها تبرز الكثير معلومات مفيدة. يوجد أدناه مقتطف من نتيجتها:

أعلى -bn 1
PID USER PR NI VIRT RES SHR S٪ CPU٪ MEM TIME + COMMAND
[...]
15015 www-data 20 0232m 9644 1900 S 0.0 1.6 0: 00.02 apache2
15016 www-data 20 0232m 9644 1900 S 0.0 1.6 0: 00.01 اباتشي 2
15017 www-data 20 0232m 9644 1900 S 0.0 1.6 0: 00.02 apache2

ابحث عن القيمة في عمود Apache RES (على سبيل المثال ، 9644) واكتبها. يستخدم خادم الويب حاليًا ما يقرب من 10 ميغابايت من الذاكرة. إذا قمت بتحديد عدد عمليات Apache التابعة إلى 15 ، فسيكون 150 ميغابايت من الذاكرة المخصصة كافية.

قم بتحرير ملف تكوين Apache (على Ubuntu و Debian /etc/apache2/apache2.confand) وابحث عن قسم mpm_prefork_module. ابحث عن السطر MaxClients وأدخل 15 ، ثم احفظ الملف وأعد تشغيل خادم الويب.


بدء الخوادم 3
MinSpareServers 3
MaxSpareServers 5
ماكسكلينتس 30
MaxRequestsPerChild 0

بشكل افتراضي ، يمكن أن يكون MaxClients كبيرًا جدًا. يجب تقليله.

عندما يصل عدد العملاء إلى الحد الأقصى ، سيتلقى العملاء الجدد خطأ. عن طريق إعادة تحميل الصفحة ، سيتمكنون من الوصول إلى الموقع.

يبدو الأمر سيئًا ، ولكن لا يزال من الأفضل إغلاق هذه الاتصالات وحفظها بسرعة عمل عاديالخادم من الانتظار حتى يتوقف الخادم عن التعليق.

في بعض الحالات ، يمكن أن يساعد عدد أقل من العمليات الفرعية في تحسين أداء الخادم.

في كثير من الأحيان تكوينات أباتشيتستخدم الضبط المسبق Prefork mpm ، والذي يعتبر آمنًا ومناسبًا للغة PHP واللغات الأخرى.

إذا تخلصت من الوحدات الخارجية(PHP أو Rails) ، قد ترغب في اعتبار MPM العامل كبديل.

لتمكين هذه الوحدة ، أدخل:

سودو apt-get install apache2-mpm-worker
ستتم إزالة الحزم التالية:
apache2-mpm-prefork libapache2-mod-php5.apk
سيتم تثبيت الحزم الجديدة التالية:
اباتشي 2-mpm- عامل
0 تمت ترقيته ، 1 مثبت حديثًا ، 2 للإزالة و 2 لم تتم ترقيتهما.
تحتاج إلى الحصول على 2284 مليار من المحفوظات.
بعد هذه العملية ، سيتم تحرير مساحة على القرص تبلغ 8718 كيلو بايت.
يفعل انت تريدلاستكمال؟

انتباه!على Ubuntu ، يؤدي تثبيت وحدة العامل إلى إزالة prefork mpm و mod_php والوحدات النمطية الأخرى غير المتوافقة.

العلامات:

استمرار الموضوع:
شبابيك

ناتاليا كوماروفا ، 05/28/2009 (25/03/2018) عندما تقرأ منتدى أو مدونة ، تتذكر مؤلفي المشاركات بالاسم المستعار و ... من خلال صورة المستخدم ، ما يسمى الصورة الرمزية ....