ক্রোন চলমান বন্ধ; লগগুলি বলে: "ক্রোন ইতিমধ্যে চলমান অবস্থায় পুনরায় চালানোর চেষ্টা করা হচ্ছে।"


11

শিরোনাম অনুযায়ী সমস্যা সমাধানের এবং সমাধান করার পদক্ষেপগুলি কী?

আমি যখন ম্যানুয়ালি চালানোর চেষ্টা করি তখনই আমি একটি পৃষ্ঠা পেয়ে যাচ্ছি এবং ত্রুটি বার্তাটি "এটি ইতিমধ্যে চলমান অবস্থায় ক্রোন পুনরায় চালানোর চেষ্টা করা হচ্ছে"।


আমি আমার মাথার উপরের অংশটি স্মরণ করতে পারি না যে ডিবি ক্রোন কী দেখায়, তবে "ক্রোন ক্রিয়াকলাপ চালানোর সময় এটি পুনরায় চালানোর চেষ্টা করার একটি দ্রুতগুগল " ডিজিটালজেডস ডটকম / নোড / ২২ এ আমাকে ইঙ্গিত করেছিল , এটি হতে পারে D7
Jimajamma

এটা খুব আজব। সেই বার্তাটি কোর জন্য ঠিক একবার কোডটিতে পাওয়া যায়, ঠিক সেই পরিবর্তনশীলটির জন্য একটি চেক (ড্রপাল_ক্রোন_রুনে লক_এক্কায়ার মাধ্যমে) after আপনি যদি আরও তথ্য / লক্ষণগুলি পোস্ট করেন তবে এটি নির্দেশ করে যে এটি সত্যই ভিন্ন, আমি এটি আবার খুলব।
এমপিডোনাদিও

পরামর্শ: আপনি প্রতি 3 মিনিটে চালানোর জন্য একটি নতুন দ্রুপাল এবং সেট ক্রোন ইনস্টল করার চেষ্টা করতে পারেন এবং দেখুন আপনার একই প্রভাব রয়েছে কিনা !!!
আবুড্রেড 1

স্রেফ রান করুন:drush sqlq "DELETE FROM semaphore WHERE name = 'cron';"
কেনারব

4
ভবিষ্যত পাঠকদের কাছে: বর্তমানে গৃহীত উত্তরগুলি ড্রুপাল 7, ড্রুপাল সংস্করণ যার জন্য প্রশ্নটি সঠিক নয়। এটি ড্রুপাল 6 এর জন্য বৈধ, তবে দ্রুপাল 7 কোড পরিবর্তিত হয়েছে; এটি কেবল ঘটে যায় যে দ্রুপাল 7 ড্রুপাল 6 থেকে রয়েছে যা পরিষ্কার করা হয়নি।
কিমলালুনো

উত্তর:


12

ক্রোন সেমফোর সম্ভবত লক করা আছে। আপনি আপনার কোডের যে কোনও জায়গা থেকে drupal_cron_cleanup () কল করার চেষ্টা করতে পারেন (এটি ক্রোন দ্বারা আহ্বান করা হয় না) এবং এটি আপনার ক্রোন সেমফোর ভেরিয়েবলটিকে আনলক করা উচিত।

আপনি ড্রুপাল 6 এ ড্রাশ কনফিগার করা থাকলে আপনিও চেষ্টা করতে পারেন:

$ drush vdel -y cron_semaphore

3
অথবা ভেরিয়েবল টেবিল থেকে ম্যানুয়ালি মুছে ফেলুন যদি আপনার ড্র্যাশের পরিবর্তে ডিবি অ্যাক্সেস থাকে।
ম্যালাক্স

8
এই মানগুলি সারণীতে ক্যাশে করা হয় তা ভুলে যাবেন না cache_bootstrap
tostinni

1
দয়া করে টেবিলের সঠিক নামটি কেননা আমি ভেরিয়েবল সারণীতে কোনও ক্রোন_সাম্পোরের সন্ধান পাইনি
মোহাম্মদ আমিন বোউরকাদি

2
আমি যখন উপরের ড্রাশ কমান্ডটি চালাই তখন আমি "ক্রোন_সাম্পোরটি পাওয়া যায় নি।" কোন ধারনা?
নাইজেল ওয়াটারস

1
@ নিজেলওয়াটার্স ক্রুপের সেমফোরটি একটি লুপ হয়ে গেছে, দ্রুপাল in এ, তবে drupal_cron_cleanup()এটি আপডেট হবে বলে মনে হয় না।
কিমলালুনো

19

সারসংক্ষেপ

নিম্নলিখিত দুটি শর্ত পূরণ হলে আপনি যে ত্রুটি বার্তাটি দেখছেন তা ঘটবে:

  • আপনার ক্রোন জবস সমাপ্ত হয় না (ত্রুটি) বা শেষ করতে 4 মিনিটের বেশি সময় নেয় না;
  • আপনি প্রতি 4 মিনিটের তুলনায় ক্রোন ক্রম বেশি বেশি সময় প্রার্থনা করেন (আপনার ক্রোনটব সেটিং অনুযায়ী, দ্রুপালে সেটিংস নয়)

এই ত্রুটি বার্তাটি ক্রোন কার্যগুলির একটি লক্ষণ যা হয় ব্যর্থ হয় বা চালাতে খুব বেশি সময় নেয়। (দ্রষ্টব্য: আমি বুঝতে পেরেছি যে আপনি ইতিমধ্যে অপরাধীকে খুঁজে পেয়েছেন, তবে আমি এই পৃষ্ঠাগুলি অনুসন্ধানের মাধ্যমে খুঁজে পাওয়া লোকদের জন্য একটি উত্তর যুক্ত করতে চেয়েছিলাম)

পটভূমি

প্রথমে বোঝার বিষয় হ'ল কীভাবে দ্রুপাল ক্রোন টাস্কগুলি চালানো হয়। Drupal এর ক্রন হয় প্রার্থনা আপনার সার্ভারে হয় একটি ক্রন জব মাধ্যমে বা প্রতি পৃষ্ঠার লোড পর আপনি দরিদ্র মানুষের ক্রন যা Drupal এর ডিফল্ট ব্যবহার তাহলে - নিয়মিত সময় অন্তর।

ক্রোন ক্রিয়াকলাপগুলি প্রতিটি সময় ক্রোন চালিত হওয়ার পরে অগত্যা চালানো হয় না - দ্রুপাল-এ একটি সেটিং রয়েছে (ডিফল্টটি 3 ঘন্টা) যা ক্রোন টাস্কগুলি কতবার চালানো উচিত তা বলে says তবে 3 ঘন্টা এই বিলম্ব কেবলমাত্র যদি ক্রোন কার্যগুলি সফলভাবে শেষ হয় তবে প্রযোজ্য।

ড্রুপাল In-তে ক্রোন ড্রুপালের লকিং প্রক্রিয়া ব্যবহার করে যা একটি সমবায়, পরামর্শক লক সিস্টেম সরবরাহ করে। এই লক সিস্টেমের অন্যতম বৈশিষ্ট্য হ'ল লকগুলি নির্দিষ্ট সময়ের পরে শেষ হয়। ক্রোন এর ক্ষেত্রে, এটি 4 মিনিটের পরে শেষ হয় - সুতরাং যদি আপনার ক্রোনটি প্রতি 3 মিনিটের মধ্যে ডাকা হয় এবং পূর্ববর্তী ক্রোন কাজটি সেই সময়ের মধ্যে শেষ না হয় (হয় এটি ক্র্যাশ হয়েছে বা খুব ধীর ছিল) তবে আপনি অবশ্যই এই ত্রুটি বার্তাটি পাবেন ।

আপনি ক্রোনটি প্রতি 12 ঘন্টা নির্ধারণ করেছেন তাতে কোনও তাত্পর্য হয় না - কারণ ড্রুপাল ক্রোন টাস্ক ব্যর্থ হচ্ছে / অনেক বেশি সময় নিচ্ছে, দ্রুপাল ধরে নেয় যে এটি চালানো হয়নি তাই ক্রোন চালিত হওয়ার সাথে সাথে আবার এটি চালানোর চেষ্টা করে। বারো ঘন্টা দেরি শুধুমাত্র সফল ক্রোন রানগুলির ক্ষেত্রে প্রযোজ্য।

দ্রোপাল 7-এ ক্রোন সেম্যাফোর ভেরিয়েবলের আর কোনও অস্তিত্ব নেই - এটি দ্রুপালের পুরানো সংস্করণের জন্য। ড্রুপাল In-এ কোনও লক ম্যানুয়ালি প্রকাশের কোনও নির্ভরযোগ্য উপায় নেই, কারণ লকিং ব্যাকএন্ড বদলে যেতে পারে - তবে আপনি যদি মূল লকিং প্রক্রিয়াটি ব্যবহার করছেন তবে আপনি ডাটাবেস সম্পাদনা করে ক্রোন লকগুলি প্রকাশ করতে পারবেন:

DELETE FROM semaphore WHERE name = 'cron';

তবে এটি করার মাধ্যমে আপনি কেবল লক্ষণগুলি ঠিক করতে পারবেন - যে সমস্যার সমাধান করার প্রয়োজন তা হ'ল ক্রোন কেন ব্যর্থ হচ্ছে / চালাতে এত দীর্ঘ সময় নিচ্ছে।


আমি এই বার্তাটি পাচ্ছি, তবে যখন আমি ক্রোন_দেবগ চালনা করি তখন সমস্ত ক্রোন কাজ সফলভাবে শেষ হয় এবং দ্রুত চালিত হয় (কোর আপডেটগুলি ছাড়া which 5 সেকেন্ড লাগে) takes এই সমস্যার উত্স যদি ক্রোন রুটিনগুলি ধীর বা ব্যর্থ হয় তবে ক্রোন_দেবগ কেন তাদের হাইলাইট করবে না?
two1ejack

1
ক্রোন_দেবগ মডিউলটি কীভাবে কাজ করে তা আমি জানি না, তাই আমি আসলে এটি সম্পর্কে মন্তব্য করতে পারি না। 'ক্রোন_সেফ_থ্রেসোল্ড' ভেরিয়েবলের মান কত? 'সেমফোর' টেবিলটি কোন ডেটা?
এলিস হিটন

1
এটি বিশদ ব্যাখ্যার জন্য ড্রুপাল +.১১ এর সঠিক উত্তর।
কিমলালুনো

বিটিডাব্লু, যদি ক্রোন আপনার জন্য ব্যর্থ হয় তবে ক্রোন ডিবাগ মডিউলগুলি কী মডিউলটি স্তব্ধ তা দেখতে ব্যবহার করুন - এটি অনুসন্ধান মডিউলটির মধ্যে 10 বার 9 বার। অনুসন্ধানের মডিউলটি চালু করার চেষ্টা করুন ম্যানুয়ালি ক্রোন চালান এবং দেখুন কী ঘটে। নোডগুলি এটি সূচী করার চেষ্টা করছে তা খুঁজে পাওয়ার জন্য: drupal.stackexchange.com/questions/22825/…
ড্যান মান্টিলা

4

cron_semaphoreপরিবর্তনশীল Drupal এর 6 উপস্থিত ছিল, কিন্তু যদি আপনি Drupal এর 7 ব্যবহার করছি যাতে করে সেমফোর্ কেশ পৃথক টেবিল নামক স্থানান্তরিত semaphore

সুতরাং ক্রোন সেমফোর আনলক করার সমাধানটি হ'ল:

দ্রুপাল 7

drush sqlq "TRUNCATE semaphore"

দ্রুপাল ঘ

drush -y vdel cron_semaphore 

3
"কম চরম" drush sql-query "DELETE FROM semaphore WHERE name='cron'"
ভ্রুপটি

2

ক্রোন ডিবাগ মডিউলটি ব্যবহার করে আপনি ক্রোনটি ডিবাগ করতে পারেন ।

ক্রোন ডিবাগ আপনাকে ক্রোন প্রক্রিয়াগুলি খুঁজতে সহায়তা করবে যা

  • প্রোগ্রামিং বা রানটাইম ত্রুটির কারণে ব্যর্থ
  • সময় শেষ (পিএইচপি, সার্ভার, ডাটাবেস)
  • খুব ধীর

ক্রোন ডিবাগ অন্যকে চালিত না করে নির্দিষ্ট ক্রোন ক্রিয়াকলাপ চালানোর জন্য আপনাকে অনুমতি দেবে। ক্রোন ক্রিয়াকলাপ বিকাশের জন্য এটি দুর্দান্ত হতে পারে যেখানে আপনি নিজের রক্ষণাবেক্ষণ, সতর্কতা এবং অন্যান্য কাজের সাথে প্রতিবার নিজের ক্রিয়াকলাপটি পরীক্ষা করার জন্য কোনও সম্পূর্ণ ক্রোন.এফপি চালাতে চান না।


1
এই মডিউলটি আমার জন্য জীবন রক্ষাকারী ছিল!
ড্যান মান্তিলা

হ্যাঁ, এই মডিউলটি ভাল, এটি ক্রোন জবটি ডিবাগ করতে সহায়তা করে।
নিশান্ত

1

আমি ক্রোন সমস্যাটি এভাবেই সমাধান করেছি:

  1. পিএইচপিএমআইএডমিনের মাধ্যমে, আমি সেমফোর টেবিলটিতে তাকালাম এবং সারিটি সরিয়েছি যেখানে name = cron
  2. আমি কমান্ড লাইনের মাধ্যমে "ড্রশ ক্রোন" চালিয়েছি
  3. আমি একটি ত্রুটি বার্তা দেখেছি যা আমাকে সমস্যার একটি চিহ্ন দিয়েছে; এটি আপনার পক্ষে পৃথক হতে পারে তবে আমার জন্য সম্প্রতি ইনস্টল করা মডিউলটির সাথে একটি পিএইচপি লাইব্রেরি ভাগ করে নেওয়ার একটি ইনস্টল করা মডিউল একটি ত্রুটি ঘটাচ্ছে

0

ড্রুপাল 8 এর জন্য: স্ক্র্যাশ ড্রাশ করুন "দক্ষিণাঞ্চল থেকে নামটি যেখানে নাম = 'ক্রোন';"


0

ড্রুপাল On-তে, অন্য একটি বিকল্প হিসাবে,

এর মাধ্যমে drush cronআমি পেয়ে ছিল,

WD cron: Attempting to re-run cron while it is already running.       [warning]
Cron run failed.                                                      [error]

এটি উন্নয়নের পরিবেশে ছিল এবং ঘটেছিল কারণ পূর্ববর্তী ক্রোন চলছিল এবং এতে বাধা পেয়েছিল।

উপর includes/common.inc, লাইন 5413, বা কাছাকাছি সময়ে, আপনি এই ব্লক খুঁজে পাবেন, https://cgit.drupalcode.org/drupal/tree/includes/common.inc?h=7.x#n5413

  // Try to acquire cron lock.
  if (!lock_acquire('cron', 240.0)) {
    // Cron is still running normally.
    watchdog('cron', 'Attempting to re-run cron while it is already running.', array(), WATCHDOG_WARNING);
  }

ifএকটি দিয়ে পরিবর্তন করুন && FALSE,

  // Try to acquire cron lock.
  if (!lock_acquire('cron', 240.0) && FALSE) {
    // Cron is still running normally.
    watchdog('cron', 'Attempting to re-run cron while it is already running.', array(), WATCHDOG_WARNING);
  }

এবং ক্রোন পুনরায় চালু করুন। এটি এটি চালানোর অনুমতি দেবে।

দয়া করে এটি স্থাপন করুন এবং এটি শেষ হওয়ার পরে এটি আবার ফিরিয়ে দিন। এটি ডিবাগিংয়ে সহায়তা করে।


-1

আমি কয়েকবার এর বিরুদ্ধে এসেছি। ড্রুপাল 6 এ আপনি ড্রাশ ব্যবহার না করলে আপনি এটি ঠিক করতে পারেন:

1 ভেরিয়েবল টেবিল থেকে ক্রোন_% ভেরিয়েবল সরান।

SELECT * FROM variable WHERE name like "cron%";

DELETE FROM variable WHERE name like "cron%";

2 ড্রপাল ক্যাশে এখানে পরিষ্কার করুন: / অ্যাডমিন / সেটিংস / কর্মক্ষমতা

পৃষ্ঠার নীচে 'ক্লিয়ার ক্যাশেড ডেটা' বোতাম টিপুন।

অ্যাডমিন প্যানেল / অ্যাডমিন / রিপোর্টস / স্ট্যাটাস / রান-ক্রোন থেকে 3 রান ক্রোন এটি কোমন্ড লাইন থেকে চালাবেন না কারণ এটি সমস্যার কারণ হতে পারে।

4 পরীক্ষা করুন যে পরবর্তী স্বয়ংক্রিয় ক্রোন রান স্বাভাবিক হিসাবে সম্পূর্ণ হয়।


ড্রুপাল উত্তরগুলিতে আপনাকে স্বাগতম! প্রশ্নটি ড্রুপাল about সম্পর্কে that ডাটাবেস সারণী থেকে সারিগুলি মোছার ফলে খুব বেশি প্রভাব পড়বে না।
kiamlaluno

আহ আমি কেবল উত্তরটি যুক্ত করেছিলাম কারণ এটি নির্দিষ্ট করে বলা হয়নি যে এটি ওপিতে দ্রুপাল 7 এর পক্ষে ছিল। এটি ড্রুপাল 6 এর জন্য ভালভাবে কাজ করে এবং সাধারণ 'সেম্যাফোর মুছুন' উত্তরগুলির চেয়ে আরও সম্পূর্ণ। আমি বুঝতে পেরেছিলাম যে কেউ এখানে ডি 6 থেকে শেষ হয়ে গেলে এটি সহায়ক হবে। এটা কি ভুল ছিল? আমি মনে করি এটির জন্য চিহ্নিত করা হয়েছে।
মুনকিপাস

কমান্ড লাইন অংশ থেকে রান ক্রোন অপসারণ করার জন্য কেবল আপডেট করা হয়েছে, সন্ধান পেয়েছে এটি সমস্যার কারণ হতে পারে
মুনকিপাস

-1

আপনি xdebug ব্যবহার করে ডিবাগ করতে পারেন, অ্যাডমিন ইন্টারফেস অ্যাডমিন> কনফিগারেশন> সিস্টেম> ক্রোন থেকে ক্রোন চালান।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.