كيفية مراقبة اتصالات C3P0
-
29-09-2019 - |
سؤال
أنا أستخدم Hibernate في حرب jboss الخاصة بي ، باستخدام C3P0 لتجميع الاتصال ، وكلاهما تم تكوينه في ملف تكوين hibernate.cfg.xml في classpath الخاص بي
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
لقد رأيت Server.log إنشاء خطوط مع معلومات مثيرة للاهتمام حول تجمع الاتصال:
Debug [com.mchange.v2.resourcepool.basicResourcepool] تتبع com.mchange.v2.resourcepool.basicresourcepool@63f5e4b6 [مُدار: 10 ، غير مستخدم: 9 ، مستبعد: 0
بالنسبة لمجموعة المراقبة الخاصة بي (أنا أستخدم nagios) ، أود أن أقدم JSP يعرف عدد الاتصالات التي يتم استخدامها وعددها المجاني ، كما يقول ملف السجل.
كيف يمكنني أن أسأل C3P0 كم عدد الاتصالات المدارة وغير المستخدمة الموجودة؟
المحلول
يمكنك مراقبة تجمعات (تجمعات) الاتصال عبر JMX. من الوثائق:
تكوين وإدارة C3P0 عبر JMX
إذا كانت مكتبات JMX و JMX Mbeanserver متوفرة في بيئتك (يتم تضمينها في JDK 1.5 وما فوق) ، فيمكنك فحص وتكوين بيانات بيانات C3P0 الخاصة بك عبر أداة إدارة JMX (مثل JConsole ، مجمعة مع JDK 1.5). ستجد أن C3P0 يسجل Mbeans تحت
com.mchange.v2.c3p0
, واحد مع إحصائيات عن المكتبة ككل (تسمىC3P0Registry
) ، و mbean لكل منهماPooledDataSource
أنت تنشر. يمكنك عرض خصائص التكوين الخاصة بـ DataSource وتعديلها ، وتتبع نشاط الاتصال والبيان وتجمعات مؤشرات الترابط ، وإعادة ضبط المجمعات ومقاطع البيانات عبرPooledDataSource
ميبي. (قد ترغب في عرض مستندات API لـPooledDataSource
لتوثيق العمليات المتاحة.)
بالمناسبة ، يبدو أن هناك مكونات JMX لـ Nagios ، فأنت لا تضطر إلى استخدام JSP.
نصائح أخرى
يمكنك المراقبة مع ICINGA/NAGIOS مثل هذا.
قم بتنزيل jmxquery من رمز Google. ستحتاج إلى التحقق من المراجعة 18 مثل ذلك.
svn checkout -r 18 http://jmxquery.googlecode.com/svn/trunk/ jmxquery-read-only
قم بتنزيل هذا التصحيح. رقعة Wildcard لـ C3P0
استخدم هذا الأمر لتصحيح الكود المصدري: (تأكد من أنك في الدليل JMXQuery-Read-only/SRC/Main)
patch -p0 -i wildcard_patch.diff
الآن تنزيل أباتشي مافن واستخراجه باستخدام هذا الأمر
tar -zxvf apache-maven-*-bin.tar.gz
الآن قرص مضغوط في المجلد JmxQuery-Read-only وقم بتشغيل الأمر التالي (على افتراض أن Apache Maven و JmxQuery في نفس المجلد)
../apache-maven-*/bin/mvn compile
ثم قم بتشغيل الأمر التالي:
../apache-maven-3.0.3/bin/mvn package
يجب عليك الآن إنتاج ملف jmxquery.jar الذي يمكنك استخدامه للاستعلام عن تجمع اتصال C3P0 مثل So: (يمكن الحصول على ملف Check_jmx من مجرد تنزيل رمز JmxQuery من موقع رمز Google مثل Normal. هذا الرابط)
check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:1090/jmxrmi -O com.mchange.v2.c3p0:type=PooledDataSource* -N 1 -A numBusyConnections -w 50 -c 100