مرحبا بالجميع!
في هذه المقالة ، أود أن أتحدث عن كيفية اختيار أرشيفي لضغط سجلات نظام المكتب الأمامي لدينا.
يتمثل القسم الذي أعمل فيه في تطوير وصيانة نظام المكتب الأمامي الموحد للبنك. أنا مسؤول عن صيانتها ومراقبتها و DevOps.
نظامنا هو تطبيق محمّل للغاية يخدم أكثر من 5000 مستخدم فريد يوميًا. اليوم هو "متراصة" مع جميع مزاياها وعيوبها. ولكن الآن عملية نقل الوظائف إلى خدمات microservices مستمرة بنشاط.
كل يوم ، يولد نظامنا أكثر من 130 غيغابايت من السجلات الخام وعلى الرغم من أننا نستخدم ENG stack (Elasticsearch Nxlog Graylog) ، تحتوي سجلات الملفات على مزيد من المعلومات (على سبيل المثال ، أخطاء تتبع المكدس) وبالتالي تتطلب الأرشفة والتخزين.
نظرًا لأن موقع التخزين محدود ، فإن السؤال الذي يطرح نفسه هو: "وأي ملف أرشيف سوف يتعامل بشكل أفضل مع هذه المهمة."
لحل هذه المشكلة ، كتبت برنامج نصي PowerShell الذي أجرى التحليل لي.
تتمثل مهمة البرنامج النصي في استدعاء أرشيفات rar و 7z و zip ذات معلمات ضغط مختلفة ، لحساب سرعة تكوين الأرشيف ، وكذلك مساحة القرص المستخدمة.
العمل التحضيري:
نحن نحلل بمزيد من التفاصيل
$table|Sort-Object -Property "Size %","Result %"|Format-Table -AutoSize
$table|Sort-Object -Property "Result %","Size %","Time %"|Format-Table -AutoSize
النتيجة:
الأكثر اقتصادا من حيث مساحة القرص كان 7z مع نسبة ضغط -mx = 8 و -mx = 9

كان أسرع وقت لإنشاء أرشيف هو 7z مع نسبة ضغط -mx = 1

كانت السرعة المثلى في السرعة والمساحة المشغولة هي 7z مع معدل ضغط -mx = 3

نختار 7z مع نسبة ضغط -mx = 8 ، لأن حجم الأرشيف هو -mx 9 ، لكنه يعمل بشكل أسرع قليلاً.
عظيم ، تم تحديد أرشيف ونسبة الضغط ، والآن دعونا أرشفة السجلات!
نحن بحاجة إلى حل المشاكل التالية:
- تجنب تحميل خادم عالية أثناء العملية.
- معالجة جميع المجلدات باستخدام سجلات مجلد فرعي.
- احذف الأرشيفات الأقدم من 30 يومًا (حتى لا ينفد من مساحة القرص).
- أنشئ أرشيفات كل يوم حسب الوقت الذي تم فيه تعديل الملفات.
هنا لن أرسم كل سطر من البرنامج النصي (الموصوف في التعليقات) ، لكنني أطوِّل فقط على وظيفة Set-MMTCore ، والتي تتيح لنا حساب عدد مؤشرات الترابط لـ 7z حتى لا يتم تحميل المعالج على خادمنا:
Function Set-MMTCore {
بدون استخدام وظيفة Set-MMTCore
يمكن أن نرى أن وحدة المعالجة المركزية تقع على 100 ٪. هذا يعني أننا سوف نتسبب حتماً في حدوث مشاكل على الخادم ، بالإضافة إلى تلقي تنبيه من نظام المراقبة.

عند استخدام وظيفة Set-MMTCore
يمكن أن نرى أن وحدة المعالجة المركزية هي 30-35 ٪. هذا يعني أن استخدام وظيفة Set-MMTCore يسمح لك بأرشفة الملفات دون التأثير على تشغيل الخادم.

نتيجة البرنامج النصي النسخ الاحتياطي:
المجلد قبل الأرشفة:

المجلد بعد الأرشفة:

الملفات التي تم إنشاؤها أثناء عملية الأرشفة:

الملفات في الأرشيف:

