داده های تجزیه و تحلیل در صف حرف مرده Qpidd گیر کرده است

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

علامت

داده‌های تحلیلی در رابط کاربری Edge به دلیل عدم انتقال پیام‌های تحلیلی توسط سرور Qpidd به PostgreSQL، وجود ندارند. در Edge، کامپوننت edge-qpid-server با سرور Qpidd مطابقت دارد.

Qpidd برای هر گروه تحلیلی دو صف نگهداری می‌کند:

  • ax-q-axgroup001-consumer-group-001

    این صف، پیام‌های تحلیلی ارسال‌شده از پردازنده‌های پیام و روترها را در خود جای می‌دهد. پیام‌ها توسط edge-qpid-server از اینجا دریافت می‌شوند که پیام‌ها را تجزیه کرده و در PostgreSQL درج می‌کند. پس از پردازش موفقیت‌آمیز پیام‌ها، آنها از صف حذف می‌شوند.

  • ax-q-axgroup001-consumer-group-001-dl

    این صف، صف نامه‌های از کار افتاده (dead letter queue) است. این صف به عنوان مقصد پیام‌هایی عمل می‌کند که edge-qpid-server نتوانسته آنها را پردازش کند و بنابراین دیگر تمایلی به دریافت آنها ندارد. این صف معمولاً زمانی پر می‌شود که تعداد تحویل از حداکثر تعداد مجاز فراتر رود، یا اگر PostgreSQL به دلیل خطاهای زمان اجرا، درج داده‌های جدید را رد کند.

پیام خطا

علت اصلی می‌تواند خطاهای مختلف زمان اجرا از کامپوننت edge-qpid-server باشد. معمولاً اگر edge-qpid-server یک خطای زمان اجرا از PostgreSQL دریافت کند، اگر صف حروف مرده از قبل وجود نداشته باشد، آن را ایجاد می‌کند و سپس پیام زیر را به آنجا ارسال می‌کند:

yyyy-MM-dd HH:mm:ss,SSS ax-q-axgroup001-consumer-group-001-persistpool-thread-6 WARN c.a.a.m.MessageConsumer - MessageConsumer.process() : Sending message batch to the DLQ.

علل احتمالی

علت توضیحات دستورالعمل‌های عیب‌یابی قابل اجرا برای
پیام‌ها در صف نامه‌های از کار افتاده qpidd گیر کرده‌اند edge-qpid-server نمی‌توانست پیام‌هایی را که از Qpidd broker می‌خواند، درک کند یا قادر به ارسال پیام‌ها به PostgreSQL نبود. کاربران ابر خصوصی Edge

مراحل تشخیص رایج

برای مشاهده آمار صف Qpidd، دستور زیر را اجرا کنید:

qpid-stat -q

خروجی، مجموعه صف‌های ثبت‌شده در کارگزار را برمی‌گرداند. اگر صفی که نام آن به "-dl" ختم می‌شود، پیام‌های انباشته‌شده داشته باشد، در این صورت پیام‌هایی در صف حروف مرده گیر کرده‌اند.

Queues
  queue                                     dur  autoDel  excl  msg   msgIn  msgOut  bytes  bytesIn  bytesOut   cons  bind
  ========================================================================================================================
  ax-q-axgroup-001-consumer-group-001       Y                   0     185    185     0       13.8m   13.8m      6      2
  ax-q-axgroup-001-consumer-group-001-dl    Y                   0     70     70      0        3.9m    3.9m      0      2

علت: پیام‌ها در صف نامه‌های از کار افتاده qpidd گیر کرده‌اند

تشخیص

این وضعیت می‌تواند تحت سناریوهای زیر اتفاق بیفتد:

  1. در گذشته یک ارتقا انجام شده بود که در آن زمان PostgreSQL از کار افتاده بود.
  2. قطعی موقت PostgreSQL به دلیل مشکلات شبکه.
  3. edge-qpid-server تلاش کرد تا پیامی را به PostgreSQL ارسال کند، اما PostgreSQL خطای زمان اجرا را بازگرداند.

وضوح تصویر

  1. نام صف‌ها را از مراحل تشخیص مشترک یادداشت کنید. برای مثال:

    • ax-q-axgroup-001-consumer-group-001
    • ax-q-axgroup-001-consumer-group-001-dl
  2. دستور qpid-tool را اجرا کنید تا یک اعلان qpid تعاملی وارد شود:

    qpid-tool

    این دستور مقدار زیر را برمی‌گرداند:

    Management Tool for QPID
    qpid:
  3. برای دریافت لیستی از کارگزاران فعال list broker اجرا کنید:

    list broker

    این دستور مقدار زیر را برمی‌گرداند:

    Object Summary:
    ID   Created   Destroyed  Index
    =======================================
    125  21:00:00  -          amqp-broker

    که در آن ستون ID شناسه کارگزار را مشخص می‌کند.

  4. به شناسه کارگزار توجه کنید. در مثال، 125 است.

  5. دستور زیر را اجرا کنید تا پیام‌ها از صف نامه‌های از کار افتاده به صف اصلی منتقل شوند:

    call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}

    این دستور مقدار زیر را برمی‌گرداند:

    OK (0) - {}

    اگر خروجی وجود نداشته باشد، یعنی کاری برای انجام دادن وجود نداشته است، یعنی هیچ پیامی برای انتقال وجود ندارد. اگر OK(0) نمی‌بینید، باید با پشتیبانی Apigee Edge تماس بگیرید.

  6. از ترمینال qpid-tool خارج شوید.

    quit
  7. ۵ دقیقه صبر کنید و سپس مراحل تشخیص را دوباره از مراحل تشخیص مشترک اجرا کنید. تأیید کنید که پیام‌های موجود در صف واقعی پردازش می‌شوند و مطمئن شوید که تعداد پیام‌های مرده روی ۰ باقی می‌ماند.

اگر مشکل همچنان پابرجا بود، به بخش بعدی بروید.

باید اطلاعات تشخیصی جمع‌آوری شود

اگر مشکل حتی پس از دنبال کردن دستورالعمل‌های بالا ادامه داشت، لطفاً اطلاعات تشخیصی زیر را جمع‌آوری کنید. با پشتیبانی Apigee Edge تماس بگیرید و آنها را به اشتراک بگذارید:

  • گزارش‌های Qpidd: /opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log
  • لاگ‌های Postgresql: /opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
  • گزارش‌های Edge-qpid-server: /opt/apigee/var/log/edge-qpid-server/logs/system.log
  • گزارش‌های سرور Edge-postgres: /opt/apigee/var/log/edge-postgres-server/logs/system.log
  • آمار صف Qpidd:

    qpid-stat -q
  • گروه تحلیلی که توسط دستور curl زیر برگردانده شده است:

    curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax