پاک کردن هم زمان رکوردها توسط bc_cleanup از روی چند hard

 یکی از اشکالاتی که در bc_cleanup هست اینه که رکوردهای قدیمی‌تر رو به صورت sequential از روی چند هارد پاک میکنه. یعنی اول میره سراغ هارد اول، بعد که کارش تموم شد میره سراغ هارد دوم و به همین ترتیب. این باعث میشه اگر به هر دلیل پاک کردن رکوردها از هارد اول طول بکشه هاردهای دیگه پر بشن و کسی نباشه به دادشون برسه. برای رفع این مشکل راهی که اندیشیدم multi-thread کردن bc_cleanup بود. الان وقتی bc_cleanup با سوییچهای ‎-np یا ‎-ds که اولی برای وقتی است که میخواهیم not paired events پاک بشن و دومی برای وقتی است که میخواهیم رکوردهای قدیمی‌تر برای cleanup شدن disk space پاک بشن صدا زده میشه این کار به صورت هم زمان توسط threadهای مختلف انجام میشه.

یک اشکالی که این وسط هست که امیدوارم در محیط مشتری باعث بروز مشکل نشه اینه که اگر پاک کردن رکوردها از روی هاردی طول بکشه، به هر دلیل، مثل اینکه تعداد رکوردهای اون هارد خیلی بیشتر از هاردهای دیگه باشه، این باعث میشه از bc_cleanup تا تکمیل این پاک شدن خارج نشیم. با مثال بریم جلو مطلب بهتر روشن شه. مثلاً یه هاردی تعداد رکوردهای خیلی کمی برای پاک کردن داره و کارش در عرض ۱۰ ثانیه به انجام میرسه، اما هارد دیگه‌ای تعداد خیلی زیادی رکورد برای پاک کردن داره و کارش ممکنه یک ساعت یا بیشتر طول بکشه. این باعث میشه اگر هارد اول در طول این یک ساعت پر بشه دیگه bc_cleanupی نباشه که بخواد به دادش برسه. bc_schedule میبینه bc_cleanup هنوز مشغوله، پس نمیاردش بالا. bc_cleanupی هم که بالا است کارش با هارد اول تموم شده و داره رکوردهای هارد دوم رو پاک میکنه.

برای اینکه چنین مشکلی پیش نیاد میشه فکر کرد. مثل اینکه اصولاً bc_cleanupهای مختلفی بتونیم اجرا کنیم و هر کدوم بر اساس آرگومانی که میگیرند کار مستقلی رو انجام بدند. مثلاً یکی not pairedهای هارد اول رو پاک کنه و هم زمان دیگری رکوردهای قدیمی‌تر هارد دوم رو. منتها ترجیح دادم فعلاً این پکیج بره تو محیط مشتری، بازخوردهاش دربیاد، اگر لازم شد بعد میریم سراغ یه چنین کاری. قبلاً یه بار چنین کاری رو انجام داده‌ام. یعنی زمانی np با ds هم زمان cleanup میشدند. اما بازخورد خوبی نگرفتم. باعث شد مجبور شم دوباره اونها رو به صورت سریال انجام بدم. وقتی np روی یه هارد داره انجام میشه باعث کند شدن ds روی همون هارد میشه! چرا؟ ظاهراً نباید بشه، اما میشه.

نظرات

پست‌های معروف از این وبلاگ

دوربین Avigilon جدید

مقدمه

تغییرات داده شده در database در ارتباط با دوربین Hikvision DS-2CD1123G0E-I