الإعدادات المتاحة للحدود المعدّلة العالمية والتحكم في المعدل

تأتي Discourse مع 3 حدود معدل عالمية مختلفة يمكن للإداريين الموقعيين تكوينها.

حدود معدل عالمية لكل عنوان IP

تنطبق هذه الحدود على كل عنوان IP فريد يتفاعل مع تطبيق Discourse. (يُستثنى الملفات التي تُقدَّم مباشرةً من نظام الملفات أو CDN)

بشكل افتراضي، يكون هذا الحد مفعّلًا، ويمكنك تعطيله أو ضبطه في وضع الإبلاغ.

DISCOURSE_MAX_REQS_PER_IP_MODE: القيمة الافتراضية block، حيث يُطبَّق هذا الحد بشكل افتراضي. (الخيارات الأخرى هي warn، warn+block، وnone)

DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE: عدد الطلبات لكل IP في الدقيقة (الافتراضي هو 200)

DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: عدد الطلبات لكل IP في 10 ثوانٍ (الافتراضي هو 50)

DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS: عدد طلبات الأصول (الصور الرمزية/ملفات CSS) لكل IP في 10 ثوانٍ (الافتراضي هو 200)

DISCOURSE_MAX_REQS_RATE_LIMIT_ON_PRIVATE: هل يجب أن ينطبق حد المعدل على عناوين IP الخاصة التي تصل إلى Discourse؟ القيمة الافتراضية هي false.

DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL: استخدام حدود معدل لكل مستخدم بدلاً من حدود معدل IP للمستخدمين الذين لديهم مستوى ثقة يساوي هذا المستوى أو أعلى (الافتراضي 1)

DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS: قائمة مفصولة بمسافات لعناوين IP أو كتل CIDR معفاة من حدود المعدل لكل IP. على سبيل المثال: 14.15.16.32/27 216.148.1.2

حدود معدل واجهة برمجة تطبيقات المستخدم (User API)

تقوم تطبيقات الجوال بالحصول على مفتاح واجهة برمجة تطبيقات (API key) لكل جهاز للوصول إلى Discourse نيابةً عن المستخدم (باستخدام بروتوكول مفتوح). تخضع هذه المفاتيح لقيود صارمة للغاية.

DISCOURSE_MAX_USER_API_REQS_PER_MINUTE: الافتراضي 20
DISCOURSE_MAX_USER_API_REQS_PER_DAY: الافتراضي 2880

حدود معدل واجهة برمجة تطبيقات المسؤول (Admin API)

يمكن توليد مفاتيح واجهة برمجة التطبيقات الإدارية عبر صفحة yoursite.com/admin/api/keys. يمكن لهذه المفاتيح العمل نيابةً عن المستخدمين، لكنها تتطلب صلاحيات إدارية لتوليدها. هناك حد أقصى لعدد 60 طلبًا في الدقيقة، مشترك بين جميع المفاتيح.

يمكن للمستخدمين الذين يستضيفون الخدمة بأنفسهم تغيير هذا في ملف app.yml. أما العملاء المستضافون فعليهم التواصل مع مزود الاستضافة الخاص بهم.

DISCOURSE_MAX_ADMIN_API_REQS_PER_MINUTE: 60

حدود معدل واجهة برمجة تطبيقات إضافة Data Explorer

DISCOURSE_MAX_DATA_EXPLORER_API_REQ_MODE: الافتراضي warn، حيث يُطبَّق هذا الحد بشكل افتراضي. (الخيارات الأخرى هي block، warn+block، وnone)

DISCOURSE_MAX_DATA_EXPLORER_API_REQS_PER_10_SECONDS: 2

ملاحظة: الطلبات المُرسلة عبر واجهة Data Explorer لا تُحتسب ضمن حد المعدل.

ماذا يجب أن أفعل إذا وصلت إلى حد المعدل وتعرضت للتقييد (Throttling)؟

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

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

تحذير حول الجدار الناري والوكيل العكسي! :warning:

إذا كنت تشغّل وكيلًا عكسيًا (Reverse Proxy) غير مُهيأ بشكل صحيح، فقد يعتقد Discourse أن جميع الطلبات قادمة من عنوان IP واحد، ومن المرجح جدًا أن تصل إلى حدود المعدل مبكرًا. تأكد من تكوين وكيلك العكسي لتحويل عنوان IP بشكل صحيح.

كيف يمكنني تعديل هذه الحدود؟

لتعديل الحدود، أضف التغيير المطلوب إلى قسم env في ملف app.yml الخاص بك.

:discourse: إذا كنت مستضافًا بواسطة Discourse، وتعمل على خطة Enterprise، فتواصل مع team@discourse.org إذا كنت بحاجة إلى تعديل أي من هذه الحدود.

لا يمكن تعديل حدود المعدل العالمية على خطط Free أو Starter أو Pro أو Business.

60 إعجابًا
Troubleshooting a 429 (rate limit)
Is there a limit of API requests?
Rate limits for API users
Any way to turn off RateLimiter temporarily for bulk creation by admin?
Changing/removing API rate limit with category creation
Internal links not oneboxing in private messages
How to improve the forum api call number limit?
Rate limit errors although IP is whitelisted
API rate limits
How to edit "hidden" site_settings?
How-to disable or tune rate limiting by ip address?
Error code 429 when utilising a Zapier integration
429 error when opening multiple topics
Why semrushbot and ahrefsbot are blocked by default?
Understanding /logs/report_js_error 429
Remove the ip limits
User API keys specification
Discourse API Generating 429
How to disable api limits?
Global rate API Limit is not working on live server
How to avoid throttling limits with admin API key?
Set Environmental Variables
Discourse REST API Documentation
Increase rate limit for API?
How do I disable rate limiting from a single IP
Generate User Api Key Without User Approval
Default value for id_10_secs_limit
Semantic Search API
Self-hosting Index
Fetch All Posts from a Topic Using the API
Issues when I enable Component, maybe Right Sidebar Blocks?
Create and configure an API key
Direct URL for the "email me a login link" feature
Direct URL for the "email me a login link" feature
Do not see discourse/config/site_settings.yml to set USER API limits
API rate limits
Very slow discobot certificate generation on our server
Api call returns nothing when too many requests
Uncaught (in promise) error
You Have Performed this Action Too Many Times Error
Import posts through API (time delay)
Discourse-topic-organizer causing "Slow down, too Many Requests from this IP Address"
429 too many requests good or bad ? (please help)
Enable user to Generate API key
Changing/removing API rate limit with category creation
Webhook connect to post comments to WordPress working unreliably

يبدو لي أنه إذا كان لديك web.ratelimited.template.yml مثبتًا، فلن تكون لهذه أي أهمية نظرًا لأن NGINX يحد من المعدل قبل أن يصل إلى Discourse، أليس كذلك؟

هذا ما يبدو لي من سجلات nginx الخاصة بي.

حلي قصير المدى هو إضافة عنوان IP الخاص بي إلى قائمة IP المحلية، بحيث يتجاوز NGINX. أعتقد أن الشيء الذي يجب فعله هو إزالة القالب ذي المعدل المحدد لجعله ذا معنى؟

إعجابَين (2)

تحذير جدار الحماية والبروكسي! :warning:

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

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

ما هي الطريقة الموصى بها (رأس محدد؟) لإعادة توجيه عنوان IP الخاص بالطلب الأصلي؟

ذو صلة

إعجاب واحد (1)

هل يمكن لأحد مساعدتي في فهم هذا الإعداد التكويني من فضلك؟

هل أفهم بشكل صحيح أن هذا تم تعيينه بالفعل على 1 وأن حدود المعدل تم تعيينها افتراضيًا بالفعل لكل مستخدم بدلاً من لكل عنوان IP (إذا كان المستخدم من المستوى 1 أو أعلى)؟

إعجاب واحد (1)

في الواقع لم يكن موجودًا ليجعلني أحدد واحدًا أو أكثر من هذه الإعدادات.

my script كان دائمًا يحترم رأس Retry-After، كما يمكننا أن نرى من السطر الأصلي 101؛

retry_after = r.headers.get("Retry-After")

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

لذلك، مضاعفات بعض هذه الإعدادات من تحسين تسليم البريد الإلكتروني الافتراضي عبر mail-receiver والتي لا تزال مهمة.