محتوای آموزشی وبلاگ نتآرام
اگر ایمیل سفارش با تأخیر میرسد یا همگامسازی موجودی عقب مانده، افزایش منابع هاست اولین تصمیم نیست. ابتدا باید بفهمیم کارها اصلاً اجرا نمیشوند، اجرای آنها خطا دارد، یا سرعت انجامشان از سرعت ورود کار جدید کمتر است. هر سه حالت در ظاهر یک نشانه دارند: عدد بزرگ کنار کارهای زمانبندیشده.
در این راهنما یک برگهٔ اندازهگیری میسازیم تا پاسخ تیکت شما به «صف زیاد است» محدود نشود. مثالها فرضیاند؛ عددهای آنها نتیجهٔ آزمایش روی فروشگاه مشتریان نیستند.
کار عقبافتاده را از کار آینده جدا کنید
در بخش وضعیت ووکامرس، صفحهٔ Scheduled Actions را باز کنید. نام مسیر ممکن است با زبان و نسخهٔ نصب متفاوت باشد. یک کار Pending که برای فردا برنامهریزی شده، تأخیر ندارد. معیار مناسبتر، تعداد کارهایی است که موعدشان گذشته و سن قدیمیترین کار عقبافتاده.
برای ده نمونهٔ قدیمی، نام Hook، گروه، زمان مقرر و آخرین پیام خطا را ثبت کنید. Action Scheduler امکان مرتبسازی، فیلتر وضعیت و مشاهدهٔ گزارش هر کار را فراهم میکند؛ بنابراین لازم نیست برای شروع، رکوردهای دیتابیس را دستکاری کنید. راهنمای رسمی صفحهٔ مدیریت Action Scheduler
سه سبد جدا بسازید:
- کارهای موعدگذشتهای که هنوز شروع نشدهاند؛
- کارهای Failed که دلیل شکستشان باید بررسی شود؛
- کارهای In-progress که مدت اجرای غیرعادی دارند.
مجموع این سه عدد، نرخ تخلیهٔ صف را نشان نمیدهد. کار شکستخورده ممکن است دوباره زمانبندی شود و یک سفارش هم میتواند چندین کار پسزمینه داشته باشد.
برگهٔ اندازهگیری دهدقیقهای
یک بازهٔ عادی و یک بازهٔ شلوغ را انتخاب کنید. برای هر بازه، این موارد را با ساعت یکسان بنویسید:
- تعداد کارهای موعدگذشته در ابتدا و انتها؛
- تعداد کارهای تازهای که در همان بازه موعد اجرا پیدا کردهاند؛
- تعداد کارهای با موفقیت تمامشده؛
- سن قدیمیترین کار، به دقیقه؛
- Hook پرتکرار، تعداد خطا و تأخیر صفحهٔ پرداخت.
اطلاعات مشتری، آرگومانهای خصوصی کارها و کلیدهای اتصال را وارد برگه نکنید. اگر شمارندهٔ دقیق در دسترس نیست، تغییر سن قدیمیترین کار و چند نمونهٔ ثابت، از حدسزدن یک نرخ دقیق بهتر است.
زمان تخلیه را چطور حساب کنیم؟
فرض کنید ۱۲۰۰ کار عقبافتاده داریم. در ده دقیقه، ۳۰۰ کار تازه موعد پیدا میکنند و ۵۰۰ کار با موفقیت تمام میشوند. نرخ ورود ۳۰ کار در دقیقه و نرخ انجام ۵۰ کار در دقیقه است؛ در نتیجه صف با سرعت خالص ۲۰ کار در دقیقه کوتاه میشود.
زمان تقریبی جبران عقبماندگی = تعداد عقبافتاده ÷ اختلاف نرخ انجام و نرخ ورود
در این مثال، ۱۲۰۰ تقسیم بر ۲۰ برابر با ۶۰ دقیقه است. اگر سرعت انجام به ۳۰ برسد، عقبماندگی تخلیه نمیشود. اگر کار جدید سریعتر وارد شود، صف رشد میکند.
این محاسبه فرض میکند جنس کارها و نرخ ورود تقریباً ثابت است. مخلوطکردن یک ایمیل ساده با ساختن گزارش سنگین، پیشبینی را خراب میکند. بهتر است برای Hookهای اصلی جداگانه محاسبه کنید؛ کارهایی که دوباره در صف قرار میگیرند هم باید در ورود جدید حساب شوند.
از نتیجه به اقدام برسید
هیچ کاری تمام نمیشود: ابتدا Cron، درخواست Loopback و گزارش خطا را بررسی کنید. خرید RAM بیشتر، اجرا نشدن زمانبند را اصلاح نمیکند.
یک Hook بیشتر خطاها را میسازد: افزونهٔ مربوط، سرویس مقصد و نوع خطا را بررسی کنید. برای خطای محدودیت درخواست، افزایش همزمانی حتی میتواند تعداد شکستها را بیشتر کند.
کارها تمام میشوند ولی صف رشد میکند: زمان اجرای هر نوع کار، سقف منابع و تعداد اجراکنندهها را کنار هم بررسی کنید. مستندات Action Scheduler هشدار میدهد افزایش بیمحابای اجراکنندههای همزمان میتواند بار زیادی ایجاد کند؛ برای صفهای بزرگ، اجرای کنترلشده با WP-CLI یکی از گزینههای رسمی است. پردازش صف در مقیاس بزرگ
صف کوتاه میشود ولی پرداخت کند شده: تخلیهٔ صف دارد با درخواست خریداران رقابت میکند. هدف فقط صفرشدن Pending نیست؛ کیفیت خرید هم باید حفظ شود.
قبل از پاککردن یا اجرای مجدد
ناموفق بودن یک کار، لزوماً به معنی انجامنشدن اثر بیرونی آن نیست. ممکن است مقصد درخواست را پذیرفته باشد اما پاسخ به فروشگاه نرسیده باشد. پیش از اجرای دوبارهٔ کار مرتبط با پرداخت، موجودی یا ارسال، وضعیت مقصد و قابلیت جلوگیری از اجرای تکراری را بررسی کنید.
حذف گروهی Pendingها بدون شناخت Hook، راه بهینهسازی نیست. ابتدا مشخص کنید کدام کار منقضی، کدام قابل تکرار و کدام نیازمند تطبیق با سیستم مقصد است.
چه زمانی تغییر سرویس معنا دارد؟
برگهٔ بالا را کنار چکلیست ظرفیت ووکامرس بگذارید. اگر محدودیت منابع همزمان با عقبافتادگی و کندی پرداخت تکرار میشود، هنگام بررسی هاست ووکامرس نتآرام دربارهٔ ظرفیت کارهای پسزمینه و شیوهٔ اجرای Cron سؤال کنید.
اگر اجرای Worker مستقل یا کنترل دقیق زمانبندی لازم دارید، سرور مجازی مدیریتشده هم قابل بررسی است؛ دامنهٔ مدیریت و مسئولیت نگهداری برنامه را پیش از سفارش مشخص کنید. انتخاب بهتر سرویسی است که هم صف را در زمان قابل قبول تخلیه کند و هم فرصت پاسخگویی به خریدار را نگه دارد.
برچسبها:
اشتراکگذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.
مقاله بعدی
دیدگاهها (۰)
دیدگاههای تاییدشده و پاسخهای تیم نتآرام
