疑難排解503錯誤,因必須變更預設清漆設定

本文提供解決方案,用於疑難排解503錯誤,該錯誤是由某些清漆快取預設值不足以供您的存放區使用所導致。

問題

如果Adobe Commerce使用的快取標籤長度超過Varnish預設的8192位元組,您會在瀏覽器中看到HTTP 503 (後端擷取失敗)錯誤。 錯誤可能會顯示類似下列的內容: "錯誤503後端擷取失敗。 後端擷取失敗"

解決方案

若要解決此問題,請增加Varnish組態檔中http_resp_hdr_len引數的預設值。 http_resp_hdr_len引數指定最大標頭長度​ ​之內,總預設回應大小為32768個位元組。

NOTE
如果http_resp_hdr_len值超過32K,您也必須使用http_resp_size引數增加預設回應大小。
  1. 以具有root許可權的使用者身分,在文字編輯器中開啟您的「消失」設定檔:

    • CentOS 6: /etc/sysconfig/varnish
    • CentOS 7: /etc/varnish/varnish.params
    • Debian: /etc/default/varnish
    • Ubuntu: /etc/default/varnish
  2. 搜尋http_resp_hdr_len引數。

  3. 如果引數不存在,請在thread_pool_max之後新增。

  4. http_resp_hdr_len設為等於最大類別的產品計數乘以21的值。 (每個產品標籤的長度約為21個字元。) 例如,如果最大類別有3,000種產品,則將該值設為65536個位元組應該有效。 例如: conf -p http_resp_hdr_len=65536 \

  5. http_resp_size設定為符合增加之回應標頭長度的值。 例如,使用增加的標頭長度和預設回應大小的總和是良好的起點(例如,65536 + 32768 = 98304): -p http_resp_size=98304。 程式碼片段如下:

    code language-none
    # DAEMON_OPTS is used by the init script.
    DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \
        -f ${VARNISH_VCL_CONF} \
        -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \
        -p thread_pool_min=${VARNISH_MIN_THREADS} \
        -p thread_pool_max=${VARNISH_MAX_THREADS} \
        -p http_resp_hdr_len=65536 \
        -p http_resp_size=98304 \
        -p workspace_backend=98304 \
        -S ${VARNISH_SECRET_FILE} \
        -s ${VARNISH_STORAGE}" \
    

健康情況檢查逾時 health-check-timeouts

如果您在Varnish設定為快取應用程式時停用快取,並且當Adobe Commerce處於開發人員模式時,則可能無法登入管理員。

發生此狀況是因為預設健康狀態檢查的timeout值為2秒。 健康情況檢查可能需要超過2秒的時間來收集和合併每個健康情況檢查要求的資訊。 如果10次健康情況檢查中有6次發生這種情況,則會將Adobe Commerce伺服器視為不健康。 當伺服器狀況不良時,清漆會提供過時內容。

由於管理員是透過Varnish存取,因此您無法登入管理員以啟用快取(除非Adobe Commerce再次恢復正常)。 不過,您可以使用下列命令來啟用快取:

$ bin/magento cache:enable

如需使用命令列的詳細資訊,請參閱開始使用命令列組態

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a