Ⅰ 用Netty作http靜態資源伺服器,類似Nginx這樣的,大一點的文件響應不正常怎麼回事
您好,對於你的遇到的問題,我很高興能為你提供幫助,我之前也遇到過喲,以下是我的個人看法,希望能幫助到你,若有錯誤,還望見諒!。展開全部
Nginx+PHP-fpm組合,以內存佔用小,負載能力強壯的特點,成為小內存VPS建站的首選組合。我們一起來探討一下nginx+php-fpm高負載的優化方法。
先來看看nginx配置參數的優化。nginx是前端接受瀏覽器端請求的web server, 配置可調的參數如下:
下面是示例nginx配置
user www-data;
worker_processes 8;
#worker_processes 調至8, 大於8沒什麼用,小於8,nginx性能發揮不出來
worker_cpu_affinity 01 10 01 10 01 10 01 10;
#worker_cpu_affinity 參數可以使nginx充分發揮多核Cpu的性能優勢 ,上面的配置是針對雙核CPU的配置。01表示第一個核,10表示第二個核,如果是四核cpu,一至四個核分別表示為 0001 0010 0100 1000
error_log /var/log/nginx/error_log crit;
pid /var/run/nginx.pid;
worker_rlimit_nofile 10240;
#worker_rlimit_nofile 是nginx能打開文件的最大句柄數,我們需要把這個數字設大一點。
#linux系統的文件查看數限制查看是用 ulimit -n ,修改這個限制是用 ulimit -HSn 65535
events
{
use epoll;
#必須要用高效的event驅動,以獲得最大性能
worker_connections 10240;
#max_clients = worker_processes * worker_connections/4 (最大連接數的計算公式)
}
http
{
include /etc/nginx/deny.iplist;
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_name_in_redirect off;
server_names_hash_bucket_size 128;
server_tokens off;
client_header_buffer_size 32k;
#client頭buffer可以調為32K
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfileon;
tcp_nopush on;
keepalive_timeout 65;
tcp_nodelayoff;
client_body_timeout 10;
client_header_timeout 10;
send_timeout 60;
output_buffers 1 32k;
postpone_output 1460;
open_file_cache max=1000 inactive=20s;
open_file_cache_valid30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
fastcgi_busy_buffers_size 32k;
fastcgi_temp_file_write_size 32k;
gzip on;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_proxied expired no-cache no-store private auth;
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=staticfilecache:80m inactive=1d max_size=2500m;
proxy_temp_path /var/lib/nginx/proxy;
proxy_connect_timeout 300;
proxy_read_timeout 120;
proxy_send_timeout 120;
proxy_buffer_size 16k;
proxy_buffers 4 16k;
upstream wordpressnginx
{
server 127.0.0.1:6000 weight=1 fail_timeout=120s;
}
include /etc/nginx/sites-enabled/*;
}
上面的配置裡面,有多處設及到buffer和timeout的地方。我們可以根據需要,慢慢調大這些參數,buffer自然是大點好,但不要太大。16K是標准配置,可以增加到32,往上加更大也不是不行,但 要考慮到你系統內存大不大,夠不夠用。timeout是超時,如果伺服器很繁忙,不妨增加超時等待時間,以避免頻繁出現502錯誤。
gzip是必須開啟的,reverse proxy在允許的情況下,也盡量開啟,一 是可以提升響應效率,二是降低伺服器壓力,gzip開啟後更可以節省伺服器帶寬。
nginx主要的配置如上所述。
現在看一下php-fpm的配置。
[global]
pid = run/php5-fpm.pid
process_control_timeout = 5
[www]
listen = /dev/shm/php-cgi.sock
listen.allowed_clients = 127.0.0.1
user = www-data
group = www-data
pm = static
pm.max_children = 7
#這個決定了 php-fpm的總進程。我們要想同時響應更多的並發數,這個數值要盡可能大,比如500,1000
pm.max_requests = 10000
#並發數越大,這個最大請求數應該越大,並發數小,這個數值也應該越小。它表示,php-fpm進程響應了10000個並發請求之後,就自動重啟一下進程。
request_terminate_timeout = 30
#表示等待30秒後,結束那些沒有自動結束的php腳本,以釋放佔用的資源。
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
小內存的vps雖然經過使用php-fpm+nginx,提升了系統的效率,可以同時響應較多的並發請求,但是當並發數上來了,比如從100上升到10000,小內存肯定響應不過來,cpu也會 因為太忙,而導致系統負載變得很高很高,這個時候,我們就要考慮升級硬體配置了。
內存越大越好,CPU核心頻率越高越好,CPU核越多越好。硬碟最好是SSD+RAID10。這樣性能不僅高,數據安全也有保障。
上面所提到的各個配置參數,設及到數值的,不妨自己 多試著調小,調大參數,然後重啟下nginx或者php-fpm進程,看看效果怎麼樣。
下面介紹一個比較好的壓力測試工具,siege.
debian和ubuntu用戶可以通過apt-get install siege來安裝siege.
siege是一個跟ab.exe相似的http壓力測試軟體。
我們可以用siege來測試我們的網站和伺服器性能。
siege -r 100 -c 10
-r 是 repeat , -r 100是重復100次測試
-c 10是表示模擬10個用戶同時並發連接
最後面是要測試的URL地址。
測試過程中可以隨時按CTRL+C中止進程,siege會生成一個報告給我們。
我們可以同時根據siege的測試結果和監視伺服器的負載情況,對系統壓力狀況進行一個深入了解和分析。接下來可以幫助我們判斷該如何進行下一步操作,是繼續優化配置,還是升級硬體。非常感謝您的耐心觀看,如有幫助請採納,祝生活愉快!謝謝!
Ⅱ Django 靜態文件與動態文件
編輯 settings:
MEDIA_ROOT 和 MEDIA_URL 代表的是用戶上傳後的文件保存的地方。可以理解為存放可變文件的文件夾。
這兩個參數有什麼用處呢?
在 Django 的 FileField 和 ImageField 這樣的 Model 類中,有 upload_to 參數可選。當 upload_to 設置相關的地址後,如例子:
文件上傳後將自動保存到: os.path.join(MEDIA_ROOT, upload_to) ,在本例中就是: /static/uploads/test_pictures
而 MEDIA_URL ,則代表用戶可以通過怎樣的 URL 來訪問這些上傳後的文件資源。
在本例子中,本機地址是: http://127.0.0.1/ , MEDIA_URL 設置為 /static/uploads/
那麼通過: http://127.0.0.1//static/uploads/文件名 就可以訪問相關的上傳圖片或者其他文件。
STATIC_ROOT 和 STATIC_URL 則是網站中,用於網站放置的靜態圖片、CSS、JS 等文件的保存地址。可以理解為,保存網站運行中不會再變文件的文件夾(即不會刪除或者新增)
STATIC_URL ,同 MEDIA_URL 類似;設置 STATIC_URL 為 "/static/" 時候,通過: http://127.0.0.1/static/文件名 就可以訪問相關的靜態文件了。
STATIC_ROOT 是一個比較特殊的文件夾。這是 Django 的開發模式和部署模式區別最大的地方。
通常我們在開發模式下,可以在我們所在的 project 下建立相應的 app, 然後每個 app 下都建立相應的 static 文件夾。在開發模式下(Debug=True),Django 將為我們自動查找這些靜態文件(每個app)並在網頁上顯示出來。然而,在部署模式下,Django 認為這些工作交由 web 伺服器來運行會更有效率。
因此,在部署時,我們需要運行一下 :
這個命令將會把每個 app 里的 static 目錄下的文件 到 STATIC_ROOT 這個文件夾下。
如果在部署模式下,即: (Debug=False) 訪問相關網頁,如: http://127.0.0.1/static/文件名 ,將不會訪問 Django下各個 App 中的 static 文件夾,而是 STATIC_ROOT 中所指定的文件夾。
為了在部署模式下正確使用,我們還需要在 urls.py 中添加以下:
這相當於告訴 Django 碰到一個 "static" 開頭的鏈接時,該如何處理。
了解完以上之後,我們讓圖片在前端顯示出來。
編寫一個 show 視圖函數,來傳遞動態圖片:
然後編寫 show.html :
Ⅲ 靜態網頁是什麼
靜態網頁是指
在網站設計中,純粹HTML(標准通用標記語言下的一個應用)格式的網頁通常被稱為「靜態網頁」,靜態網頁是標準的HTML文件,它的文件擴展名是.htm、.html,可以包含文本、圖像、聲音、FLASH動畫、客戶端腳本和ActiveX控制項及JAVA小程序等。靜態網頁是網站建設的基礎,早期的網站一般都是由靜態網頁製作的。靜態網頁是相對於動態網頁而言,是指沒有後台資料庫、不含程序和不可交互的網頁。靜態網頁相對更新起來比較麻煩,適用於一般更新較少的展示型網站。容易誤解的是靜態頁面都是htm這類頁面,實際上靜態也不是完全靜態,他也可以出現各種動態的效果,如GIF格式的動畫、FLASH、滾動字幕等。
Ⅳ 文件伺服器可以為所有工作站服務
文件伺服器構建指南——准備篇(1) 數量激增的移動設備、多計算機家庭、寬頻互聯網接入、成本低廉的海量存儲器以及其他許多家庭電子產品被PC 所取代,比如DVD 、藍光光碟和CD 播放機等媒體設備被家庭影院PC 所取代,這促使人們對專用文件伺服器計算機的興趣越來越濃厚。無論你是擁有台式機和筆記本電腦的普通家庭用戶,還是擁有多隻台式機、筆記本電腦、上網本和平板電腦的高級用戶,經常在工作單位或在路上遠程訪問家庭系統,你的計算體驗都可能會因共享的數據訪問而得到豐富。無論你的預算和存儲需求很一般還是很大,本文介紹的文件伺服器系統構建指南都能滿足你的需要。
何謂文件伺服器?
實際上,文件伺服器是一種計算機,負責存儲文件、連接到網路上,並為多個工作站計算機提供共同訪問那些文件的共享機制。文件伺服器不執行任何計算任務——也就是說,它們不為客戶機運行程序。此外,它們並不像Web 伺服器那樣提供動態內容。另外,文件伺服器也不像資料庫伺服器,因為前者不提供對共享資料庫的訪問,而後者提供這種訪問。文件伺服器既可以通過Windows 或Unix 協議,經由本地內聯網,提供對靜態文件的訪問,也可以通過文件傳輸或超文本傳輸協議(FTP 和HTTP ),經由互聯網,提供對靜態文件的訪問。 文件伺服器可以用來做什麼?
文件伺服器的主要功能就是存儲。對於家庭用戶來說,一個中央存儲位置可以提高總體計算效率,降低總體計算成本。你把所有的重要文件都放在一個位置後,就不用擔心目前在處理不同版本的文件,也不用擔心因多份不太重要的文件分散在不同系統上而浪費了磁碟空間,可以通過合適的計算機,將合適的文件備份到合適的備份存儲介質上,確保家裡的每一台PC 都可以訪問合適的文件,諸如此類。
從系統構建者的角度來看,文件伺服器還可以把你的各台工作站計算機解放出來,不必容納多塊硬碟,而且減少了總體的硬碟開支。隨著固態硬碟的興起——這種新興硬碟提供了極高的性能,但每GB 的存儲成本較高,文件伺服器可以讓工作站從此擺脫標准磁碟的性能桎梏——對於筆記本電腦和上網本來說這一點特別重要;固態硬碟的小容量常常是個關鍵的障礙因素,因為這些移動電腦通常只能裝一隻硬碟。
專用文件伺服器讓家裡的每個用戶(不管他們是在家裡還是在路上)都可以訪問所需的每一個文件,不管他們在某個特定的時間使用哪種特定的設備。專用文件伺服器還讓你可以與朋友和同事共享自己的文件,只要為他們提供URL 、登錄名和密碼,然後指定對方可以訪問的內容。比如說,也許你希望與親朋好友共享你孩子的野營照片,但是你的雲存儲容量裝不下所有那些照片以及你之前存儲在雲存儲硬碟中的其他所有內容。也許你想與同事共享敏感信息,而不希望把敏感信息上傳至由亞馬遜或其他某家第三方機構擁有的伺服器,但是文件實在太大了,沒法通過電子郵件來發送。或者也許你出差待在酒店時,只是想訪問200GB 大小的MP3庫,但手裡只有一台配備60GB 固態硬碟的上網本。這幾個例子只是體現了文件伺服器的一小部分功效。
盡管如此,要滿足所有這些要求,除了文件伺服器,還有別的選擇。你可以把所有照片倒到
U 盤上,然後下次看到親朋好友時交給對方——但你每次想共享更多的照片,只能這么做;再說了,誰知道你會不會把那隻U 盤拿回來?你也可以把DVD-R 光碟郵寄給同事,但可能DVD-R 光碟4GB 左右的容量不夠大,通過郵局寄的郵件至少得走好幾天才能送達。如果你在路上,可能只帶了攜帶型外部硬碟,暫且不說很佔地方,還可能會丟失或被偷。文件伺服器是可以解決所有這些問題的簡易解決方案。家庭文件伺服器不需要企業級硬體,成本非常低。它們還可以用不會導致電費猛增的耗電部件構建而成。
文件伺服器構建指南——准備篇(2)
由於文件伺服器的主要任務是存儲,所以存儲是需要考慮的最重要因素。你需要多大的存儲空間?想共享用傻瓜數碼相機拍下的50GB 的照片?想共享500GB 的音樂?想共享2TB 的電影DVD ISO鏡像文件?還是想共享30TB 的混合媒體和與工作有關的文件?此外,你的存儲需求在以多快的速度增加?你希望能夠多輕松地擴展文件伺服器的存儲空間?
你希望文件管理起來有多容易?遺憾的是,對於非IT 專業人士來說,許多功能比較強大的文件伺服器操作系統運行起來不是特別輕松。然而,有些文件伺服器操作系統運行起來很輕松。萬一遇到災難,能不能夠恢復文件?把你的文件放在一台計算機上,相當於把所有雞蛋全放在一隻籃子里,風險很大。安全性方面如何?任何一種網路上的任何數據都容易遭到入侵。盡管本指南回答了所有這些問題,但它針對的是家庭用戶,因而勢必會在存儲空間、
管理功能、可恢復性和安全性等方面作出一點犧牲——就因為家庭用戶通常既買不起專業級的文件伺服器解決方案,也不需要這種解決方案。
為什麼構建文件伺服器,而非使用NAS ?
簡而言之,NAS (網路附加存儲)設備是一種計算機硬體。它專門用來提供可以通過網路來訪問的存儲資源。NAS 設備管理起來通常比文件伺服器容易(有些NAS 設備只要點擊幾下滑鼠,插上去就可以運行),但是常常受到專有軟體的限制,存儲容量和擴展性能都不如專用文件伺服器。此外,比較高端的NAS 設備雖然能裝與本文中提到的一些文件伺服器一樣多的硬碟,但是比文件伺服器這個替代方案昂貴。最後,由於NAS 設備在設計時只考慮到一種用途,所以它們的靈活性不如文件伺服器;在擁有多個系統的家庭中,晚些時候可能需要將文件伺服器改裝成一台基本的工作站。盡管如此,雖然NAS 設備不在本指南的探討范圍之內,但就算你之前並不熟悉,它們還是值得研究研究。
本指南的側重點不是詳細介紹能夠執行特定任務的特定價位的特定系統,而是討論操作系統方面的選擇、部件類型,以及這些不同的選擇怎樣最適合滿足不同的要求。也就是說,你可能需要龐大的存儲空間,但不是特別關心備份。或者你可能根本不需要太大的存儲空間,但是想使用一款非常簡易的文件伺服器操作系統。本文提供了多個建議來符合你的要求,但願你能構建起一台稱心如意的文件伺服器!
雖然本指南的重點放在硬體上,但有必要先簡單地討論一下家庭文件伺服器操作系統方面的選擇。
文件伺服器構建指南——操作系統與處理器篇(1) 數量激增的移動設備、多計算機家庭、寬頻互聯網接入、成本低廉的海量存儲器以及其他許多家庭電子產品被PC 所取代,比如DVD 、藍光光碟和CD 播放機等媒體設備被家庭影院PC 所取代,這促使人們對專用文件伺服器計算機的興趣越來越濃厚。無論你是擁有台式機和筆記本電腦的普通家庭用戶,還是擁有多隻台式機、筆記本電腦、上網本和平板電腦的高級用戶,經常在工作單位或在路上遠程訪問家庭系統,你的計算體驗都可能會因共享的數據訪問而得到豐富。無論你的預算和存儲需求很一般還是很大,本文介紹的文件伺服器系統構建指南都能滿足你的需要。
上一篇:文件伺服器構建指南——准備篇
文件伺服器操作系統篇
Windows Home Server 2011
微軟在今年早些時候發布了最新版本的Windows Home Server(WHS )。它的銷售價通常不超過50美元。在市面上所有文件伺服器操作系統當中,對於熟悉Windows 系列桌面操作系統,不大熟悉Unix 或Linux 的用戶來說,WHS2011構建和管理起來最容易。如果你之前安裝和配置過Windows XP、Vista 或7,就能安裝和配置WHS2011,幾乎不需要另外花心思。當然了,