لا يمكن تخصيص خيط بعد التحديث إلى 2026.4.1

أرى هذه الأخطاء في السجلات بعد التحديث إلى 2026.4.1(e404d9aabc) مؤخرًا:

رسالة (تم الإبلاغ عن 151769 نسخة)

استثناء المهمة: لا يمكن تخصيص خيط

سجل التتبع

/usr/local/lib/ruby/3.4.0/socket.rb:712:in 'Thread.new'
/usr/local/lib/ruby/3.4.0/socket.rb:712:in 'block in Socket.tcp_with_fast_fallback'
/usr/local/lib/ruby/3.4.0/socket.rb:710:in 'Array#map'
/usr/local/lib/ruby/3.4.0/socket.rb:710:in 'Socket.tcp_with_fast_fallback'
/usr/local/lib/ruby/3.4.0/socket.rb:661:in 'Socket.tcp'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.28.0/lib/redis_client/ruby_connection.rb:122:in 'RedisClient::RubyConnection#connect'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.28.0/lib/redis_client/ruby_connection.rb:48:in 'RedisClient::RubyConnection#initialize'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.28.0/lib/redis_client.rb:849:in 'Class#new'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.28.0/lib/redis_client.rb:849:in 'block in RedisClient#connect'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.28.0/lib/redis_client/middlewares.rb:12:in 'RedisClient::BasicMiddleware#connect'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.28.0/lib/redis_client.rb:848:in 'RedisClient#connect'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.28.0/lib/redis_client.rb:824:in 'RedisClient#raw_connection'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.28.0/lib/redis_client.rb:779:in 'RedisClient#ensure_connected'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.28.0/lib/redis_client.rb:372:in 'RedisClient#call_v'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-5.4.0/lib/redis/client.rb:90:in 'Redis::Client#call_v'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rack-mini-profiler-4.0.1/lib/mini_profiler/profiling_methods.rb:90:in 'block in Redis::Client#profile_method'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-5.4.0/lib/redis.rb:152:in 'block in Redis#send_command'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-5.4.0/lib/redis.rb:151:in 'Monitor#synchronize'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-5.4.0/lib/redis.rb:151:in 'Redis#send_command'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-5.4.0/lib/redis/commands/keys.rb:256:in 'Redis::Commands::Keys#del'
/var/www/discourse/lib/discourse_redis.rb:168:in 'block in DiscourseRedis#del'
/var/www/discourse/lib/discourse_redis.rb:29:in 'DiscourseRedis.ignore_readonly'
/var/www/discourse/lib/discourse_redis.rb:165:in 'DiscourseRedis#del'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/distributed_mutex.rb:48:in 'MiniScheduler::DistributedMutex#synchronize'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/distributed_mutex.rb:15:in 'MiniScheduler::DistributedMutex.synchronize'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:365:in 'MiniScheduler::Manager#lock'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:316:in 'MiniScheduler::Manager#tick'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler.rb:74:in 'block (2 levels) in MiniScheduler.start'

اس_المضيف	ip-172-x-x-x-app
معرف_العملية	286281
إصدار_التطبيق	3532c825824ee1259628545c7bd5311ecb918009
قاعدة_البيانات_الحالية	default
اس_المضيف_الحالي	discussion.mcebuddy2x.com
الرسالة	أثناء تشغيل مدير الجدولة
الوقت	7:57 مساءً

من المرجح أن يكون هذا قيدًا على موارد الخادم الخاص بك. ما الذي تشغله الذاكرة العشوائية (RAM) حاليًا؟ هل تملك أي تفاصيل عن القطرة (droplet) التي تعمل عليها؟

إنه جهاز مخصص يعمل بتشغيل مثيل واحد فقط من discourse. ولا يبدو أن هناك نقصًا في الذاكرة العشوائية أو مساحة التبادل.

متى قمت آخر مرة بترقية Docker، ونظام التشغيل، وصورة Discourse؟ هل يعمل النظام بأحدث إصدارات جميع المكونات الثلاثة؟

تم آخر تشغيل لترقية CLI/docker وتحديث نظام التشغيل الأسبوع الماضي. سأحاول مرة أخرى.


كان يعمل بشكل جيد في إصدار النسخة التجريبية قبل بضعة أسابيع. بدأ هذا بعد التحديث من النسخة التجريبية إلى الإصدار النهائي عبر خيار الترقية عبر المتصفح.

هل يمكنك تشغيل ./launcher enter app ثم:

ulimit -u

هذا يُظهر الحد الأقصى لعدد عمليات/خيوط المستخدم المسموح بها.

ulimit -a

هذا يُظهر جميع حدود الموارد.

cat /sys/fs/cgroup/pids.max

هذا يتحقق من الحد الأقصى لعدد العمليات (PIDs) المسموح به لحاوية أو نظام cgroup.


الآن استخدم logout للعودة إلى المضيف:

systemctl show docker | grep TasksMax

هذا يتحقق مما إذا كان systemd قد فرض حدًا للمهام/الخيوط على خدمة Docker.

systemctl show containerd | grep TasksMax

هذا يقوم بنفس نوع الفحص، لكن لخدمة containerd بدلاً من Docker مباشرةً.

docker inspect app | grep -i pid

هذا يتحقق من حدود وإعدادات العمليات/معرفات العمليات (PIDs) لحاوية Discourse الخاصة بك. الأمر grep -i pid: يقوم بفلترة أي شيء يحتوي على «pid» (بغض النظر عن حالة الأحرف).

إذا استمر ظهور الأخطاء، يرجى لصق مخرجات هذه الأوامر هنا، فهذا سيكون مفيدًا.

./launcher enter app

إعجاب واحد (1)

إليك المعلومات، فكل شيء تقريبًا غير محدود

يبدو أن إعادة البناء من واجهة سطر الأوامر قد حلّت المشكلة. سأواصل مراقبتها. يبدو أن شيئًا ما يتعلق بتحديث المتصفح من النسخة التجريبية إلى النسخة المستقرة خلال الأسبوع الماضي هو ما أثار هذه المشكلة.

هل يجب أن تكون هناك قيود على ترقية المتصفح؟ هل يمكن لترقية المتصفح اكتشاف المشكلات المحتملة وإبرازها أو منع حدوث الترقية؟

إعجاب واحد (1)

من المرجح أن إعادة البناء أعادت تعيين موضع cgroup للحاوية، مما يفسر استقرارها مرة أخرى.

نظرًا لوجود أخطاء “can’t alloc thread” الأصلية، ولأن كل شيء آخر (ulimits، TasksMax، معرّفات عمليات Docker) غير محدود، فإن المشتبه به المتبقي هو ضغط cgroup الخاص بمعرّفات العمليات (PIDs).

هل يمكنك التحقق أثناء الحمل الطبيعي:

cat /sys/fs/cgroup/pids.current

[1]

cat /sys/fs/cgroup/pids.max

[2]

إذا كان pids.current يقترب من ~2000+ مقارنة بحد أقصى يبلغ ~2285، فسيكون ذلك تأكيدًا على أن الحاوية كانت تصل إلى سقف معرّفات العمليات في cgroup خلال دفعات إعادة الاتصال بجدول المواعيد / Redis.

هذا سيُفسّر أيضًا سبب ظهور المشكلة فقط بعد الترقية (زيادة في تبديل الخيوط)، ولماذا أدت إعادة البناء إلى تنظيفها مؤقتًا.


  1. كم عدد العمليات (معرّفات العمليات/الخيوط) التي تعمل حاليًا داخل الحاوية/cgroup ↩︎

  2. الحد الأقصى لعدد العمليات (معرّفات العمليات/الخيوط) المسموح به في تلك الحاوية (الحاوية الخاصة بك) ↩︎

إعجاب واحد (1)