أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
المشكلة
تطبيق العميل يتلقى خطأ انتهاء المهلة المحددة لطلبات البيانات من واجهة برمجة التطبيقات أو أنه يتم إنهاء الطلب فجأة بينما لا يزال طلب البيانات من واجهة برمجة التطبيقات قيد التنفيذ على Apigee.
ستلاحظ رمز الحالة 499
لطلبات البيانات من واجهة برمجة التطبيقات هذه في "مراقبة واجهة برمجة التطبيقات"
سجلات NGINX Access ستظهر لك أحيانًا رموز حالة مختلفة في "إحصاءات واجهة برمجة التطبيقات" لأنّها
تعرض رمز الحالة الذي يعرضه معالج الرسائل.
رسالة الخطأ
قد ترى تطبيقات العميل أخطاءً مثل:
curl: (28) Operation timed out after 6001 milliseconds with 0 out of -1 bytes received
ما هي أسباب انتهاء مهلة العميل؟
المسار النموذجي لطلب واجهة برمجة التطبيقات على نظام Edge الأساسي هو العميل > جهاز التوجيه > معالج الرسائل > خادم الخلفية كما هو موضح في الشكل التالي:
تم إعداد أجهزة التوجيه ومعالِجات الرسائل في منصة Apigee Edge باستخدام معلومات لضمان عدم استغراق طلبات البيانات من واجهة برمجة التطبيقات وقتًا طويلاً جدًا حتى يكتمل.
عملية استبعاد للقناة لمهلة معيّنة على العميل
يمكن ضبط تطبيقات العميل باستخدام قيمة مهلة مناسبة بناءً على احتياجاتك.
يتم تحديد مهلة مهلات محددة بواسطة نظام التشغيل لدى العملاء، مثل متصفّحات الويب والتطبيقات المتوافقة مع الأجهزة الجوّالة.
انتهت المهلة على جهاز التوجيه
وتبلغ المهلة التلقائية التي تم ضبطها في أجهزة التوجيه 57 ثانية. هذا هو الحد الأقصى لمقدار الوقت يمكن تنفيذ الخادم الوكيل لواجهة برمجة التطبيقات من وقت تلقّي طلب البيانات من واجهة برمجة التطبيقات على Edge حتى يتم الاستجابة مرة أخرى، بما في ذلك استجابة الخلفية وجميع السياسات التي يتم تنفيذها. الإعداد التلقائي أن يتم تجاوز المهلة في أجهزة التوجيه والمضيفات الظاهرية كما هو موضح في ضبط مهلة وحدات الإدخال والإخراج على أجهزة التوجيه
انتهت المهلة في معالِجات معالجة الرسائل
المهلة التلقائية التي تم ضبطها في معالِجات الرسائل هي 55 ثانية. هذا هو الحد الأقصى للمبلغ الذي يمكن أن يستغرقه خادم الخلفية لمعالجة الطلب والرد على المعالِج. يمكن إلغاء المهلة التلقائية في "معالجات الرسائل" أو ضمن واجهة برمجة التطبيقات. الوكيل كما هو موضح في ضبط مهلة وحدات الإدخال والإخراج في معالجات الرسائل.
إذا أنهى العميل الاتصال بجهاز التوجيه قبل انتهاء مهلة خادم وكيل واجهة برمجة التطبيقات،
خطأ المهلة لطلب واجهة برمجة التطبيقات المحدد. يتم تسجيل رمز الحالة 499 Client
Closed Connection
في جهاز التوجيه لهذه الطلبات، والتي يمكن ملاحظتها في واجهة برمجة التطبيقات.
مراقبة وسجلات NGINX Access
الأسباب المحتملة
في Edge، تشمل الأسباب الشائعة للخطأ 499 Client Closed Connection
ما يلي:
السبب | الوصف | إرشادات استكشاف الأخطاء وإصلاحها التي تنطبق على |
---|---|---|
إنهاء العميل الاتصال فجأة | يحدث ذلك عندما يغلق العميل الاتصال نتيجة إلغاء المستخدم لعملية طلبك قبل اكتماله. | مستخدمو السحابة الإلكترونية العامة والخاصة |
مهلة تطبيق العميل | يحدث ذلك عند انتهاء مهلة تطبيق العميل قبل أن يتاح لخادم وكيل واجهة برمجة التطبيقات معالجة وإرسال الرد. يحدث هذا عادةً عندما تكون مهلة العميل أقل انتهاء مهلة الموجه. | مستخدمو السحابة الإلكترونية العامة والخاصة |
خطوات التشخيص الشائعة
استخدِم إحدى الأدوات/الأساليب التالية لتشخيص هذا الخطأ:
- مراقبة واجهة برمجة التطبيقات
- سجلات وصول NGINX
مراقبة واجهة برمجة التطبيقات
لتشخيص الخطأ باستخدام مراقبة واجهة برمجة التطبيقات:
- انتقل إلى تحليل > مراقبة واجهة برمجة التطبيقات > التحقيق في الصفحة.
- فلتِر البيانات بحثًا عن
4xx
أخطاء واختَر الإطار الزمني. - ارسم رمز الحالة مقابل الوقت.
- اختَر خلية تحتوي على أخطاء
499
كما هو موضّح أدناه: - ستظهر لك معلومات حول الخطأ
499
في اللوحة اليسرى على النحو التالي: كما هو موضح أدناه: - في الجزء الأيسر، انقر على عرض السجلات.
من نافذة سجلات حركة المرور، اطّلِع على التفاصيل التالية لبعض
499
. الأخطاء:- الطلب: يوفر هذا طريقة الطلب ومعرّف الموارد المنتظم (URI) المستخدَم لإجراء الاتصالات
- مدة الردّ:يعرض هذا الحقل إجمالي الوقت المنقضي للطلب.
يمكنك أيضًا الحصول على جميع السجلّات باستخدام أداة مراقبة واجهة برمجة التطبيقات. واجهة برمجة تطبيقات GET السجلات. بالنسبة مثلًا، من خلال إرسال طلبات بحث في السجلات لـ
org
وenv
timeRange
وstatus
، سيكون بإمكانك تنزيل جميع سجلات للمعاملات التي انتهت مهلتها للعميل.نظرًا لأنّ مراقبة واجهة برمجة التطبيقات تضبط الخادم الوكيل على
-
في HTTP499
يمكنك استخدام واجهة برمجة التطبيقات (Logs API) للحصول على الخادم الوكيل المرتبط للمضيف الظاهري والمسار.For example :
curl "https://apimonitoring.enterprise.apigee.com/logs/apiproxies?org=ORG&env=ENV&select=https://VIRTUAL_HOST/BASEBATH" -H "Authorization: Bearer $TOKEN"
- راجِع وقت الاستجابة للاطّلاع على أخطاء
499
الإضافية وتحقَّق مما إذا كان يكون وقت الاستجابة ثابتًا (لنفترض أنه 30 ثانية) عبر جميع499
خطأ.
سجلات وصول NGINX
لتشخيص الخطأ باستخدام سجلات وصول NGINX:
- إذا كنت أحد مستخدمي السحابة الإلكترونية الخاصة، يمكنك استخدام سجلات وصول NGINX لتحديد
المعلومات الأساسية حول أخطاء HTTP
499
. - تحقَّق من سجلّات وصول NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- البحث لمعرفة ما إذا كانت هناك أي أخطاء
499
خلال مدة محدّدة (إذا حدثت المشكلة في الماضي) أو إذا كانت هناك أي طلبات لا تزال تخفق مع499
- ضَع في اعتبارك المعلومات التالية لبعض أخطاء
499
:- إجمالي وقت الاستجابة
- عنوان URI للطلب
- وكيل المستخدم
نموذج الخطأ 499 من سجلّ الوصول إلى NGINX:
2019-08-23T06:50:07+00:00 rrt-03f69eb1091c4a886-c-sy 50.112.119.65:47756 10.10.53.154:8443 10.001 - - 499 - 422 0 GET /v1/products HTTP/1.1 - okhttp/3.9.1 api.acme.org rrt-03f69eb1091c4a886-c-sy-13001-6496714-1 50.112.119.65 - - - - - - - -1 - - dc-1 router-pod-1 rt-214-190301-0020137-latest-7d 36 TLSv1.2 gateway-1 dc-1 acme prod https -
في هذا المثال، نرى المعلومات التالية:
- إجمالي وقت الاستجابة:
10.001
ثانية. وهذا يشير إلى أن العميل انتهت بعد 10001 ثانية - الطلب:
GET /v1/products
- المضيف:
api.acme.org
- وكيل المستخدم:
okhttp/3.9.1
- تحقَّق لمعرفة ما إذا كان إجمالي وقت الاستجابة ووكيل المستخدم متسقين.
عبر جميع أخطاء
499
.
السبب: أغلق العميل الاتصال فجأة
التشخيص
- عندما يتم استدعاء واجهة برمجة تطبيقات من تطبيق من صفحة واحدة يعمل في متصفح أو تطبيق للأجهزة الجوّالة، سيُلغي المتصفّح الطلب في حال إغلاق المستخدم المتصفّح فجأة أو انتقاله إلى صفحة ويب أخرى في علامة التبويب نفسها، أو يؤدي إلى إيقاف تحميل الصفحة عن طريق النقر إيقاف التحميل
- في هذه الحالة، ستختلف عادةً المعاملات التي تحمل حالة HTTP
499
. وقت معالجة الطلب (وقت الاستجابة) لكل طلب. -
يمكنك تحديد ما إذا كان ذلك هو السبب من خلال مقارنة وقت الاستجابة والتحقق مما إذا
ويختلف الأمر عن كل خطأ من أخطاء
499
باستخدام مراقبة واجهة برمجة التطبيقات أو الوصول إلى NGINX السجلات كما هو موضّح في خطوات التشخيص الشائعة.
الدقة
- هذا أمر طبيعي ولا داعي للقلق عادةً إذا حدثت أخطاء
499
في HTTP تحدث بكميات صغيرة. -
وإذا كانت تحدث كثيرًا في مسار عنوان URL نفسه، قد يرجع ذلك إلى أنّ الخادم الوكيل المرتبط بهذا المسار بطيء جدًا ولا يكون المستخدمون على استعداد للانتظار.
بعد معرفة الخادم الوكيل الذي قد يتأثر، استخدم وقت الاستجابة لوحة بيانات التحليل لإجراء مزيد من التحقيقات حول أسباب وقت استجابة الخادم الوكيل.
- في هذه الحالة، حدد الوكيل المتأثر بالخطوات الواردة في خطوات التشخيص الشائعة.
- استخدم لوحة بيانات تحليل وقت الاستجابة لإجراء مزيد من التحقيق حول أسباب وقت استجابة الخادم الوكيل لحلّ المشكلة.
- وإذا وجدت أن وقت الاستجابة متوقع للخادم الوكيل المحدد، فربما يكون لإبلاغ المستخدمين بأنّ هذا الخادم الوكيل سيستغرق بعض الوقت للردّ.
السبب: انتهت مهلة تطبيق العميل
يمكن أن يحدث هذا في عدد من السيناريوهات.
-
من المتوقع أن يستغرق اكتمال الطلب وقتًا معينًا (لنفترض 10 ثوانٍ)
في ظل ظروف التشغيل العادية. ومع ذلك، تم تعيين تطبيق العميل باستخدام
المهلة النهائية (لنفترض أنها 5 ثوانٍ) والتي تتسبب في انتهاء مهلة تطبيق العميل قبل
اكتمل طلب البيانات من واجهة برمجة التطبيقات، ما يؤدي إلى الانتقال إلى
499
. في هذه الحالة، نحتاج إلى تحديد العميل إلى قيمة مناسبة. - يستغرق الخادم المستهدف أو وسيلة الشرح المستهدفة وقتًا أطول من المتوقع. في هذه الحالة، تحتاج إلى إصلاح المكون بالإضافة إلى ضبط قيم المهلة بشكل مناسب.
- لم يعد العميل بحاجة إلى الرد، وبالتالي تم إيقافه. يمكن أن يحدث هذا بسبب واجهات برمجة التطبيقات لمعدل التكرار مثل الإكمال التلقائي أو الاستطلاع القصير.
التشخيص
مراقبة واجهة برمجة التطبيقات أو سجلات وصول NGINX
يمكنك تشخيص الخطأ باستخدام مراقبة واجهة برمجة التطبيقات أو سجلات وصول NGINX:
- تحقَّق من سجلات واجهة برمجة التطبيقات لمراقبة واجهات برمجة التطبيقات أو سجلات وصول NGINX لمعاملات HTTP
499
كما هو موضّح في خطوات التشخيص الشائعة: - حدِّد ما إذا كان وقت الاستجابة ثابتًا لجميع أخطاء
499
. - إذا كانت الإجابة "نعم"، قد يرجع ذلك إلى ضبط تطبيق عميل معيّن لمهلة محددة.
من جانبها. إذا كان خادم وكيل أو خادم مستهدف يستجيب ببطء، فستنتهي المهلة المحددة للعميل.
قبل انتهاء مهلة الخادم الوكيل، ما ينتج عنه كميات كبيرة من
499s
لبروتوكول HTTP مسار معرّف الموارد المنتظم (URI) نفسه. في هذه الحالة، حدِّد وكيل المستخدم من سجلات وصول NGINX التي يمكن أن يساعدك في تحديد تطبيق العميل المحدد. - وقد يكون من الممكن أيضًا وجود جهاز موازنة الحمل أمام Apigee مثل Akamai، F5 وAWS ELB وما إلى ذلك في حال تشغيل Apigee خلف جهاز موازنة حمل مخصَّص، سيطلب يجب ضبط المهلة المحدّدة لجهاز موازنة الحمل لتتجاوز مهلة واجهة برمجة التطبيقات في Apigee. من افتراضيًا، تنتهي مهلة جهاز توجيه Apigee بعد 57 ثانية، لذا فمن المناسب ضبط أي طلب مهلة 60 ثانية على جهاز موازنة الحمل.
التتبّع
تشخيص الخطأ باستخدام ميزة "تتبُّع"
إذا كانت المشكلة لا تزال نشطة (لا تزال هناك 499
أخطاء)، عليك تنفيذ
الخطوات التالية:
- تفعيل جلسة تتبُّع لواجهة برمجة التطبيقات المتأثرة في واجهة مستخدم Edge.
- إذا كان لديك طلب بيانات من واجهة برمجة التطبيقات، يمكنك إما الانتظار إلى حين حدوث الخطأ. ويمكنك بعد ذلك إجراء بعض طلبات البيانات من واجهة برمجة التطبيقات. وإعادة إنتاج الخطأ.
- تحقق من الوقت المنقضي في كل مرحلة وقم بتدوين المرحلة التي يتسم فيها معظم الوقت ينفقه.
- إذا لاحظت الخطأ مع أطول وقت انقضى مباشرةً بعد إحدى
المراحل التالية، فإنها تشير إلى أن خادم الخلفية بطيء أو يستغرق وقتًا طويلاً
لمعالجة الطلب:
- تم إرسال الطلب إلى الخادم الهدف.
- سياسة ميزات المكالمة
في ما يلي نموذج لتتبُّع واجهة المستخدم يعرض مهلة المدخل بعد انتهاء الطلب يتم إرسالها إلى الخادم الهدف:
الدقة
- راجع أفضل الممارسات لضبط مهلة وحدات الإدخال والإخراج لمعرفة قيم المهلة التي يجب ضبطها على المكوّنات المختلفة المضمّنة في تدفق طلب واجهة برمجة التطبيقات من خلال Apigee Edge.
- تأكَّد من ضبط قيمة مهلة مناسبة في تطبيق العميل وفقًا لما يلي: وأفضل الممارسات.
في حال استمرار المشكلة، انتقِل إلى ضرورة جمع معلومات التشخيص .
يجب جمع معلومات التشخيص
في حال استمرار المشكلة، اجمع معلومات التشخيص التالية، ثم تواصَل مع فريق دعم Apigee Edge.
إذا كنت أحد مستخدمي السحابة الإلكترونية العامة، يُرجى تقديم المعلومات التالية:
- اسم المؤسسة
- اسم البيئة
- اسم الخادم الوكيل لواجهة برمجة التطبيقات
- إكمال الأمر
curl
المستخدَم لإعادة إنتاج خطأ المهلة - تتبُّع ملف طلبات البيانات من واجهة برمجة التطبيقات التي تظهر لك أخطاء في مهلة العميل لها
إذا كنت من مستخدمي السحابة الإلكترونية الخاصة، يُرجى تقديم المعلومات التالية:
- ظهور رسالة خطأ كاملة للطلبات التي تعذّر تنفيذها
- اسم البيئة
- حزمة الخادم الوكيل لواجهة برمجة التطبيقات
- تتبُّع ملف طلبات البيانات من واجهة برمجة التطبيقات التي تظهر لك أخطاء في مهلة العميل لها
- سجلّات وصول NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
) - سجلّات نظام معالج الرسائل (
/opt/apigee/var/log/edge-message-processor/logs/system.log
)