نویسنده : Arvan

بهبود عمل‌کرد سرویس در مواجهه‌ی کاربران با خطای ۵۰۴ در s3cmd

linkedin

از معمول‌ترین ابزارهایی که برای ارتباط با object storage استفاده می‌شود، s3cmd است که اگر از سیستم عامل اوبونتو استفاده می‌کنید، آن را به‌راحتی با استفاده از apt می‌توانید نصب کنید.
می‌دانیم یکی از خطاهایی که گاه کاربران با آن روبه‌رو می‌شوند خطای ۵۰۴ است. فرض کنید در حال آپ‌لود فایلی هستیم و با استفاده از iptables ترافیک خروجی به آن مقصد را می‌بندیم؛ چه اتفاقی می‌افتد؟

s3cmd.png

همان‌طور که می‌بینید خطای ۵۰۴ به وجود می‌آید. پس اگر برای مدتی ارتباط با سرورهای اصلی به هر دلیلی قطع شود و شما چند بار پیاپی خطای ۵۰۴ دریافت کنید، آپ‌لود به‌طورکلی قطع می‌شود.
برای بهبود عمل‌کرد می‌توانید از مسیر

/usr/lib/python3/dist-packages/S3/S3.py

تعداد _max_retriesها را از عدد ۵ به عدد دل‌خواه تغییر دهید، تا برنامه پس از تلاش‌های بیش‌تر قطع شود، و هم‌چنین می‌توانید در تابع def _fail_wait عدد ۳ را با مقدار بزرگ‌تری جای‌گزین کنید، تا مدت زمان بین دو تلاش افزایش یابد؛ به‌صورت پیش‌فرض بعد از اولین خطا، ۳ ثانیه صبر می‌کند و اگر بعد از تلاش مجدد دوباره با خطا مواجه شد، این مقدار به ۶ ثانیه افزایش می‌یابد و سپس به ۹ و ... .

def _fail_wait(self, retries):
# Wait a few seconds. The more it fails the more we wait
return (self._max_retries - retries + 1) * 3

مطالب مرتبط