"You Are About to Reach the Connection Limit" وأخطاء حدود الموارد الأخرى في CloudLinux

"You Are About to Reach the Connection Limit" وأخطاء حدود الموارد الأخرى في CloudLinux

رسالة "You are about to reach the connection limit" هي تحذير من CloudLinux على الاستضافة المشتركة. وتعني أن حسابك يقترب من حد Entry Processes، وهو الحد الذي يتحكم في عدد طلبات PHP التي يمكن لموقعك معالجتها في الوقت نفسه. كما يضع CloudLinux حدودًا لاستهلاك المعالج (CPU) والذاكرة وعمليات القراءة والكتابة على القرص (disk IO) وعدد الملفات. عند الوصول إلى أي حد، يتباطأ موقعك أو تظهر للزوار لفترة قصيرة صفحة خطأ 503 أو 508. لا يتم إيقاف حسابك. والحل المعتاد هو تقليل الحمل الذي تسببه كل زيارة للصفحة: فعّل التخزين المؤقت (caching)، واحظر البوتات المسيئة، وتحكّم في WordPress cron، ونظّف قاعدة البيانات، واستخدم إصدارًا حديثًا من PHP. ولا تنتقل إلى باقة أكبر إلا إذا ظل الترافيك الحقيقي يتجاوز الحدود بعد ذلك.

يوضح لك هذا الشرح كيف تقرأ صفحة Resource Usage في cPanel، وتحدد السبب، وتطبّق الحلول بالترتيب. وينطبق على أي حساب cPanel يعمل على CloudLinux، بما في ذلك الاستضافة المشتركة من Cloudesta.

المتطلبات

  • بيانات تسجيل الدخول إلى cPanel لحساب الاستضافة المتأثر.
  • صلاحية المدير على موقعك (لوحة تحكم WordPress إذا كنت تستخدم WordPress).
  • نسخة احتياطية حديثة قبل تعديل .htaccess أو wp-config.php. يمكنك استخدام JetBackup في cPanel لهذا الغرض.
  • اختياري: صلاحية الوصول إلى Terminal في cPanel لتنفيذ أوامر WP-CLI، إذا كانت متاحة في حسابك.

ما هي حدود LVE في CloudLinux؟

يضع CloudLinux كل حساب cPanel داخل بيئة افتراضية خفيفة خاصة به تُسمى Lightweight Virtual Environment (LVE). تمنع هذه البيئة أي موقع عليه ضغط كبير من إبطاء باقي المواقع على السيرفر. الحدود الرئيسية هي:

  • CPU (SPEED): الحصة التي يمكن لحسابك استخدامها من المعالج. عند الوصول إلى الحد، تتباطأ الطلبات ولا تُرفض.
  • الذاكرة الفعلية (PMEM): إجمالي الذاكرة (RAM) التي تستخدمها كل العمليات الخاصة بك. عند الوصول إلى الحد، قد تفشل العمليات الجديدة، وغالبًا مع ظهور أخطاء 500 أو 503.
  • Entry Processes (EP): عدد الطلبات (معظمها PHP) التي يمكن تنفيذها في اللحظة نفسها. وهذا هو "حد الاتصالات" (connection limit). عند الوصول إلى الحد، يحصل الزوار الجدد على خطأ 503 أو 508 حتى يتوفر مكان شاغر.
  • عدد العمليات (NPROC): كل العمليات، بما فيها مهام cron وجلسات SSH.
  • IO وIOPS: معدل نقل البيانات على القرص وعدد عمليات القرص في الثانية. عند الوصول إلى الحد، تتباطأ عمليات الاستيراد والنسخ الاحتياطي والصفحات غير المخزنة مؤقتًا.
  • Inodes: عدد الملفات والمجلدات. ويتم احتسابها ضمن إحصائية File Usage في cPanel. عند الوصول إلى الحد، تفشل عمليات الرفع واستلام البريد الإلكتروني والكتابة في التخزين المؤقت.

1. كيف أراجع استهلاك الموارد في cPanel؟

سجّل الدخول إلى cPanel وانتقل إلى Metrics → Resource Usage. توضح لك لوحة المعلومات ما إذا كان حسابك قد تعرّض للتقييد خلال آخر 24 ساعة. اضغط على Details لعرض الرسوم البيانية.

  • خط الاستهلاك (Usage): مقدار ما استخدمه حسابك من كل مورد بمرور الوقت.
  • خط الحد (Limit): الحد الأقصى لهذا المورد في باقتك.
  • Faults: عدد المرات التي تم فيها الوصول إلى الحد فعليًا. وهذا هو الرقم المهم. الاستهلاك المرتفع مع صفر Faults لا يمثل مشكلة.

غيّر الفترة الزمنية إلى 7 أو 30 يومًا لاكتشاف الأنماط المتكررة، مثل حدوث Faults في الساعة نفسها كل يوم. إذا ظهر لك خيار Snapshot، فافتحه لفترة حدوث الـ Faults. سيعرض لك العمليات وعناوين URL واستعلامات MySQL التي كانت تعمل في تلك اللحظة، وهو ما يقودك غالبًا إلى السبب مباشرة. يمكنك الاطلاع على استهلاك الـ inodes من خلال File Usage في الشريط الجانبي للإحصائيات في cPanel.

2. ما الأسباب المعتادة لأخطاء حدود الموارد؟

  • إضافات WordPress الثقيلة: أدوات بناء الصفحات (page builders)، وإضافات المقالات ذات الصلة، وإضافات الإحصائيات، وأدوات الفحص الأمني التي تعمل مع كل طلب.
  • wp-cron: يعمل عند تحميل الصفحات، لذلك تشغّله المواقع التي عليها ضغط كبير مرارًا وتكرارًا.
  • البوتات وأدوات استخراج البيانات (scrapers): زواحف SEO العدوانية، وأدوات استخراج البيانات الخاصة بالذكاء الاصطناعي، وهجمات التخمين (brute-force) على wp-login.php وxmlrpc.php.
  • الصفحات غير المخزنة مؤقتًا: كل زيارة تشغّل PHP وMySQL من البداية.
  • إصدار PHP قديم: إصدار PHP 7.x أبطأ بشكل ملحوظ من PHP 8.x ويستهلك من المعالج أكثر في كل طلب.
  • عدد كبير من الاتصالات المتزامنة من مصدر واحد: تطبيق يعمل بشكل خاطئ، أو أداة لمراقبة نسبة التشغيل مضبوطة على الفحص كل بضع ثوانٍ، أو هجوم DoS صغير.

3. كيف أحل المشكلة؟ ابدأ بالتخزين المؤقت

التخزين المؤقت يمنحك أكبر تحسّن. تعمل الاستضافة المشتركة من Cloudesta بـ LiteSpeed، لذلك تُعرض الصفحة المخزنة مؤقتًا دون تشغيل PHP على الإطلاق. وهذا يحرّر Entry Processes والمعالج فورًا. في WordPress، انتقل إلى Plugins → Add New، وابحث عن LiteSpeed Cache، ثم ثبّتها وفعّلها. افتح LiteSpeed Cache → Cache وتأكد من أن خيار Enable Cache مضبوط على ON.

احذف أي إضافات أخرى للتخزين المؤقت للصفحات، مثل WP Super Cache أو W3 Total Cache. استخدام إضافتين للتخزين المؤقت في الوقت نفسه يسبب تعارضات.

4. كيف أحظر البوتات الضارة باستخدام .htaccess؟

افتح Files → File Manager وانتقل إلى public_html. فعّل خيار Show Hidden Files من Settings، ثم عدّل ملف .htaccess. أضف هذه القواعد في أعلى الملف تمامًا:

# Block aggressive crawlers
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (AhrefsBot|SemrushBot|MJ12bot|DotBot|PetalBot|Bytespider|BLEXBot) [NC]
RewriteRule .* - [F,L]

# Block XML-RPC (often abused for brute force)
RewriteRule ^xmlrpc\.php$ - [F,L]
لا تحظر Googlebot أو Bingbot. بعض الإضافات والتطبيقات تحتاج إلى xmlrpc.php، ومنها إضافة Jetpack وتطبيق WordPress للهاتف المحمول. إذا كنت تستخدمها، فلا تُضف قاعدة XML-RPC. لحماية صفحة تسجيل الدخول، استخدم إضافة لتقييد محاولات تسجيل الدخول. كما أن Imunify360 على السيرفر يحظر بالفعل كثيرًا من المهاجمين المعروفين.

5. كيف أمنع wp-cron من إثقال الموقع؟

عدّل ملف wp-config.php الموجود في public_html. أضف هذا السطر قبل /* That's all, stop editing! */:

define( 'DISABLE_WP_CRON', true );

بعد ذلك، شغّل cron وفق جدول زمني ثابت بدلًا من ذلك. انتقل إلى Advanced → Cron Jobs، واختر Once Per Fifteen Minutes من الإعدادات الشائعة (Common Settings)، وأدخل هذا الأمر. استبدل username باسم المستخدم الخاص بك في cPanel.

/usr/local/bin/php -q /home/username/public_html/wp-cron.php >/dev/null 2>&1

6. كيف أحسّن أداء قاعدة البيانات؟

الاستعلامات البطيئة تُبقي عمليات PHP مفتوحة لفترة أطول، وهو ما يستهلك Entry Processes. يمكنك تنظيف قاعدة البيانات بطريقتين:

  • phpMyAdmin: انتقل إلى Databases → phpMyAdmin واختر قاعدة البيانات الخاصة بك. اضغط على Check all، ثم اختر Optimize table من القائمة المنسدلة.
  • WP-CLI: إذا كان Advanced → Terminal متاحًا، فنفّذ هذه الأوامر:
cd ~/public_html
wp transient delete --expired
wp post delete $(wp post list --post_type=revision --format=ids) --force
wp db optimize

يعرض الأمر الثاني رسالة خطأ إذا لم تكن هناك مراجعات (revisions) لحذفها. وهذا لا يسبب أي ضرر. لمنع تراكم المراجعات مرة أخرى، أضف define( 'WP_POST_REVISIONS', 5 ); إلى ملف wp-config.php.

7. كيف أحدّث إصدار PHP؟

انتقل إلى Software → Select PHP Version (أداة اختيار إصدار PHP في CloudLinux). اختر PHP 8.2 أو 8.3 واضغط على Set as current. في تبويب Extensions، تأكد من تحديد opcache.

إذا كان حسابك يستخدم MultiPHP Manager بدلًا من ذلك، فاضبط الإصدار لكل نطاق من هناك. حدّث القوالب والإضافات أولًا. وبعد التبديل، افحص موقعك للتأكد من عدم وجود أخطاء.

التحقق من نجاح الحل

تأكد من أن الصفحات تُعرض من التخزين المؤقت. نفّذ هذا الأمر على جهازك الشخصي:

curl -sI https://example.com/ | grep -i x-litespeed-cache

نفّذه مرتين. يجب أن تظهر في المرة الثانية النتيجة x-litespeed-cache: hit. بعد ذلك، انتظر من 24 إلى 48 ساعة وافتح Metrics → Resource Usage مرة أخرى. يجب أن يكون عدد الـ Faults الخاصة بـ Entry Processes والمعالج صفرًا أو قريبًا من الصفر.

مشكلات شائعة

يظهر للزوار خطأ "503 Service Unavailable" أو "508 Resource Limit Is Reached"

هذا يعني أنه تم الوصول إلى حد Entry Processes. استخدم Snapshot لتحديد عناوين URL البطيئة؛ فالسكريبتات التي تستغرق وقتًا طويلًا في التنفيذ وترافيك البوتات من الأسباب المعتادة. فعّل التخزين المؤقت واحظر الـ user agents المسيئة. وتأكد أيضًا من عدم وجود خدمة خارجية تستعلم من موقعك كل بضع ثوانٍ.

الموقع يكون بطيئًا في ساعات معينة فقط

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

فشل عمليات الرفع أو استلام الرسائل رغم وجود مساحة فارغة

على الأرجح وصلت إلى حد الـ inodes. احذف ملفات النسخ الاحتياطية القديمة ومجلدات التخزين المؤقت غير المستخدمة والجلسات (sessions) القديمة. وأفرغ مجلدات البريد الكبيرة مثل Spam وTrash.

أخطاء 500 مع رسالة "Allowed memory size exhausted"

هذا هو حد memory_limit الخاص بـ PHP نفسه، وليس حد الذاكرة في LVE. يمكنك زيادته من Select PHP Version → Options. وإذا ظهرت أيضًا Faults في الذاكرة الفعلية، فابحث عن الإضافة التي تستهلك ذاكرة أكثر من اللازم بدلًا من الاكتفاء برفع الحدود.

متى يجب أن أنتقل إلى باقة أكبر أو إلى VPS؟

قم بالترقية إذا ظلت الـ Faults تظهر بانتظام بعد تطبيق كل الخطوات السابقة، وكانت أدوات التحليلات لديك تُظهر زيادة حقيقية في عدد الزوار. ومن العلامات الأخرى أن يكون موقعك متجر WooCommerce أو موقع عضويات به عدد كبير من المستخدمين المسجلين دخولهم، إذ لا يمر هؤلاء عبر التخزين المؤقت للصفحات.

للانتقال إلى باقة استضافة مشتركة أكبر، افتح تذكرة دعم. يتولى فريقنا تنفيذ ترقية الباقات. وللتحكم الكامل في الموارد، يمنحك VPS سحابي معالجًا وذاكرة RAM مخصصين وصلاحيات root.

الأسئلة الشائعة

هل سيتم إيقاف حسابي إذا وصلت إلى حد الموارد؟

لا. يقوم CloudLinux بإبطاء الطلبات أو رفضها مؤقتًا طالما أنك عند الحد، ويعود كل شيء إلى طبيعته بمجرد انخفاض الاستهلاك.

هل حد Entry Processes هو نفسه عدد الزوار؟

لا. فهو يحسب الطلبات التي تتم معالجتها في اللحظة نفسها، ومعظمها ينتهي في جزء من الثانية. يمكن لموقع مضبوط جيدًا بالتخزين المؤقت وبحد EP منخفض أن يخدم آلافًا كثيرة من الزوار يوميًا.

هل يمكن لفريق الدعم أن يخبرني بدقة بما يستهلك موارد حسابي؟

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

تحتاج إلى مساعدة؟ افتح تذكرة دعم من خلال https://cloudesta.com/submitticket.php واذكر فيها النطاق الخاص بك والأوقات التي ظهرت فيها الأخطاء.

هل كانت المقالة مفيدة ؟

0 أعضاء وجدوا هذه المقالة مفيدة

Powered by WHMCompleteSolution