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