# التحديث يستغرق حوالي 20 دقيقة وتوقفات تحديث التقدم (مؤقتًا) عند خطوة multisite:migrate

**URL:** https://meta.discourse.org/t/update-takes-20-minutes-and-progress-update-breaks-temporarily-at-step-multisite-migrate/326533
**Category:** Support
**Tags:** dev-ops
**Created:** [14 سبتمبر 2024، 11:00م UTC](https://meta.discourse.org/t/update-takes-20-minutes-and-progress-update-breaks-temporarily-at-step-multisite-migrate/326533 "2024-09-14T23:00:48Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![schneeland](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schneeland/32/275391_2.png) [@schneeland](https://meta.discourse.org/u/schneeland)
#### Post date: [14 سبتمبر 2024، 11:00م UTC](https://meta.discourse.org/t/update-takes-20-minutes-and-progress-update-breaks-temporarily-at-step-multisite-migrate/326533/1 "2024-09-14T23:00:48Z")

</div>

لقد أجريت التحديث الأسبوعي لموقع Discourse الخاص بنا، ووجدت أنه بدلاً من أن يستغرق 1-2 دقيقة كالمعتاد، فقد استغرق الأمر 20 دقيقة هذه المرة. كما أن تحديث التقدم تعطل مؤقتًا مع أخطاء مهلة في وحدة تحكم Chrome في الخطوة `$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate` (لقطة الشاشة أدناه).

لقد تمكنت من رؤية ما كان يحدث على الخادم (ضغط على postmaster وأحيانًا على ruby)، وفي النهاية استؤنف تحديث التقدم، ولكن بشكل عام يبدو أن هناك مشكلة محتملة مع عمليات الترحيل الحالية.

من سجلات التحديث، يبدو أن عملية الترحيل المسؤولة عن وقت التشغيل الطويل كانت `DropTrgmIndexesOnUsers`. لقد قمت بتضمين الجزء المعني من السجل مباشرة في هذا المنشور أدناه (السجل الكامل مرفق كملف نصي في حال الحاجة إليه لمزيد من التحليل).

 ![image](https://global.discourse-cdn.com/meta/original/4X/d/d/7/dd79a0bb132c607a7e3d3496c764ddbcadea0dcb.png)

```plaintext
********************************************************
 ***Please be patient, next steps might take a while***
 ********************************************************...
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
discourse-bbcode is already at latest compatible version
discourse-data-explorer is already at latest compatible version
docker_manager is already at latest compatible version
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
Multisite migrator is running using 1 threads

Migrating default
== 20240912061702 DropUserSearchSimilarResultsSiteSetting: migrating ==========
-- execute("DELETE FROM site_settings WHERE name = 'user_search_similar_results';\n")
   -> 0.0006s
== 20240912061702 DropUserSearchSimilarResultsSiteSetting: migrated (0.0015s) =

== 20240912061806 DropTrgmIndexesOnUsers: migrating ===========================
-- execute("DROP INDEX IF EXISTS index_users_on_username_lower_trgm;\nDROP INDEX IF EXISTS index_users_on_name_trgm;\n")
   -> 1290.7163s
== 20240912061806 DropTrgmIndexesOnUsers: migrated (1290.7169s) ===============

== 20240912212253 IncreaseExternalAvatarUrlLimitTo2000: migrating =============
-- change_column(:single_sign_on_records, :external_avatar_url, :string, {:limit=>2000})
   -> 0.0011s
== 20240912212253 IncreaseExternalAvatarUrlLimitTo2000: migrated (0.0017s) ====

Seeding default
***Bundling assets. This will take a while*** 
$ bundle exec rake themes:update assets:precompile
Building
Environment: production
building...
...

```

السجل الكامل: [upgrade-log-2024-09-15.txt](https://meta.discourse.org/uploads/short-url/kDtCh48wVBjjxyTtSkLZRNp0znT.txt) (124.7 KB)

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [16 سبتمبر 2024، 12:05ص UTC](https://meta.discourse.org/t/update-takes-20-minutes-and-progress-update-breaks-temporarily-at-step-multisite-migrate/326533/3 "2024-09-16T00:05:34Z")

</div>

لست متأكدًا من وجود أي شيء يمكننا فعله الآن.

نحتاج إلى إسقاط الفهرس وإذا كان منتداك مزدحمًا للغاية في ذلك الوقت، فقد يستغرق الأمر بعض الوقت.

هل نفترض أن كل شيء على ما يرام الآن؟

---

<div class="post-metadata">

### Author: ![schneeland](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schneeland/32/275391_2.png) [@schneeland](https://meta.discourse.org/u/schneeland)
#### Post date: [16 سبتمبر 2024، 10:51ص UTC](https://meta.discourse.org/t/update-takes-20-minutes-and-progress-update-breaks-temporarily-at-step-multisite-migrate/326533/4 "2024-09-16T10:51:29Z")

</div>

نعم، عادت الأمور إلى طبيعتها الآن، لذلك لا توجد مشكلة فورية.

السبب الرئيسي الذي دفعني للإبلاغ عن ذلك هنا هو أن مؤشر التقدم كان معطلاً مؤقتًا، وربما يؤدي ذلك إلى اعتقاد الناس بأن التحديث قد تعطل (لست متأكدًا من مقدار ما يمكن فعله هنا).

> [@sam](#):
>
> نحتاج إلى إسقاط الفهرس وإذا كان منتداك مشغولاً للغاية في ذلك الوقت، فقد يستغرق الأمر بعض الوقت.

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

لذلك السؤال الآخر الذي خطر ببالي لاحقًا هو: هل يتطلب Discourse فعليًا قرص SSD للمجتمعات مثلنا (حوالي 6 آلاف مستخدم، حوالي 2.5 مليون مشاركة)؟ لأن الخادم الحالي لائق (AMD Ryzen 5 3600، 64 جيجابايت من ذاكرة الوصول العشوائي)، ولكنه يحتوي على أقراص دوارة كلاسيكية وإذا كانت هذه مشكلة، فسنحتاج إلى التبديل إلى قرص SSD قبل أن نبدأ العمل.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [16 سبتمبر 2024، 11:13ص UTC](https://meta.discourse.org/t/update-takes-20-minutes-and-progress-update-breaks-temporarily-at-step-multisite-migrate/326533/5 "2024-09-16T11:13:03Z")

</div>

إن إسقاط هذا الفهرس على خادم به 6 آلاف مستخدم فقط يجب أن يستغرق أجزاء من الثانية، حتى على قرص معدني دوار؛ إنه مؤشر قوي على أن قاعدة بياناتك تعاني من نقص في الموارد.

---

<div class="post-metadata">

### Author: ![schneeland](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schneeland/32/275391_2.png) [@schneeland](https://meta.discourse.org/u/schneeland)
#### Post date: [16 سبتمبر 2024، 11:38ص UTC](https://meta.discourse.org/t/update-takes-20-minutes-and-progress-update-breaks-temporarily-at-step-multisite-migrate/326533/6 "2024-09-16T11:38:07Z")

</div>

حسنا، شكرا! لم أكن على علم بأن ضبط قاعدة البيانات سيكون مطلوبًا (نحن نستخدم إعداد الحاوية الواحدة) ولا يوجد الكثير قيد التشغيل على الجهاز (Discourse، Mailcow، Traefik، Crowdsec). لكنني سألقي نظرة فاحصة.  
هل هناك أي إرشادات للوثائق ذات الصلة في هذا الصدد؟ الشيء الوحيد الذي أعرفه حاليًا هو [https://meta.discourse.org/t/configure-discourse-docker-on-servers-with-more-ram-and-cpu/18569،](https://meta.discourse.org/t/configure-discourse-docker-on-servers-with-more-ram-and-cpu/18569%D8%8C) و `db_shared_buffers` لدينا بالفعل عند `4096MB`.

---

<div class="post-metadata">

### Author: ![tgxworld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tgxworld/32/106117_2.png) [@tgxworld](https://meta.discourse.org/u/tgxworld)
#### Post date: [18 سبتمبر 2024، 1:59ص UTC](https://meta.discourse.org/t/update-takes-20-minutes-and-progress-update-breaks-temporarily-at-step-multisite-migrate/326533/7 "2024-09-18T01:59:02Z")

</div>

أعتقد أن هذا يرجع إلى أننا لم نقم بإسقاط الفهرس بشكل متزامن.

> يقوم `DROP INDEX` العادي بالحصول على قفل `ACCESS EXCLUSIVE` على الجدول، مما يمنع الوصول الآخر حتى يكتمل إسقاط الفهرس.

يجب إصلاح هذا في [PERF: Update migration to drop index concurrently. by tgxworld · Pull Request #28955 · discourse/discourse · GitHub](https://github.com/discourse/discourse/pull/28955).

@schneeland شكراً لك على تخصيص الوقت للإبلاغ عن المشكلة 👍
