help-header

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

S3cmd از معمول‌ترین ابزارهایی است که برای ارتباط بافضای ابری استفاده می‌شود. اگر از توزیع Ubuntu لینوکس استفاده می‌کنید، می‌توانید 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