用來存取 NAS 的作業系統: Windows 10 Pro(也可在 NAS 本機用 curl 重現,無需客戶端) NAS 型號: TS-464 (x86_64) 韌體版本 / 建置號: QTS 5.2.10,建置 20260731(5.2.9 也出現過此問題) Web 伺服器: QTS 內建的 Apache 2.4.65,從 Web 共用資料夾提供靜態檔案
症狀
在多個 HTTP 請求同時進行時,有一部分回應會以 HTTP 200 OK 且 Content-Length: 0 並且沒有內文的狀態回傳。狀態碼是 200,所以只檢查狀態碼的話都會以為成功。受影響的檔案是一般的靜態資產——CSS 與 JS。在瀏覽器中,這會表現為頁面載入時缺少樣式或腳本,但控制台上沒有任何錯誤訊息,因為空的 200 並不算錯誤。
連續請求(非並行)都不會失敗。必須同時有約 4 個以上請求在進行時才會出現問題。
重現方式(不需瀏覽器,也不經外部網路)
請在 NAS 本地以 SSH 執行下列指令,僅經由 loopback 介面存取靜態檔案:
cd /tmp; rm -f p_*.txt
F=$(find /share/Web/<your_site> -name '*.css' -o -name '*.js' | head -40)
for r in 1 2 3; do
for f in $F; do u=${f#/share/Web/}
(curl -sk -o /dev/null --http1.1 -w "%{http_code} %{size_download}
" "https://127.0.0.1:8443/$u" >> p_$r.txt) &
done
wait
done
echo "total=$(cat p_*.txt | wc -l) empty=$(awk '$1==200 && $2==0' p_*.txt | wc -l)"
重點有兩點:必須平行執行請求(靠 & 與 wait),而且要統計的是主體大小,而非狀態碼。
測量結果
| 日期 | 變體 | 請求數 | 空回應(200 + 0 bytes) |
|---|---|---|---|
| 2026/9/2 | 並行, HTTP/1.1 | 120 | 7-13,視每次而異 |
| 2026/9/14 | 並行, HTTP/1.1 | 120 | 10 |
| 2026/9/14 | 並行, HTTP/1.1 | 40 | 10 |
| 2026/9/22 | 並行, gzip / 無 gzip | 120 / 120 | 7 / 13 |
| 2026/10/12 | 並行, gzip / 無 gzip | 120 / 120 | 9 / 12 |
| 任一天 | 連續 | 40 | 0 |
所以同時併發請求時,根據執行結果約佔 3% 到 25%。
已由測量排除的可能因素
- ModSecurity(模組確實已關閉—無改變)
EnableMMAP Off/EnableSendfile Off(無改變)- mod_deflate / gzip(有無均會發生)
- HTTP/2 與 HTTP/1.1(兩者都會發生)
- php-fpm(純靜態檔案也會)
- QTS 從 5.2.9 升至 5.2.10(問題仍在)
- NAS 重新開機(問題仍在)
- 網路:在本機 loopback 也可重現
Apache 日誌
啟用 LogLevel debug 的錯誤日誌,針對失敗請求完全沒任何紀錄——所有連線記錄都顯示為標準關閉。每次請求倒是都有出現一條無關訊息:ModSecurity requires mod_unique_id to be installed。
注意:/etc/init.d/Qthttpd.sh 每次啟動 Apache 時都會強制加上 ErrorLog /dev/null 及 LogLevel crit,除非 QWEB CustomLog 為 TRUE,所以重啟時可能會悄悄丟棄你的日誌設定。對 Apache pid 使用溫和的 kill -USR1 可以套用配置而不會遇到上述問題。
詢問其他 TS-464 用戶
你能用 QTS 5.2.10 在你的機器上重現此狀況嗎?上述腳本約一分鐘即可,只會讀取檔案。我想知道問題是出在特定機型,特定韌體還是更為普遍。
自 9 月 2 日(Q-202609-51425)起已經有開支援單。到目前為止,我還沒得到廠商實驗室是否能重現該問題這唯一一個問題的回覆。