文章彙整

修復Magento Cloud上的502錯誤

Astral WebBy Astral Web 3 months agoNo Comments
首頁  /  Magento  /  Magento-2  /  修復Magento Cloud上的502錯誤

502 Bad Gateway錯誤可能是個異常發生的錯誤,在特定的整合(開發)環境中。若在檢查Magento Cloud配置與網路速度後,工程團隊仍無法判斷造成該錯誤的根本原因,此錯誤會很難被分析。

此篇文章主要為簡述可能造成502錯誤的根本原因與將該錯誤降低的建議方式。

大多時間,在某些特定Magento Cloud整合/開發環境,502錯誤是由以下原因造成的。

  1. 數據過度加載。
  2. 同時運行太多cron作業。

 

數據過度加載

Integration等環境比Production與Staging,更應該運用在開發或測試上,因此可能必須修整數據庫(主要為刪除產品),使開發/測試擁有專屬的代表性的範例。

同時運行太多cron作業

在未完整優化成生產環境時,Cron作業可能會降低內存性能。所以最好的辦法是將它們分組運作,來避免遺漏或待處理的作業。

為了更清楚了解目前cron作業的狀態,需要提前檢查數據庫,例如:

MariaDB [main]> select status, count(*) from cron_schedule group by status;

+———+———-+

| status  | count(*) |

+———+———-+

| error   |      535 |

| missed  |     5392 |

| pending |      574 |

| running |        1 |

| success |      852 |

+———+———-+

 

MariaDB [main]> select job_code, status, count(*) from cron_schedule where date(created_at) = CURDATE() and status = ‘missed’ group by job_code, status;

+———————————————–+——–+———-+

| job_code                                      | status | count(*) |

+———————————————–+——–+———-+

| catalog_event_status_checker                  | missed |      107 |

| catalog_product_frontend_actions_flush        | missed |        6 |

| catalog_product_outdated_price_values_cleanup | missed |        5 |

| consumers_runner                              | missed |       75 |

| indexer_reindex_all_invalid                   | missed |      130 |

| indexer_update_all_views                      | missed |      138 |

+———————————————–+——–+———-+

 

從這些例子中可看到,許多cron作業沒有被執行,所以可透過在.magento.app.yaml 更新來完成劃分cron作業且分組運行。這是為了避免一連串的執行且能進一步降低內存的消耗。劃分範例如以下:

首先確定目前可被使用在系統中的組別:

[email protected]:~$ find . -name cron_groups.xml

./vendor/amasty/base/etc/cron_groups.xml

./vendor/magento/module-message-queue/etc/cron_groups.xml

./vendor/magento/module-staging/etc/cron_groups.xml

./vendor/mailchimp/mc-magento2/etc/cron_groups.xml

 

根據以上的輸出,cron作業可輕鬆地被劃分成幾組:

# Default Magento 2 cron jobs

default:

        spec: “*/10 * * * *”

        cmd: “php bin/magento cron:run –group=default”

    …

consumers:

        spec: “*/19 * * * *”

        cmd: “php bin/magento cron:run –group=consumers”

    staging:

        spec: “*/21 * * * *”

        cmd: “php bin/magento cron:run –group=staging”

 

以上建議只針對一些特定的整合/開發環境。作業分組如何劃分取決於每個腳本及環境。

在這特定的範例中,在將cron作業分組、推上更改及清除cron作業表後,這些改變將反映在資料庫中。

MariaDB [main]> select status, count(*) from cron_schedule group by status;


+---------+----------+
| status | count(*) |
+---------+----------+
| error | 535 |
| missed | 5392 |
| pending | 574 |
| running | 1 |
| success | 852 |
+---------+----------+
+---------+----------+
| status | count(*) |
+---------+----------+
| error | 0 |
| missed | 0 |
| pending | 0 |
| running | 12 |
| success | 24 |
+---------+----------+

備註:資料庫資訊是經過時間累積的。

最後,值得一提的是該配置是在文件app/etc/env.php中定義的,且每個環境都可擁有自身的env.php及自己的配置。

 

本篇的文章分享就到這裡啦!知道如何在Adobe Magento Cloud上修復502錯誤了嗎~喜歡歐斯瑞文章的讀者們,趕緊追蹤我們的FB粉絲團IG,也記得訂閱電子報,就不會錯過第一手新知分享囉!有任何問題也歡迎聯繫我們

 000

推薦文章

Categories:
  Magento-2Magento解決Magento問題

留下回應

你的電子郵件地址不會被公開.