Nginx
阻止 NGINX 在本地記憶體目錄
因此,我目前面臨的問題是,當發出 HTTP 請求時,我係統上的 NGINX 會一直在記憶體中記憶體大量影片文件。這導致 NGINX 使用 20GB 以上的記憶體,我不得不頻繁執行
sync; echo 1 > /proc/sys/vm/drop_caches
*(清除頁面記憶體)*以停止持續交換。我在下面提供了相關配置。nginx.conf
location /protected/ { internal; alias /usr/share/nginx/html/videos/; }
腳本.php
function Download(){ global $path, $fname; $file = "$path/$fname"; header("Content-Type: video/mp4"); header("Content-Length: " . filesize($file)); header('Content-Disposition: attachment; filename="'.$fname.'"'); header("X-Accel-Redirect: /protected/$fname"); exit; }
我在 nginx.conf 中嘗試過的內容:
sendfile off; if_modified_since off; expires off; etag off; proxy_no_cache 1; proxy_cache_bypass 1; open_file_cache off;
PS:我正在使用 pcstat 和 fincore 計算這些文件的記憶體使用量,這些 MP4 文件在使用者觀看時被 100% 記憶體,每個文件的大小為 5GB+。
可以使用設置禁用 nginx 服務的文件的作業系統記憶體
directio <size>
。<size>
是文件大小的門檻值,大於該大小的文件將直接使用DMA複製,並且文件不被記憶體。