Django
WSGI:從守護程序收到的截斷或過大的響應標頭
系統配置:Apache2、Django 1.10、Python 3、Ubuntu 16.04 LTS
姜戈
debug=True
。/var/log/apache2/error.log
[52:53.057967] [wsgi:error] [pid 4303] [client 1.1.1.22:24409] Timeout when reading response headers from daemon process 'example.org': /home/user/dir/project/main_app/wsgi.py [52:58.466726] [wsgi:error] [pid 4305] [client 1.1.1.10:9787] Truncated or oversized response headers received from daemon process 'example.org': /home/user/dir/project/main_app/wsgi.py [52:58.466729] [wsgi:error] [pid 4304] [client 1.1.1.4:18417] Truncated or oversized response headers received from daemon process 'example.org': /home/user/dir/project/main_app/wsgi.py [52:58.466726] [wsgi:error] [pid 4307] [client 1.1.1.22:35116] Truncated or oversized response headers received from daemon process 'example.org': /home/user/dir/project/main_app/wsgi.py [52:58.466756] [wsgi:error] [pid 4306] [client 1.1.1.22:19242] Truncated or oversized response headers received from daemon process 'example.org': /home/user/dir/project/main_app/wsgi.py [52:58.467164] [wsgi:error] [pid 4336] [client 1.1.1.4:34187] Truncated or oversized response headers received from daemon process 'example.org': /home/user/dir/project/main_app/wsgi.py [52:58.467212] [wsgi:error] [pid 4342] [client 1.1.1.22:28212] Truncated or oversized response headers received from daemon process 'example.org': /home/user/dir/project/main_app/wsgi.py, referer: http://example.org/ [52:58.467282] [wsgi:error] [pid 4331] [client 1.1.1.22:31045] Truncated or oversized response headers received from daemon process 'example.org': /home/user/dir/project/main_app/wsgi.py [52:58.467426] [wsgi:error] [pid 4341] [client 1.1.1.70:22784] Truncated or oversized response headers received from daemon process 'example.org': /home/user/dir/project/main_app/wsgi.py, referer: http://example.org/
我不知道錯誤的原因。但我已將其範圍縮小到 Django wsgi 程序。由於伺服器正確託管靜態文件。
雖然 Cloudflare 有時會顯示 502:Bad Gateway Error,但伺服器本身會顯示 500:Internal Server Error。
我已經嘗試重新啟動伺服器並檢查 Django 的(調試)日誌文件。Django 日誌文件中沒有錯誤資訊(完全沒有)。
我應該如何調試問題?由於 Django 沒有記錄任何內容,我認為問題可能是在 wsgi 中引起的。
注意:伺服器之前工作正常。我做了一些更改*(按原樣還原);Django 外殼工作正常。
變化*
- 安裝了 django-pandas、django-model-utils、numpy、scikit-learn
- 利用上述庫的程序。(此更改恢復為原始狀態)
在其他類似的問題中,問題是在上傳大文件時引起的。
問題的原因是numpy。
已知 Python C 擴展模組(如 numpy)在 mod_wsgi 下使用時會導致超時。
我在初始搜尋中沒有找到的類似問題由作者回答和解釋
mod_wsgi
說 -一些使用 C 擴展模組的 Python 第三方包,包括 scipy 和 numpy,只能在 Python 主解釋器中工作,不能在子解釋器中使用,因為 mod_wsgi 預設使用。結果可能是執行緒死鎖、不正確的行為或程序崩潰。
資料來源:Graham Dumpleton在安裝 scipy 後對非響應式 apache + mod_wsgi 的回答
解決方案
將以下行添加到您的
httpd.conf
. 在我的情況下,文件是/etc/apache2/apache2.conf
.WSGIApplicationGroup %{GLOBAL}