কম্পিউটার টিউটোরিয়াল

রুবি ২.১-এ আপগ্রেড: ১৫-২০% দ্রুত সার্ভার রেসপন্স এবং নِয়ার-জিরো GC টাইম

আমি সেটির উত্তর একটি স্ক্রিনশট দিয়ে দিচ্ছি:

{% img img-responsive /images/posts/ruby-2-1-improvement.png 645 259 I'd call that a big yes %}

প্রায় এক সপ্তাহ আগে আমরা প্রোডাকশনে Ruby 1.9 থেকে 2.1-এ আপগ্রেড করলাম, এবং আমরা যা দেখলাম সেটি এখানে। নিচের গ্রে সেকশনটি আমাদের গার্বেজ কালেকশন টাইম প্রায় শূন্যে চলে যাওয়া দেখাচ্ছে। সমগ্রভাবে, আপগ্রেডটি আমাদের ১৫-২০% সার্ভার রেসপন্স টাইমে উন্নতি দিয়েছে। সেটি কোনো এডিশনাল GC টিউনিং ছাড়া!

আপগ্রেড শিপ করার পর গুগল এবং বিং-এর ক্রল রেটে বড় বষ্ট দেখলাম, যা আমাদের মত সার্চ ইঞ্জিন ট্রাফিক থেকে ভারি লাভ করা সাইটগুলোর জন্য বিশেষত চমৎকার।

কুল, তাহলে কতটুকু কঠিন ছিল?

প্রায় ১৫০ জেম ডিপেন্ডেন্সি বালা একটি বড় রেইলস অ্যাপে, আপগ্রেডটি একটি সিঙ্গেল স্মল কমিট এবং কয়েক দিন টেস্টিং এ নেয়। আমরা সব সার্ভারে rvm রান করি এবং chef দিয়ে প্রোভিশন করি, তাই আমাদের সব সার্ভার 2.1-এ আপগ্রেড করা ছিল শুধু একটি শেফ রোল ফাইলে ভার্সন নম্বর চেঞ্জ করার মত সিম্পল।

আমরা কী সমস্যায় পড়েছিলাম?

আমরা এখনও ট্রান্সলিটারেশনের জন্য iconv ব্যবহার করি, তাই আমাদের iconv জেম ইনক্লুড করতে হয়েছিল, যা 2.x-এ রিমুভ করা বিল্ট-ইন ফাংশনালিটি রিপ্লেস করে। আমি কখনো ruby-debug বা debugger জেম 2.x-এ ওয়ার্ক করতে পারিনি, তাই আমরা pry এবং pry-byebug-এ স্যুইচ করলাম। আমি এখনও debugger জেমকে pry-byebug-এর চেয়ে পছন্দ করি, কিন্তু pry irb থেকে ততটুকু बेटার যে সেটি একই জিনিসের মত। Deivid Rodriguez, byebug-এর অথর, পয়েন্ট আউট করলেন যে pry-byebug-এ আমার সমস্যাগুলো probably byebug-এর কারণে নয়। তিনি পুরোপুরি সঠিক ছিলেন! (এটি আসলে byebug এবং pry-এর ইন্টারঅ্যাকশনের কারণে হয়েছিল)।

একটি মিক্সড 1.9 এবং 2.1 এনভাॅইরনমেন্টে, আপনাকে bundler 1.5.1-এ আপগ্রেড করতে হবে। বান্ডলারের নতুন ভার্সনে, আপনি আপনার Gemfile-এ 2.1 কে একটি প্ল্যাটফর্ম রিকোয়ারমেন্ট হিসেবে স্পেসিফাই করতে পারেন:

gem 'iconv', '~> 1.0.2', :platform => [:mri_20, :mri_21]

শোনা গেলো GitHub 2.1-এ কিছু অন্যান্য সমস্যায় পড়েছিল, যা Aman Gupta এই গিস্টে মেনশন করেছেন: https://gist.github.com/tmm1/8393897, কিন্তু আমরা এখনো কোনো ইস্যু নোটিস করিনি।

আপনি শিপ করার পর GC টিউন করবেন আরও স্পিড পাওয়ার জন্য। Aman-র একটি ভালো পোস্ট আছে অনেক ডিটেইলস সহ কীভাবে করতে হবে: https://tmm1.net/ruby21-rgengc/. তার ব্লগে পুরো 2.1 সিরিজ পড়তে পারেন আপনি আপনার সস্তা, সিম্পল রুবি আপগ্রেড থেকে সর্বোচ্চ বেনিফিট পাওয়ার জন্য।

  1. macOS Monterey আপগ্রেড: আপডেট করার সঠিক সময় কখন?

  2. ম্যাকওএস মোজাভে আপগ্রেড: সুবিধা, অসুবিধা এবং সিদ্ধান্তের টিপস

  3. macOS Catalina আপগ্রেড কি উপকারী? একটি স্পষ্ট গাইড

  4. WiFi 6 ব্যাখ্যা: সুবিধা, বৈশিষ্ট্য ও আপগ্রেড করার সঠিক সময়