TERM ফাঁদে ফেলে এবং কোয়েট প্রেরণের পরে হেরোকুতে ইউনিকর্ন প্রস্থান সময়সীমা


90

আমি ইউনিকর্ন এবং সাইডিকিক চলমান একটি হেরোকু অ্যাপ্লিকেশানের জন্য আর 12 প্রস্থান সময়সীমা ত্রুটিগুলি পেয়েছি। এই ত্রুটিগুলি দিনে 1-2 বার ঘটে এবং যখনই আমি নিযুক্ত করি। আমি বুঝতে পেরেছি যে ইউনিকর্ন সঠিকভাবে প্রতিক্রিয়া জানাতে আমাকে হিরোকু থেকে শাটডাউন সংকেত রূপান্তর করতে হবে, তবে আমি ভেবেছিলাম যে আমি এটি নীচের ইউনিকর্ন কনফিগারেশনে করেছি:

worker_processes 3
timeout 30
preload_app true

before_fork do |server, worker|
  Signal.trap 'TERM' do
    puts "Unicorn master intercepting TERM and sending myself QUIT instead. My PID is #{Process.pid}"
    Process.kill 'QUIT', Process.pid
  end

  if defined?(ActiveRecord::Base)
    ActiveRecord::Base.connection.disconnect!
    Rails.logger.info('Disconnected from ActiveRecord')
  end
end

after_fork do |server, worker|
  Signal.trap 'TERM' do
    puts "Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT. My PID is #{Process.pid}"
  end

  if defined?(ActiveRecord::Base)
    ActiveRecord::Base.establish_connection
    Rails.logger.info('Connected to ActiveRecord')
  end

  Sidekiq.configure_client do |config|
    config.redis = { :size => 1 }
  end
end

ত্রুটিটিকে ঘিরে আমার লগগুলি এ জাতীয় দেখাচ্ছে:

Stopping all processes with SIGTERM
Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT. My PID is 7
Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT. My PID is 11
Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT. My PID is 15
Unicorn master intercepting TERM and sending myself QUIT instead. My PID is 2
Started GET "/manage"
reaped #<Process::Status: pid 11 exit 0> worker=1
reaped #<Process::Status: pid 7 exit 0> worker=0
reaped #<Process::Status: pid 15 exit 0> worker=2
master complete
Error R12 (Exit timeout) -> At least one process failed to exit within 10 seconds of SIGTERM
Stopping remaining processes with SIGKILL
Process exited with status 137

এটি প্রদর্শিত হয় যে শিশু প্রক্রিয়াগুলির সমস্ত সফলভাবে সময় শেষ হওয়ার আগেই কাটা হয়েছিল। এটা কি সম্ভব গুরু এখনও বেঁচে আছেন? এছাড়াও, রাউটারটি এখনও লগগুলিতে প্রদর্শিত হিসাবে, শাট ডাউন করার সময় ডায়নোতে ওয়েব অনুরোধগুলি প্রেরণ করা উচিত?

এফডাব্লুআইডাব্লু, আমি হিরোকুর শূন্য ডাউনটাইম ডিপ্লোয়মেন্ট প্লাগইন ( https://devcenter.heroku.com/articles/labs-preboot/ ) ব্যবহার করছি ।


6
যদি এটি সহায়তা করে তবে আমিও শূন্য ডাউনটাইম মোতায়েন প্লাগইন ছাড়াই এই সমস্যাটি অনুভব করছি । আমি আশা করি কেউ সাহায্য করতে পারে বা আপনি যদি উত্তরটি খুঁজে পান তবে আপনি একটি উত্তর পোস্ট করতে পারেন। সম্ভবত হেরোকু সমর্থন যোগাযোগ?
ক্রিস পিটার্স

ক্রিসের মতো আমিও শূন্য ডাউনটাইম ব্যবহার করছি না, এবং এই সমস্যাটি অনুভব করছি। এটি হেরোকুর প্রস্তাবিত ইউনিকর্ন কনফিগার ব্যবহার সত্ত্বেও।
imderek

হিরোকুর প্রস্তাবিত কনফিগারেশন ব্যবহার করেও আমার একই সমস্যা হচ্ছে। কোনও শূন্য-ডাউনটাইম মোতায়েন নেই।
elsurudo

এখানে একই সমস্যা, এবং প্রিবুট প্লাগইন ব্যবহার না করা।
অ্যাড্রিয়ান ম্যাকনিল

একটি জিনিস আমি লক্ষ্য করেছি যে এটি সর্বদা শ্রমিক ডাইনোগুলিতে ঘটে। সবসময় না, তবে সাধারণত
ক্রিস পিটারস

উত্তর:


4

আমি মনে করি আপনার কাস্টম সিগন্যাল হ্যান্ডলিংয়ের কারণেই এখানে সময় শেষ হয়েছে।

সম্পাদনা: হেরোকুর ডকুমেন্টেশনের সাথে একমত না হওয়ায় আমি তুচ্ছ হয়ে যাচ্ছি এবং আমি এটি সমাধান করতে চাই।

আপনার ইউনিকর্ন অ্যাপ্লিকেশনটি টিআরএম সিগন্যালটি ধরা ও গিলতে কনফিগার করা আপনার অ্যাপ্লিকেশনটি ঝুলানো এবং সঠিকভাবে বন্ধ না হওয়ার সর্বাধিক কারণ।

Heroku যুক্তি দিতে চাই যে সংক্রামক এবং রূপান্তর বলে মনে হয় শব্দটি সংকেত মধ্যে একটি QUIT সংকেত অধিকার আচরণ সুতনু শাটডাউন মধ্যে একটি কঠিন শাটডাউন চালু হয়।

যাইহোক, এটি করার ফলে কিছু ক্ষেত্রে কোনওভাবেই শাটডাউন না হওয়ার ঝুঁকি রয়েছে - এই বাগের মূল। ইউনিকর্ন চলমান ঝুলন্ত ডায়নোগুলির ব্যবহারকারীদের প্রমাণটি বিবেচনা করা উচিত এবং কেবল নথিপত্র নয়, প্রথম নীতিগুলির ভিত্তিতে নিজস্ব সিদ্ধান্ত নেওয়া উচিত।


4
হিরোকু ডকুমেন্টেশনটি এখনও " সিগমেন্টের সাথে গ্রেসফুল শাটডাউন " কভার করে , এবং সিডার স্ট্যাকের উপর আর এটি করার দরকার পড়ার কোনও উল্লেখ আমি দেখতে পাই না। এটি কোথায় পাওয়া যাবে তার কোনও উল্লেখ আছে?
ডেনিস

আমি এই উত্তরটি সমর্থন করে এমন কোনও ডকুমেন্টেশন পাই না। ইউনিকর্ন এবং হেরোকুর উভয় ডকুমেন্টেশন অনুসারে, ইউনিকর্ন এখনও পসিক্স সংকেত ব্যাখ্যার বিপরীতটি ব্যবহার করে।
জোশ কোবাচ

এটি সত্য নয়। ইউনিকর্ন এখনও টিআরএম সিগন্যালের সুস্পষ্ট হ্যান্ডলিং ছাড়াই করুণভাবে বন্ধ হয় না। : বিকাশ কেন্দ্র নিবন্ধটি এই সমর্থনকারী এখানে পাওয়া যাবে devcenter.heroku.com/articles/rails-unicorn#config
তির্যক

আমি হেরোকু ডক্সকে স্বীকৃতি দিয়ে বলছি আপনার এই সংকেতগুলি ধরার / রূপান্তর করার চেষ্টা করা উচিত। নিখুঁতভাবে শাটডাউন করার প্রচেষ্টা হ'ল শাটডাউন টাইমআউটগুলির সর্বাধিক সম্ভাব্য মূল কারণ।
উইনফিল্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.