إذا كنت تقوم بتشغيل موقع ويب يتلقى الكثير من الزيارات ، فمن الضروري تحسين إعدادات خادم الويب Apache لضمان أقصى قدر من الأداء والتوافر. في هذه المقالة ، سنقدم لك بعض النصائح والأمثلة حول كيفية تحسين إعدادات Apache لمواقع الويب عالية الزيارات.
1. استخدم وحدة MPM الصحيحة
تستخدم Apache وحدات المعالجة المتعددة (MPMs) للتعامل مع طلبات العميل. MPMs مسؤولة عن إنشاء عمليات فرعية أو مؤشرات ترابط للتعامل مع الطلبات الواردة. هناك ثلاث وحدات MPM متوفرة في Apache: prefork
, worker
, و 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 يمكن أن يحد من الوصول إلى الموارد باستخدام Order
, Allow
, و 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 أمر بالغ الأهمية، إلا أنه جزء واحد فقط من اللغز. يعتمد الأداء العام أيضًا على عوامل أخرى مثل البنية التحتية للشبكة وأداء قاعدة البيانات وتحسين التطبيق والمزيد.