/ الدليل / الملعب / tda
● مجتمع irockel ⚡ فوري

tda

بواسطة irockel · irockel/tda

منح Claude القدرة على قراءة حفظات خيوط Java — الأقفال الدائرية (deadlocks)، الخيوط طويلة المدى، تثبيت الخيوط الافتراضية، محاصري الطرق الأصلية.

TDA (محلل حفظات الخيوط) يأتي بواجهة رسومية وبوضع MCP. في وضع JAR بلا واجهة، فإنه يعرّض 6+ أدوات لتحليل سجلات الحفظات، وتلخيص الحالة، واكتشاف الأقفال الدائرية، وتحديد موقع الخيوط طويلة المدى، وتحليل تثبيت ناقل الخيوط الافتراضية.

لماذا تستخدمه

الميزات الأساسية

عرض مباشر

كيف يبدو في الممارسة

tda.replay ▶ جاهز
0/0

التثبيت

اختر العميل

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "tda": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/irockel/tda"
      ],
      "_inferred": true
    }
  }
}

افتح Claude Desktop → Settings → Developer → Edit Config. أعد التشغيل بعد الحفظ.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "tda": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/irockel/tda"
      ],
      "_inferred": true
    }
  }
}

يستخدم Cursor نفس مخطط mcpServers مثل Claude Desktop. إعدادات المشروع أولى من الإعدادات العامة.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "tda": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/irockel/tda"
      ],
      "_inferred": true
    }
  }
}

انقر على أيقونة MCP Servers في شريط Cline الجانبي، ثم "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "tda": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/irockel/tda"
      ],
      "_inferred": true
    }
  }
}

نفس الصيغة مثل Claude Desktop. أعد تشغيل Windsurf لتطبيق التغييرات.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "tda",
      "command": "TODO",
      "args": [
        "See README: https://github.com/irockel/tda"
      ]
    }
  ]
}

يستخدم Continue مصفوفة من كائنات الخادم بدلاً من خريطة.

~/.config/zed/settings.json
{
  "context_servers": {
    "tda": {
      "command": {
        "path": "TODO",
        "args": [
          "See README: https://github.com/irockel/tda"
        ]
      }
    }
  }
}

أضف إلى context_servers. يعيد Zed التحميل تلقائيًا عند الحفظ.

claude mcp add tda -- TODO 'See README: https://github.com/irockel/tda'

أمر من سطر واحد. تحقق باستخدام claude mcp list. احذف باستخدام claude mcp remove.

حالات الاستخدام

استخدامات عملية: tda

تشخيص تعليق JVM من حفظات الخيوط مع TDA

👤 مهندسو backend بلغة Java ⏱ ~20 min advanced

متى تستخدمه: JVM الإنتاج أصبح غير مستجيب؛ لديك سلسلة من حفظات kill -3.

المتطلبات الأساسية
  • تنزيل tda.jar — github.com/irockel/tda releases
  • تثبيت Java 21+ — لميزات تحليل Project Loom
الخطوات
  1. تحليل السجل
    parse_log على /tmp/threaddumps.log. لخّص: عدد الحفظات، الخيوط لكل حفظة.✓ تم النسخ
    → نظرة عامة على الحفظة
  2. التحقق من وجود أقفال دائرية
    check_deadlocks عبر جميع الحفظات. أي خيوط، أي أقفال؟✓ تم النسخ
    → دورات أقفال دائرية إن وجدت
  3. البحث عن الخيوط طويلة المدى
    find_long_running الخيوط المستمرة عبر جميع الحفظات. ماذا تفعل؟✓ تم النسخ
    → قائمة مع رؤوس المكدس

النتيجة: خيط محدد + قفل + مسار رمز مسؤول عن التعليق.

المزالق
  • البرامج النصية التي تطبع على stdout تفسد تدفق JSON-RPC — استخدم java -Djava.awt.headless=true -jar tda.jar --mcp دون التفافها في أي برنامج نصي يطبع أيضاً

البحث عن تثبيت ناقل الخيوط الافتراضية في تطبيق Loom

👤 الفرق التي تتبنى Project Loom ⏱ ~30 min advanced

متى تستخدمه: الخيوط الافتراضية لا توفر التزامن الذي توقعته — اشتبه في التثبيت.

الخطوات
  1. التقط الحفظات أثناء الحمل
    اجمع حفظات الخيوط عند الحمل الذروة؛ حللها parse_log في TDA.✓ تم النسخ
    → الحفظات محملة
  2. تحليل
    analyze_virtual_threads. عرض مناطق تثبيت الناقل ورمز Java الذي يثبتها (عادةً كتل synchronized أو طرق أصلية).✓ تم النسخ
    → قائمة التثبيت مع تلميحات المصدر

النتيجة: إصلاحات موجهة (ReentrantLock بدلاً من synchronized، إلخ) مدعومة بالأدلة.

تحديد الخيوط العالقة في الطرق الأصلية

👤 مهندسو الأداء في التطبيقات الثقيلة على JNI ⏱ ~15 min advanced

متى تستخدمه: يتكامل تطبيقك مع مكتبات أصلية وتشك في استدعاءات أصلية محجوبة.

الخطوات
  1. قائمة الخيوط المحجوبة الأصلية
    get_native_threads للحفظة #3. أي طرق أصلية هي عالقة فيها؟✓ تم النسخ
    → الخيط + قائمة الإطار الأصلي

النتيجة: مراجعة موجهة لمواقع استدعاء JNI محددة.

التركيبات

اجمعها مع خوادم MCP أخرى لتحقيق نتائج x10

ربط النتائج على مستوى الخيط مع مقاييس JVM

TDA يقول أن القفل X متنافس — أظهر JVM thread_blocked_seconds للنافذة ذاتها من Prometheus.✓ تم النسخ
tda + github

تحويل النتائج إلى مسائل مع مؤشرات الرمز

بالنسبة لأفضل 3 نتائج TDA، افتح مشكلة GitHub تربط خطوط المصدر Java المريبة.✓ تم النسخ

الأدوات

ما يوفره هذا الـ MCP

الأداةالمدخلاتمتى تستدعيهاالتكلفة
parse_log path: str الخطوة الأولى، دائماً local CPU
get_summary نظرة عامة قبل التنقيب 0
check_deadlocks تشخيص التعليق 0
find_long_running min_dumps?: int الخيوط المستمرة 0
analyze_virtual_threads تشخيص Loom 0
get_native_threads dump_index?: int الاشتباه في JNI 0
get_zombie_threads إعادة تحديد الموقع الذاكرة غير المحلولة 0
clear إعادة تعيين قبل تحليل سجل جديد 0

التكلفة والحدود

تكلفة التشغيل

حصة API
بلا
الرموز لكل استدعاء
حفظات الخيوط ضخمة — 20 ألف رمز+ لكل حفظة كاملة. لخّص قبل حفظ للدردشة
التكلفة المالية
مجاني
نصيحة
استخدم get_summary/find_long_running للتضييق قبل طلب المكدسات الكاملة

الأمان

الصلاحيات والأسرار ونطاق الأثر

تخزين بيانات الاعتماد: بلا
نقل البيانات الخارجي: بلا — تحليل ملف محلي بالكامل

استكشاف الأخطاء

الأخطاء الشائعة وحلولها

MCP handshake corrupts

قم بتشغيل JAR تماماً وفقاً للـ README (بدون واجهة + --mcp، لا برامج نصية تغليفية تطبع على stdout)

parse_log fails on custom dump formats

تأكد من أن الحفظات بصيغة HotSpot القياسية؛ بعض APMs تضيف بادئات لا يمكن لـ TDA تحليلها

Memory blows up on huge logs

زد كومة JVM بـ tda.jar: -Xmx4g أو اقسم السجل إلى أجزاء

البدائل

tda مقابل البدائل

البديلمتى تستخدمهاالمقايضة
FastThread / محللات عبر الإنترنت أخرىأنت موافق على رفع الحفظات إلى جهة خارجيةالبيانات تترك شبكتك
async-profiler + رسوم بيانية اللهبلديك تحكم حي وتريد profiler أخذ عينات وليس الحفظاتأرتيفاكت مختلف؛ يحتاج إلى إرفاق الوكيل

المزيد

الموارد

📖 اقرأ ملف README الرسمي على GitHub

🐙 تصفح القضايا المفتوحة

🔍 تصفح أكثر من 400 خادم MCP و Skills