دوستان حتما از قسمت آخرین تغییر و تحولات در سمت راست وبلاگ داستان انتقال سرور ما را دنبال می کردند. لازم دانستیم گزارشی مفصل تر جهت اطلاع بیشتر مشترکین از وضعیت سرویس دهی رپیدباز تهیه کنیم.

چرا پروژه انتقال اهمیت پیدا کرد؟

ما برنامه های بزرگی برای رپیدباز در نظر داریم و امیدواریم با اجرایی شدن این طرح ها بتوانیم سرویس بهتری را ارائه دهیم اما پیش زمینه همه این طرح ها بستر قوی و مطمئنی نیاز دارد. ما خوشبختانه با تمهیداتی که دیده بودیم توانستیم سیستم لینکدانی با تمام استقبالی که از آن شده بود را بدون هیچ مشکلی به اجرا بگذاریم. خودتان حتما جزئیاتی که این سیستم در اختیارتان می گذارد را دیده اید و می دانید چه فشاری را بر سیستم بالاخص بانک اطلاعاتی وارد می کند.

ما سعی کردیم در تمام سیستم از سیستم های پخش (distributed) استفاده کنیم که به ما اجازه می دهد از چند سرور در پشت استفاده کنیم در صورتیکه کاربر همه آنها را به صورت یک وجود واحد می بیند.  بانک اطلاعاتی یکی از تنگناهایی است که ما قادر به پخش کردن آن تا بحال نشدیم برای همین همواره آن را تحت نظارت داشتیم. در هفته های اخیر با بالا رفتن ترافیک شاهد آن بودیم که این سرور در برخی از لحظات با تاخیر پاسخگو بود. بعد از بررسی هایی که از لاگ های سرور کردیم به این نتیجه رسیدیم که هارد دیسک فعالیت این سرور را محدود کرده است و با وجود قدرت پردازش بالا خواندن از دیسک کار آن را کند کرده است.

خریداری سرور با هارد دیسک SSD

از آنجا که اکثر فعالیت ما خواندن اطلاعات است این نوع هارد دیسک پرفورمانسی غیرقابل مقایسه می دهد با هارد دیسک های موتوری. من زیاد در این وادی وارد نمی شوم و شما را به این صفحه که گزارشی از آزمایش های شرکت Sun و Oracle است ارجاع می کنم (http://www.sun.com/storage/flash/performance.jsp). سروری که ما خریداری کردیم با ۲ هارد SSD شرکت اینتل برای گرفتن بهترین عملکرد بصورت RaidZ نصب شد و مورد آزمایش قرار گرفت. نتیجه های ابتدایی که گرفتیم بسیار خوب بود و تصمیم نهایی برای انتقال گرفته شد.

انتقال اطلاعات و ارتقا نرم افزاری – مشکل بعد از مشکل

در این نقل و انتقال منطقی بود که در فرصت پیش آمده ارتقا نرم افزار بانک اطلاعاتی را هم در دستور کار خود بگذاریم. چند نسخه از بانک اطلاعاتی را آزمایش کردیم و حتی Engine را نیز تغییر دادیم و به یک ترکیب مطمئن رسیدیم و با چند ابزار تصمیم به انتقال گرفتیم. در اولین سعی یک نسخه قدیمی از بانک اطلاعاتی را گذاشتیم و بخوبی جواب داد. بعد که سعی بر انتقال کامل بانک اطلاعاتی جدید گرفتیم برای اینکه اطلاعات دوباره کاری نشوند، سرور قبلی را باید می بستیم.

سرور را بستیم و انتقال را آغاز کردیم. بعد از انتقال، آزمایش ها همه چیز را سالم نشان می دادند و بعد از اجرای بانک اطلاعاتی متوجه شدیم که Event ها و Procedure ها که نقشی حیاتی دارند انتقال پیدا نکردند و تمام اطلاعات ناقص ثبت می شوند. مجبور شدیم سرور قبلی را فعال کرده و انتقال را برای روز بعد موکول کنیم. بعد از چند آزمایش متوجه شدیم که جداول Event ها و فرمتشان بین نسخه جدید و قدیمی فرق می کنند. بعد از مطالعه و بررسی مشکل با چند نفر از همکاران موفق به حل این مساله شدیم. تصمیم برای انتقال نهایی شد و انتقال شروع شد. اینباره انتقال باز هم موفقیت آمیز بود و حتی Event ها هم اجرا می شدند که متوجه شدیم اطلاعات جداول قدیمی با collation بودند که نسخه جدید بانک اطلاعاتی از آن پشتیبانی نمی کند و در نتیجه کلمات انگلیسی با علامت هایی در صفحه ظاهر می شدند. متاسفانه چون تمام تست های ما در محیط Shell بودند ما متوجه آن در وقتش نشدیم. خلاصه با تکنینک های خاصی این موارد را هم بر طرف کردیم و توانستیم سرور جدید را جایگزین سرور قبلی کنیم.

خداحافظی با سروری با وفا

ما همواره در سال اخیر با توجه به استقبال بالا با تنگنایی به نام بانک اطلاعاتی مواجه بودیم. خوشبختانه با آمدن سرور نیویورک به نسخه و تنظیمات ایده آل خود رسیدیم. این سرور با کارآیی و پایایی بالایی که در اختیار ما قرار داد، فرصتی را به ما داد که سرویس های جدید و مطمئن تری را بتوانیم به کاربران ارائه دهیم. شاید خیلی ها از بیرون این امر را کم اهمیت ببینند ولی نگرانی هایی که زیربنای نامناسب برای برنامه نویس دارد موجب می شود بنابر ضرورت یک سری قابلیت  های سیستم را که وقت و هزینه زیادی روی آنها شده را بطور موقت یا دائم غیرفعال کند. این امر در دراز مدت دلسردی می آورد و برنامه ها را بطور جد با مشکل روبرو می کند.

امیدواریم در ادامه و با بالا آمدن سرور جدید بتوانیم سرویس های جدیدمان را با برنامه ریزی مناسب تری در اختیار کاربران قرار دهیم. در پایان جا دارد از طولانی شدن این نقل و انتقال و مشکلاتی که برای شما ایجاد کرده عذرخواهی کنیم.