شركة
في الواقع ، هذه ليست سوى لقطات كل ثانية من pg_stat_activity ، ولكن هناك نقاط مهمة:
- يتم تخزين جميع المعلومات المتراكمة في ذاكرة الوصول العشوائي فقط ، ويتم تنظيم مقدار الذاكرة المستهلكة من خلال عدد السجلات المخزنة الأخيرة.
- تمت إضافة حقل معرّف الاستعلام - نفس معرّف الاستعلام من الامتداد pg_stat_statements (يلزم التثبيت المسبق).
- تمت إضافة حقل top_level_query - نص الاستعلام الذي تم استدعاء الاستعلام الحالي منه (في حالة استخدام pl / pgsql)
قائمة كاملة بالحقول pg_active_session_history:
العمود | اكتب ------------------ + -------------------------- ash_time | الطابع الزمني مع المنطقة الزمنية مؤرخة | اسم بيانات oid | معرف النص | عدد صحيح يستخدم معرف | اسم مستخدم oid | نص application_name | client_addr نصي | أرسل client_hostname | client_port نصي | عدد صحيح backend_start | الطابع الزمني بالمنطقة الزمنية xact_start | الطابع الزمني مع استعلام المنطقة الزمنية | الطابع الزمني مع المنطقة الزمنية state_change | الطابع الزمني مع المنطقة الزمنية wait_event_type | نص wait_event | حالة النص | backend_xid للنص | xid backend_xmin | xid top_level_query | استعلام نصي | معرّف الاستعلام النصي | bigint backend_type | نص
لا توجد حزمة جاهزة للتثبيت بعد. يُقترح تنزيل الكود المصدري وبناء المكتبة بنفسك. تحتاج أولاً إلى تثبيت حزمة "devel" لخادمك وتعيين المسار إلى pg_config في متغير PATH. نجمعها:
قرص مضغوط pgsentinel / src
جعل
جعل تثبيت
أضف معلمات إلى postgres.conf:
Shared_preload_libraries = 'pg_stat_statements ، pgsentinel'
Track_activity_query_size = 2048
pg_stat_statements.track = الكل# عدد السجلات الحديثة المحفوظة في الذاكرة
pgsentinel_ash.max_entries = 10000
أعد تحميل PostgreSQL وأنشئ امتدادًا:
إنشاء تمديد pgsentinel ؛
تسمح لنا المعلومات المتراكمة بالإجابة على أسئلة مثل:
- ما التوقعات التي استغرقت الجلسات معظم الوقت فيها؟
- ما هي الجلسات الأكثر نشاطا؟
- ما هي الطلبات الأكثر نشاطا؟
يمكنك بالطبع الحصول على إجابات لهذه الأسئلة باستخدام استعلامات SQL ، ولكن من الملائم أكثر أن ترى ذلك بوضوح على الرسم البياني ، مع إبراز الفواصل الزمنية التي تهم الماوس. يمكنك القيام بذلك باستخدام برنامج مجاني
عند بدء التشغيل ، يتحقق PASH-Viewer (بدءًا من الإصدار 0.4.0) من وجود طريقة العرض pg_active_session_history ، وإذا كان موجودًا ، فإنه يقوم بتحميل السجل المتراكم بالكامل منه ويستمر في قراءة البيانات الواردة الجديدة ، وتحديث الرسم البياني كل 15 ثانية.
المصدر: www.habr.com