導航:首頁 > 配伺服器 > 伺服器如何對特定請求延時

伺服器如何對特定請求延時

發布時間:2023-01-19 07:36:35

1. 第五章:Web伺服器

5.1各種形狀和尺寸的Web伺服器
Web伺服器會對HTTP請求進行處理並提供響應。術語「Web伺服器」可以用來表示Web伺服器的軟體,也可以用來表示提供Web頁面的特定設備或計算機。
Web伺服器有著不同的風格、形狀和尺寸。有普通的10行Perl腳本的Web伺服器、50MB的安全商用引擎以及極小的卡上伺服器。但不管功能有何差異,所有的 Web伺服器都能夠接收請求資源的 HTTP請求,將內容回送給客戶端(參見圖1-5)。
5.1.1Web伺服器的實現
Web伺服器實現了HTTP和相關的TCP連接處理。負責管理Web伺服器提供的資源,以及對Web伺服器的配置、控制及擴展方面的管理。
Web伺服器邏輯實現了HTTP 協議、管理著Web資源,並負責提供Web伺服器的管理功能。Web伺服器邏輯和操作系統共同負責管理TCP連接。底層操作系統負責管理底層計算機系統的硬體細節,並提供了TCP/IP網路支持、負責裝載Web資源的文件系統以及控制當前計算活動的進程管理功能。

5.3實際的Web伺服器會做些什麼
例5-1顯示的 Perl伺服器是一個Web伺服器的小例子。最先進的商用Web伺服器要比它復雜得多,但它們確實執行了幾項同樣的任務,如圖5-3所示。
(1)建立連接一—接受一個客戶端連接,或者如果不希望與這個客戶端建立連接,就
將其關閉。
(2)接收請求——從網路中讀取一條HTTP請求報文。(3)處理請求——對請求報文進行解釋,並採取行動。(4)訪問資源-———訪問報文中指定的資源。
(5)構建響應——創建帶有正確首部的 HTTP響應報文。(6)發送響應——將響應回送給客戶端。
(7)記錄事務處理過程—-將與已完成事務有關的內容記錄在一個日誌文件中。

5.4第一步——接受客戶端連接
如果客戶端已經打開了一條到伺服器的持久連接,可以使用那條連接來發送它的請求。否則,客戶端需要打開一條新的到伺服器的連接(回顧第4章,復習一下HTTP的連接管理技術)。

5.4.1處理新連接
客戶端請求一條到Web伺服器的TCP連接時,Web伺服器會建立連接,判斷連接的另一端是哪個客戶端,從TCP連接中將IP地址解析出來。'一旦新連接建立起來
並被接受,伺服器就會將新連接添加到其現存Web伺服器連接列表中,做好監視連接上數據傳輸的准備。
Web伺服器可以隨意拒絕或立即關閉任意一條連接。有些Web伺服器會因為客戶端IP地址或主機名是未認證的,或者因為它是已知的惡意客戶端而關閉連接。Web伺服器也可以使用其他識別技術。

5.4.2客戶端主機名識別
可以用「反向 DNS」對大部分Web伺服器進行配置,以便將客戶端IP地址轉換成客戶端主機名。Web伺服器可以將客戶端主機名用於詳細的訪問控制和日誌記錄。但要注意的是,主機名查找可能會花費很長時間,這樣會降低Web事務處理的速度。很多大容量Web伺服器要麼會禁止主機名解析,要麼只允許對特定內容進行解析。
可以用配置指令HostnameLookups啟用Apache的主機查找功能。比如,例5-2中的Apache配置指令就只打開了HTML和CGI資源的主機名解析功能。
例5-2配置Apache,為 HTML和CGI資源查找主機名
HostnameLookups off
<Files ~" - 《html |htmlcgi)$">
HostnameLookups on
</Files>

5.5第二步—接收請求報文
連接上有數據到達時,Web伺服器會從網路連接中讀取數據,並將請求報文中的內容解析出來(參見圖5-5)。
解析請求報文時,Web伺服器會:
·解析請求行,查找請求方法、指定的資源標識符(URI)以及版本號,3各項之
間由一個空格分隔,並以一個回車換行(CRLF)序列作為行的結束,「
·讀取以CRLF結尾的報文首部;
檢測到以CRLF結尾的、標識首部結束的空行(如果有的話)﹔
·如果有的話(長度由content-Length首部指定),讀取請求主體。

解析請求報文時,Web伺服器會不定期地從網路上接收輸入數據。網路連接可能隨時都會出現延遲。Web伺服器需要從網路中讀取數據,將部分報文數據臨時存儲在內存中,直到收到足以進行解析的數據並理解其意義為止。
5.5.1 報文的內部表示法
有些Web伺服器還會用便於進行報文操作的內部數據結構來存儲請求報文。比如,數據結構中可能包含有指向請求報文中各個片段的指針及其長度,這樣就可以將這些首部存放在一個快速查詢表中,以便快速訪問特定首部的具體值了(參見圖5-6)。

5.5.2連接的輸入/輸出處理結構
高性能的 Web伺服器能夠同時支持數千條連接。這些連接使得伺服器可以與世界各地的客戶端進行通信,每個客戶端都向伺服器打開了一條或多條連接。某些連接可能在快速地向Web伺服器發送請求,而其他一些連接則可能在慢慢發送,或者不經常發送請求,還有一些可能是空閑的,安靜地等待著將來可能出現的動作。
因為請求可能會在任意時刻到達,所以Web伺服器會不停地觀察有無新的Web請求。不同的Web伺服器結構會以不同的方式為請求服務,如圖5-7所示。
·單線程Web伺服器(參見圖5-7a)
單線程的Web伺服器一次只處理一個請求,直到其完成為止。一個事務處理結束之後,才去處理下一條連接。這種結構易於實現,但在處理過程中,所有其他連接都會被忽略。這樣會造成嚴重的性能問題,只適用於低負荷的伺服器,以及type-o-serve這樣的診斷工具。
·多進程及多線程Web伺服器(參見圖5-7b)
多進程和多線程Web伺服器用多個進程,或更高效的線程同時對請求進行處理。3可以根據需要創建,或者預先創建一些線程/進程。°有些伺服器會為每條連接分配一個線程/進程,但當伺服器同時要處理成百、上千,甚至數以萬計的連接時,需要的進程或線程數量可能會消耗太多的內存或系統資源。因此,很多多線程Web伺服器都會對線程/進程的最大數量進行限制。
·復用I/O的伺服器(參見圖5-7c)
為了支持大量的連接,很多Web伺服器都採用了復用結構。在復用結構中,要同時監視所有連接上的活動。當連接的狀態發生變化時(比如,有數據可用,或出現錯誤時),就對那條連接進行少量的處理,處理結束之後,將連接返回到開放連接列表中,等待下一次狀態變化。只有在有事情可做時才會對連接進行處理,在空閑連接上等待的時候並不會綁定線程和進程。
·復用的多線程Web伺服器(參見圖5-7d)
有些系統會將多線程和復用功能結合在一起,以利用計算機平台上的多個CPU.多個線程(通常是一個物理處理器)中的每一個都在觀察打開的連接(或打開的連接中的一個子集),並對每條連接執行少量的任務。

5.6第三步———處理請求
一旦Web伺服器收到了請求,就可以根據方法、資源、首部和可選的主體部分來對請求進行處理了。
有些方法(比如POST)要求請求報文中必須帶有實體主體部分的數據。其他一些方法(比如OPTIONS)允許有請求的主體部分,也允許沒有。少數方法(比如GET)禁止在請求報文中包含實體的主體數據。
這里我們並不對請求的具體處理方式進行討論,因為本書其餘大多數章節都在討論這個問題。

5.7第四步——-對資源的映射及訪問
Web 伺服器是資源伺服器。它們負責發送預先創建好的內容,比如HTML頁面或JPEG 圖片,以及運行在伺服器上的資源生成程序所產生的動態內容。

5.7.1 docroot
Web伺服器支持各種不同類型的資源映射,但最簡單的資源映射形式就是用請求URI作為名字來訪問Web伺服器文件系統中的文件。通常,Web伺服器的文件系統中會有一個特殊的文件夾專門用於存放Web內容。這個文件夾被稱為文檔的根目錄(document root,或docroot)。Web伺服器從請求報文中獲取URI,並將其附加在文檔根目錄的後面。
在圖5-8中,有一條對/specials/saw-blade.gif 的請求到達。這個例子中Web伺服器的文檔根目錄為/us/local/httpd/files。Web伺服器會返迴文件/usr/local/httpd/files/specials/saw-blade.gif。

在配置文件httpd.conf中添加一個 DocumentRoot行就可以為Apache Web伺服器設置文檔的根目錄了:
DocumentRoot /usr/ local/httpd/files
伺服器要注意,不能讓相對URL退到docroot之外,將文件系統的其餘部分暴露出來。比如,大多數成熟的Web伺服器都不允許這樣的URI看到Joe的五金商店文檔根目錄上一級的文件:
http://www.joes-hardware.com/ ..

5.8.3重定向
Web伺服器有時會返回重定向響應而不是成功的報文。Web伺服器可以將瀏覽器重定向到其他地方來執行請求。重定向響應由返回碼3XX說明。Location響應首部包含了內容的新地址或優選地址的URI。重定向可用於下列情況。
·永久刪除的資源
資源可能已經被移動到了新的位置,或者被重新命名,有了一個新的URL。Web伺服器可以告訴客戶端資源已經被重命名了,這樣客戶端就可以在從新地址獲取資源之前,更新書簽之類的信息了。狀態碼301 Moved Permanently就用於此類重定向。·臨時刪除的資源
如果資源被臨時移走或重命名了,伺服器可能希望將客戶端重定向到新的位置上去。但由於重命名是臨時的,所以伺服器希望客戶端將來還可以回頭去使用老的URL,不要對書簽進行更新。狀態碼303 See Other以及狀態碼307 TemporaryRedirect就用於此類重定向。

2. app發送請求後,後台服務獲取延時

當手機需要獲取一組數據,用http協議向伺服器發起請求,伺服器根據http協議傳過來的請求地址和參數返回數據給手機。 獲取的數據如果非常大,可以在手機端建個SQLite資料庫,把數據保存進去。

3. 如何優化網站伺服器減少網路延時

如果您的用戶群體在國內,建議您使用國內伺服器或使用香港伺服器,國內伺服器建議使用雙線或者多線,這樣不同地區不同線路的用戶訪問速度都會非常快(就好比聯通線路的用戶訪問電信伺服器,速度方面肯定會差一些。雙線或多線可以解決這個問題)。香港伺服器的話,建議使用CN2線路直連大陸的伺服器,這樣可以保證網路穩定性。
如果您的用戶群體分布在海外地區,那就近源租用伺服器,客戶訪問速度快,才是做網站最優先考慮的問題。
也可以搭建CDN節點,可以進一步提升客戶訪問網站的速度。
海騰數據張毅龍為您回答,希望可以幫到您。

4. 一個客戶-伺服器系統使用了衛星網路,其高度為40000KM.在對一個請求進行響應的時候,求最佳情形下的延遲

時間=路程/速度

40000KM 除以 光速

當然這是理想狀態下

還要考慮其他因素

5. 伺服器延遲高怎麼解決

伺服器延遲原因有很多,甚至包括硬體也會導致延遲,而這個連接率直接影響到訪問速度,訪問網站速度要快,首先就是伺服器延遲率要低,越低越快,利聯小柯為大家講解關於伺服器延遲率高的主要因素在哪裡。

一、伺服器延遲率設備是一定的關系,例如硬碟轉速不足,或者運行量過高,這都會導致伺服器延遲過高,如果是伺服器設備的原因導致是這樣去測試的:例如我們的東莞伺服器,大概在全廣東省延遲率不高於20MS,而如果您租用的東莞伺服器高於20MS+那麼屬於不正常的,就需要考慮今天的文章問題。

二、伺服器租用時延遲率測試是10MS的,而租用後一段時間後變的越來越卡,延遲率也越來越高,是什麼原因呢?這個情況需要考慮兩個問題,第一設備,第二使用率,一般整機伺服器設備如同我們本公司的伺服器在每一次上架伺服器時都會經過各種檢測後在上架很少出現這種故障率的,所以更需要考慮的是使用率,超負載運行也會很嚴重的延遲甚至丟包,解決辦法是將伺服器重啟後在測試,看運行內存是否高達總量的百分之50+,如果不超過一般也不會影響到延遲率。

三、每個地方的延遲率是不一樣的,例如您租用的伺服器是廣東伺服器,而您的工作區域在湖北省,相差較遠的條件下去做測試,那麼一般全國范圍內速度不高於50MS都是屬於正常行為的,今天主題主要是教會大家延遲率的解決,如果發現延遲率異常才需要去檢查問題,如果只是因為租用伺服器時沒有選對機房位置而租用的話,那是沒有辦法解決的,唯一的辦法只有重新選擇租用伺服器的機房線路,俗稱,換伺服器。

四、解決伺服器延遲的南北互通問題的唯一解決方案就是目前比較新的線路BGP伺服器,而BGP的線路假的太多,如果有伺服器需求可以聯系利聯科技小柯

6. 區域網內訪問伺服器延時大,請大神指教!

這個問題應該分多個方面來考慮主要還是從硬體和軟體兩個方面來看。首先檢查一下網線是否有松動脫落的情況,如果有,重做水晶頭;如果做好水晶頭故障依舊那麼可能就不是網線的問題,在當前,主機ping一下網關,查到網關的延時情況;如果到網關的延時正常,這是基本可以忽略網路和硬體兩方面的影響。這時可以先登到伺服器裡面去觀察一下,當前伺服器的負載情況,比如,CPU內核是否被占滿,內存是否耗盡?自盤l是否過高?網路IO是否爆滿,等等,如果伺服器是windows2000系列,那麼就看它的任務管理器,如果伺服器是Linux伺服器,那麼就通過up time命令看內核的佔用情況;此時基本就可以定位到問題了,此時你會看到CPU,可能會有某個進程佔用非常高的負載,然後查看這個負載是不是異常進程,如果是的話就把他殺死;有時這種進程殺不死,它會不斷的folk出新的進程,這種情況極有可能是伺服器中毒了,Linux伺服器也會中毒,如果出現這種情況就要看一下cron table裡面是不是有定時任務,在不斷的重啟某個進程,找到這個定時任務以後,刪除裡面的命令內容,我們之前伺服器是Linux的,遇到過這種情況,我覺得windows伺服器處理思路應該是一樣的。

7. 如何解決玩國外伺服器延遲高的問題

國外伺服器延遲多少算正常?很多人都說160ms到180ms。還有人說200ms到300ms。這些其實都沒錯,因為實際物理距離的問題,中國和國外都是東西跨度極大的國家。不同地區延遲上相差100ms都不為過。
首先我們必須了解什麼是網路延時。通俗的說,就是從客戶端向伺服器發送數據請求,來回的時間就是網路延遲。網路延遲越低的網站,游戲體驗更好。所以大家都在不斷的追求低延遲的國外伺服器。
如何降低國外伺服器的延遲?首先地理位置非常重要,國外西海岸洛杉磯機房是一個不錯的選擇。洛杉磯地區距離大陸較近,網路發達,與全球上百家運營商合作均有良好的合作。網路穩定性非常良好,國內延遲相對較低。
想要降低國外伺服器的延遲,可以選擇BGP線路機房,BGP線路會為不同地區的用戶自動匹配最優路徑。如今很多洛杉磯機房都接入了直連電信,直連聯通,直連移動等優質線路,例如RakSmart。一方面減少了用戶端到服務段之間的路由節點,大幅降低了延遲。另一方面讓線路變得更加穩定,針對中國電信,中國聯通用戶配對。延遲可降低至160ms到180ms左右,中國沿海城市可低至140ms。
充足的網路帶寬也是保障網路延遲的重要因素。當帶寬不足,國外伺服器的延遲會明顯增大,甚至出現網路丟包等問題。最好選擇國外100M獨享帶寬伺服器,能夠讓伺服器延遲更加穩定。

閱讀全文

與伺服器如何對特定請求延時相關的資料

熱點內容
加密貨幣交易所哪個最好 瀏覽:814
linux的現狀 瀏覽:926
命令與征服叛逆者修改器 瀏覽:246
怎麼用ios玩安卓全民槍戰 瀏覽:668
程序員入行前後的頭發 瀏覽:709
嵌入式圖像演算法 瀏覽:329
伺服器如何訪問伺服器失敗 瀏覽:875
android進度球 瀏覽:1001
Linux造成xfs文件夾 瀏覽:457
華為手機怎麼修改wifi加密類型 瀏覽:250
伺服器封口是什麼意思 瀏覽:743
有限元分析是演算法嗎 瀏覽:901
空氣壓縮機性能曲線 瀏覽:22
京城程序員2019 瀏覽:406
android新系統 瀏覽:512
安卓80有什麼bug 瀏覽:681
如何做單機伺服器 瀏覽:945
校訊通查成績怎麼顯示伺服器異常 瀏覽:884
冰箱壓縮機工作壓力是多少 瀏覽:411
程序員20多平米租房 瀏覽:453