كيفية تحسين إعدادات أباتشي لموقع الويب عالي الزيارات

optimiser la configuration d'Apache pour un site web à fort trafic

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

1. استخدم وحدة MPM الصحيحة

تستخدم Apache وحدات المعالجة المتعددة (MPMs) للتعامل مع طلبات العميل. MPMs مسؤولة عن إنشاء عمليات فرعية أو مؤشرات ترابط للتعامل مع الطلبات الواردة. هناك ثلاث وحدات MPM متوفرة في Apache: preforkworker, و event.

prefork MPM هي وحدة MPM الأقدم والأكثر استقرارا. يقوم بإنشاء عملية واحدة لكل اتصال ، مما قد يؤدي إلى استخدام الموارد بشكل كبير. worker يقوم MPM بإنشاء مؤشرات ترابط متعددة لكل عملية ، والتي يمكن أن تحسن الأداء وتقلل من استخدام الموارد. event MPM مشابه ل worker MPM ، لكنه يضيف آلية إعلام حدث غير متزامن لتحسين الأداء بشكل أكبر.

لتحسين إعدادات Apache لعالي الزيارات ، نوصي باستخدام worker أو event وحدات MPM. يمكنك تمكين هذه الوحدات عن طريق إلغاء التعليق على الأسطر التالية في ملف إعدادات Apache الخاص بك:

LoadModule mpm_worker_module modules/mod_mpm_worker.so

أو

LoadModule mpm_event_module modules/mod_mpm_event.so

2. زيادة عدد العمليات/مؤشرات الترابط الفرعية

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

لزيادة عدد عمليات أو خيوط الأطفال، تحتاج إلى تعديل توجيهات StartServers و MaxClients و MaxSpareServers و MinSpareServers في ملف إعدادات Apache الخاص بك.

StartServers هو عدد عمليات الأطفال التي يتم إطلاقها عندما يبدأ Apache. MaxClients هو الحد الأقصى لعدد الاتصالات المتزامنة التي يمكن لـ Apache التعامل معها. MaxSpareServers هو الحد الأقصى لعدد عمليات الأطفال الخاملة التي تحتفظ بها Apache على قيد الحياة.

على سبيل المثال، لضبط StartServers على 10 و MaxClients على 500 و MaxSpareServers على 200 و MinSpareServers على 10، يمكنك إضافة السطور التالية إلى ملف إعدادات Apache الخاص بك:

StartServers 10
MaxClients 500
MaxSpareServers 200
MinSpareServers 10

يجب عليك أيضًا التفكير في تعيين توجيه ServerLimit بنفس قيمة MaxClients. هذا يضمن أن أباتشي لا يخلق عمليات أطفال أكثر من اللازم.

هناك معلمة مهمة أخرى يمكن أن تساعد في زيادة عدد عمليات/خيوط الأطفال في Apache وهي توجيه MaxRequestWorkers. يحدد هذا التوجيه الحد الأقصى لعدد الطلبات المتزامنة التي يمكن التعامل معها بواسطة Apache.

بشكل افتراضي، تم تعيين قيمة MaxRequestWorkers على 256. ومع ذلك، يمكن زيادة هذه القيمة للسماح لأباتشي بالتعامل مع المزيد من الطلبات في وقت واحد.

لضبط قيمة MaxRequestWorkers، يمكنك إضافة السطر التالي إلى ملف إعدادات Apache الخاص بك:

MaxRequestWorkers 500

في المثال أعلاه، حددنا قيمة MaxRequestWorkers إلى 500، مما يعني أن Apache يمكنها التعامل مع ما يصل إلى 500 طلب متزامن.

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

3. تمكين KeepAlive

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

لتمكين KeepAlive، تحتاج إلى ضبط التوجيه KeepAlive على On. يجب عليك أيضا تعيين توجيه KeepAliveTimeout إلى قيمة مناسبة لموقعك على الويب. على سبيل المثال، لتعيين مهلة KeepAlive إلى 15 ثانية، يمكنك إضافة الأسطر التالية إلى ملف إعدادات Apache:

KeepAlive On
KeepAliveTimeout 15

4. أعداد التخزين المؤقت

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

يوفر أباتشي العديد من وحدات التخزين المؤقت، مثل mod_cache و mod_disk_cache. لتمكين التخزين المؤقت، تحتاج إلى تحميل وحدة التخزين المؤقت المناسبة وتهيئتها في ملف إعدادات Apache الخاص بك. على سبيل المثال، لتمكين تخزين المحتوى الثابت باستخدام mod_disk_cache، يمكنك إضافة السطور التالية إلى ملف إعدادات Apache الخاص بك:

LoadModule cache_module modules/mod_cache.so
LoadModule disk_cache_module modules/mod_disk_cache.so
CacheEnable disk /
CacheRoot /var/cache/apache2/mod_disk_cache
CacheDirLevels 2
CacheDirLength 1

تتيح هذه الخطوط وحدات mod_cache و mod_disk_cache، وتهيئ التخزين المؤقت لدليل الجذر (/) باستخدام ذاكرة التخزين المؤقت للقرص. يحدد توجيه CacheRoot الدليل حيث سيتم تخزين المحتوى المخبأ، بينما يتحكم CacheDirLevels و CacheDirLength في هيكل التسلسل الهرمي لدليل ذاكرة التخزين المؤقت.

5. استخدم الضغط

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

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

LoadModule deflate_module modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json

تتيح هذه الخطوط وحدة mod_dreflate وتحدد أنواع المحتوى الذي يجب ضغطه.

6. الحد من الوصول إلى الموارد

يمكن أن يساعد الحد من الوصول إلى الموارد في تقليل العبء على الخادم الخاص بك وتحسين أداء موقع الويب الخاص بك. You يمكن أن يحد من الوصول إلى الموارد باستخدام OrderAllow, و Deny التوجيهات في ملف إعدادات أباتشي الخاص بك.

على سبيل المثال، للحد من الوصول إلى دليل يسمى admin, يمكنك إضافة الأسطر التالية إلى ملف إعدادات Apache الخاص بك:

<Directory /var/www/html/admin>
    Order deny,allow
    Deny from all
    Allow from 192.168.0.0/24
</Directory>

تحدد هذه الخطوط أن الوصول إلى admin يجب رفض الدليل لجميع العملاء باستثناء أولئك الموجودين في 192.168.0.0/24 الشبكة الفرعية.

7. تحسين موارد الخادم

بصرف النظر عن تحسين Apache، يمكنك أيضًا تحسين موارد الخادم لضمان أقصى أداء وتوافر موقع الويب الخاص بك.

a) زيادة حد الذاكرة وتعيين Opcache

قد لا يكون حد الذاكرة الافتراضي لنصوص PHP كافيًا للتعامل مع حجم كبير من الطلبات الواردة. يمكنك زيادة حد الذاكرة عن طريق تعديل توجيه memory_limit في ملف إعدادات PHP الخاص بك.

بالإضافة إلى ذلك، يمكنك أيضًا تمكين Opcache، وهو مخبأ bytecode لنصوص PHP. يخزن Opcache النص bytecode المسبق في الذاكرة، مما يقلل من النفقات العامة للتحليل وتجميع النصوص لكل طلب.

ثبت OPCache
# For CentOS, RedHat and Alma Linux use this command :
$ sudo yum install php-opcache
# For Ubuntu and Debian use this command :
$ sudo apt-get install php-opcache

بمجرد اكتمال التثبيت، أعد تشغيل Apache لتطبيق التغييرات:

$ sudo systemctl restart apache2

هذا هو يجب الآن تثبيت OPcache وتمكينه على نظام Ubuntu الخاص بك. يمكنك التحقق من أنه تم تمكينه عن طريق التحقق من إعدادات PHP الخاص بك.

b) قم بإعداد ملف Swap أو قسم Swap

إذا نفدت ذاكرة الخادم الخاص بك، فقد يبدأ في استخدام القرص الصلب كذاكرة افتراضية، مما قد يقلل بشكل كبير من أداء موقع الويب الخاص بك. يمكنك تجنب ذلك عن طريق إعداد ملف Swap أو قسم Swap، والذي يوفر ذاكرة افتراضية إضافية عند استنفاد الذاكرة المادية.

لإعداد ملف مبادلة، يمكنك استخدام الأوامر التالية:

$ sudo fallocate -l 1G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile

تقوم هذه الأوامر بإنشاء ملف مقايضة 1 جيجابايت، وتعيين أذونات الملف، وتنسيق الملف كـ Swap، وتمكين Swap.

c) فعّل ضغط GZIP

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

لتمكين ضغط GZIP، يمكنك استخدام الأوامر التالية:

$ sudo a2enmod deflate
$ sudo service apache2 restart

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

خلاصة

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

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

LEAVE A COMMENT