Task Queue Processor (dataskq) در DirectAdmin – راهنمای کامل مدیریت صف وظایف، دیباگ و دستورات کاربردی

DirectAdmin بسیاری از عملیات را به‌صورت فوری اجرا نمی‌کند. به‌جای آن، وظایف را در یک صف داخلی ذخیره کرده و پردازنده‌ای به نام dataskq آن‌ها را در بازه‌های زمانی مشخص اجرا می‌کند. این روش باعث کاهش بار سرور، جلوگیری از اجرای تکراری عملیات و افزایش کارایی می‌شود.

Task Queue ProcessorDebugging

~3 min read • Updated Mar 1, 2026

1. dataskq چیست و چگونه کار می‌کند؟


dataskq پردازنده داخلی DirectAdmin برای اجرای وظایف صف‌شده است. هر زمان عملیاتی نیاز به اجرا داشته باشد، DirectAdmin آن را در فایل task.queue ذخیره می‌کند و dataskq در زمان‌بندی مشخص آن را پردازش می‌کند.

مسیرها و رفتار اصلی:

  • فایل اجرایی: /usr/local/directadmin/dataskq
  • صف وظایف: /usr/local/directadmin/data/task.queue
  • زمان اجرا: هر ۱ دقیقه (قابل تغییر با dataskq_run_interval)
  • رفتار: پس از پردازش، فایل task.queue حذف می‌شود.

مزیت: وظایف مشابه فقط یک بار اجرا می‌شوند (مثلاً reload وب‌سرور پس از چند تغییر).

نکته: پس از تغییرات مهم، حداقل ۱ دقیقه صبر کنید تا dataskq اجرا شود.

---

2. مثال‌هایی از اضافه کردن وظیفه به task.queue


می‌توانید وظایف را به‌صورت دستی به صف اضافه کنید:


# ری‌استارت DirectAdmin
echo "action=directadmin&value=restart" >> /usr/local/directadmin/data/task.queue

# بازنویسی کانفیگ وب‌سرور یک کاربر
echo "action=rewrite&value=httpd&user=fred" >> /usr/local/directadmin/data/task.queue

# به‌روزرسانی DirectAdmin
echo "action=update&value=program" >> /usr/local/directadmin/data/task.queue

# اجرای nightly tally برای همه کاربران
echo "action=tally&value=all" >> /usr/local/directadmin/data/task.queue
---

3. اجرای دستی dataskq


برای اجرای فوری بدون انتظار کرون:


# اجرای معمولی
/usr/local/directadmin/dataskq d

# اجرای دیباگ (سطوح پیشنهادی: d80، d400، d800، d2000)
/usr/local/directadmin/dataskq d2000
---

4. فایل task.queue.cb چیست؟


این فایل توسط CustomBuild استفاده می‌شود و وظایف مربوط به نصب/آپدیت نرم‌افزار را نگه می‌دارد.

مسیر:


/usr/local/directadmin/data/task.queue.cb

برای پردازش فقط وظایف CustomBuild:


/usr/local/directadmin/dataskq d2000 --custombuild
---

5. محدود کردن تعداد نمونه‌های همزمان dataskq


برای جلوگیری از اجرای همزمان چند dataskq (در سرورهای بسیار بزرگ):


da config-set dataskq_max_instances 1 --restart

توصیه: مقدار پیش‌فرض بهتر است. فقط در شرایط خاص آن را تغییر دهید.

---

6. افزایش فرکانس اجرای dataskq


برای اجرای هر ۳۰ ثانیه:


da config-set dataskq_run_interval 30s --restart
---

7. اگر dataskq باعث ۱۰۰٪ CPU شد چه کنیم؟


۱. بررسی لاگ‌ها


tail -n 100 /var/log/directadmin/system.log

۲. دیباگ dataskq


killall -USR1 dataskq
tail -n 10 /var/log/directadmin/errortaskq.log

دلایل رایج:

  • Maildir بزرگ → حذف ایمیل‌های حجیم
  • لاگ‌های brute force بسیار بزرگ → کوتاه کردن brute_log_entries.list
---

8. مشکلات رایج و راه‌حل‌ها


8.1 ریست ماهانه پهنای باند انجام نشده

اگر کرون اجرا نشده بود:


echo "action=cleanreset&value=all" >> /usr/local/directadmin/data/task.queue
/usr/local/directadmin/dataskq d
echo "action=tally&value=all" >> /usr/local/directadmin/data/task.queue

فقط tally پهنای باند:


echo "action=bandwidthtally&value=all" >> /usr/local/directadmin/data/task.queue

tally کوتا:


echo "action=quotatally&value=all" >> /usr/local/directadmin/data/task.queue

بازنویسی DNS zone:


echo "action=rewrite&value=named&domain=domain.com" >> /usr/local/directadmin/data/task.queue

بازنویسی httpd برای یک کاربر:


echo "action=rewrite&value=httpd&user=fred" >> /usr/local/directadmin/data/task.queue
---

9. لیست دستورات مهم task.queue


  • ری‌استارت سرویس‌ها: action=rewrite&value=exim یا dovecot
  • بازسازی DKIM: action=rewrite&value=dkim
  • تبدیل mail partition: action=convert&value=mail_partition
  • به‌روزرسانی لایسنس: action=update&value=license
  • بک‌آپ کاربر: action=backup&type=user&value=john
  • ریستور کاربر: action=restore&type=user&value=john
  • حذف دامنه: action=delete&value=domain&select0=domain.com
  • ارسال پیام به ادمین: action=notify&value=admin&subject=...&message=...

Written & researched by Dr. Shahin Siami