有了這篇乾貨,還怕搞不定WEB網絡問題的排查嗎?

Browser/Server結構主要是利用了不斷成熟的Web瀏覽器技術:結合瀏覽器的多種腳本語言ActiveX技術,用通用瀏覽器實現原來須要複雜專用軟件才能實現的強大功能,同時節約了開發成本。
B/S最大的優勢就是能夠在任何地方進行操做而不用安裝任何專門的軟件,只要有一臺能上網的電腦就能使用,客戶端零安裝、零維護。系統的擴展很是容易。linux

你們在測試過程當中常常會遇到例如首次部署後網頁沒法打開或者樣式沒法加載等問題,本文給你們簡單介紹一點網絡問題排查方面的知識。數據庫

 

【HTTP協議及鏈接的創建】windows

HTTP( Hyper Text Transfer Protocol超文本傳輸協議的縮寫)是一個客戶端和服務器端請求和應答的標準(TCP)。HTTP協議一般承載於TCP協議之上,有時也承載於TLS或SSL協議層之上,這個時候,就成了咱們常說的HTTPS。
以下圖:瀏覽器

一次HTTP操做稱爲一個事務,其工做過程可分爲四步:
1. 首先客戶機與服務器須要創建鏈接。只要單擊某個超級連接,HTTP的工做就開始了。
2. 創建鏈接後,客戶機發送一個請求給服務器,請求方式的格式爲:統一資源標識符(URL)、協議版本號,後邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。
3. 服務器接到請求後,給予相應的響應信息,其格式爲一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括服務器信息、實體信息和可能的內容。
4. 客戶端接收服務器所返回的信息經過瀏覽器顯示在用戶的顯示屏上,而後客戶機與服務器斷開鏈接。緩存


HTTP鏈接的創建又可分爲以下步驟:
1) 瀏覽器分析連接的URL
2) 系統查找HOSTS文件,有則根據文件內容獲取服務器ip,轉到第5步
3) 瀏覽器向DNS請求解析該URL的ip
4) 域名系統DNS解析出該URL的ip地址爲xxx
5) 瀏覽器與服務器 創建TCP鏈接 (服務器ip地址是xxx,端口是80)
6) 瀏覽器發出取文件命令
7) 服務器給出響應,把文件發送給瀏覽器
8) 釋放TCP鏈接
9) 瀏覽器顯示文本tomcat

 

【頁面沒法打開問題排查】服務器

頁面沒法打開這類問題在系統初次部署時常常遇到,咱們能夠根據上節所介紹的HTTP創建鏈接的步驟逐步進行排查。網絡

 

例如某項目打開頁面展現以下:架構

1. URL連接工具

首先,須要確認URL地址正確。一個完整的URL請求通常包括基本URL包含模式(或稱協議)、服務器名稱(或IP地址)、路徑和文件名。

如某URL地址爲http://www.hello.com/demo/helloworld.htm,其中http表示使用的是http協議,www.hello.com爲服務器名稱,/demo爲相對路徑,hello.htm爲請求的文件名。確認該url地址請求的文件是否存在,咱們就能夠在工程目錄中查找hellworld.htm(或helloworld.vm)文件,看該文件是否存在。

實際問題排查
咱們在菜單」交易大廳」連接上,點擊右鍵,查看屬性以下圖:

圖中URL指出,這個菜單訪問的URL地址爲

http://xxxxx.xxxx.xx/delegate//delegate/listing/index_hall.htm

xxxxx.xxxx.xx/delegate爲該系統固定域名,delegate/listing/index_hall.htm爲文件相對位置。而後,在工程目錄下查找該文件。

圖中展現文件名與該文件相對位置匹配,能夠排除沒法訪問是因爲URL地址中文件不存在致使。

2. HOSTS文件
瀏覽器在解析URL以後,就會根據URL中的服務器名稱創建連接。例如上文的www.hello.com這個服務器名稱,瀏覽器是怎樣解析成一個ip地址從而創建連接的呢?
操做系統規定,在進行DNS請求之前,先檢查系本身的Hosts文件中是否有這個域名和IP的映射關係。若是有,則直接訪問這個IP地址指定的網絡位置,若是沒有,再向已知的DNS服務器提出域名解析請求。DNS服務器中保存有該網絡中全部主機的域名和對應IP地址,並並具備將域名轉換爲IP地址功能。
因此咱們排查的第二個節點就是本機的HOSTS文件。
在Windows NT/2000/XP/Vista/7/8(即微軟NT系列操做系統)中,HOSTS文件默認位置爲%SystemRoot%\system32\drivers\etc\;在Linux及其餘類Unix操做系統中HOSTS文件默認位置爲/etc。
HOSTS文件內容格式爲:IP+空格+域名,域名能夠有多個,中間以空格分隔。須要注意相同域名以首次出現映射規則爲準。文件修改保存後生效,可是因爲各瀏覽器存在緩存,因此不必定當即生效。通常重啓瀏覽器後,能夠正確跳轉。


實際問題排查
咱們測試的程序部署在內網環境,須要進行HOSTS。檢查本地HOSTS文件,相關配置以下:


圖中標明域名xxxxx.xxxx.xx已映射到IP地址xx.xx.xx.xx.咱們再經過命令行進行檢查:

能夠排除HOSTS文件配置不正確或網絡存在問題致使頁面沒法打開。

 

3. 網絡
若是在上一步最後檢查時,提示請求超時,有多是本機與服務器之間存在網絡問題。咱們排查的第三個節點就是網絡是否正常。
首先,須要排除是否本機與服務器不在同一個網絡環境,好比一個在內網,一個在公網這種狀況。
另外,多是服務器IP地址發生了變化。查看服務器IP可在命令行下使用ipconfig(linux爲ifconfig,需root用戶),若是發現IP發生變化,須要檢查IP是否爲靜態IP。

最後,須要檢查防火牆是否關閉或配置是否正確。

 

4. 監聽端口
在排除了網絡問題後,咱們的URL請求就已經到達了服務器進行處理,下一個排查的節點就是服務是否存在以及端口是否正確打開。
若是服務啓動時,提示Socket bind failed:[XXXX],則一般爲XXXX端口正在被佔用。查看該端口被哪一個進程佔用,能夠在服務器上輸入netstat –anp|grep 端口號(windows爲在命令行中輸入netstat –ano|find 「端口號」),如圖二、圖3

圖2

圖3

紅框內爲實際佔用程序pid,LISTEN/LISTENING表示爲監聽端口。獲取到pid後,能夠考慮關閉該進程或者修改服務使用端口。


實際問題排查
咱們到55.82服務器上對進程所對應的端口,如今已知應用佔用的端口是28080,輸入netstat –anp|grep 28080:

獲得進程PID爲4580,再查看4580進程:

獲得進程PID爲4580,再查看4580進程:

進程與須要鏈接的服務匹配,能夠排除端口占用致使頁面沒法打開。


5. 其餘
通過上面一系列的排查發現好像各個環節都是正常的,那還有哪些問題能夠會致使頁面沒法打開?
上一步排查過程當中,咱們能夠發現該tomcat使用的端口爲28080,在實際訪問的URL(http://trade.cfae.cn/delegate//delegate/listing/index_hall.htm)中,咱們沒有看到指定訪問端口爲28080的相關內容,這也許就是問題的緣由。
在HTTP連接中,若是訪問時沒有指定訪問端口,則經過80端口進行連接,那麼整個部署中,確定存在某個環節將發送到80端口的請求轉發到28080端口。所以,下一步咱們就來檢查下Apache配置,看是不是使用了反向代理機制進行轉發並致使頁面沒法打開。


實際問題排查
在55.82服務器上,打開/etc/httpd/conf/httpd.conf文件,發現有以下配置:

這段配置,說明Apache會根據http://xxxxx.xxxx.xx/delegate 中的/delegate的請求轉發到xxxxx.xxxx.xx。前面已經說過,xxxxx.xxxx.xx是內網的域名,那麼服務器進行請求時,一樣要在HOSTS文件中進行配置,那再檢查下服務器上的HOSTS文件:

服務器上並無進行HOSTS配置。下面咱們能夠經過修改Apache配置或者修改HOSTS文件進行處理。修改Apache配置能夠將配置段中xxxxx.xxxx.xx替換爲127.0.0.1,保存後重啓httpd服務;修改HOSTS文件能夠添加127.0.0.1xxxxx.xxxx.xx後保存。

在這裏,採用了第二種方法:

而後再進行訪問,頁面成功打開。

 

【開發人員工具的使用】

在高版本的IE瀏覽器中,集成了開發人員工具(F12)。這個工具,能夠協助咱們進行一些問題的排查。
1. 頁面內容長時間沒法加載
有一次,某個部署在內網的項目因須要映射到了外網,可是映射的時候採用的是端口轉換的方式,也就是應用實際使用的端口是9040,映射到外網使用的端口是9433。映射以後,發現頁面能夠打開,可是打開很是緩慢,並且大部分元素、樣式等沒法顯示。
遇到這種狀況,咱們能夠經過開發人員工具中的網絡分析進行查看。低版本IE可經過安裝HttpWatch插件查看。
按F12打開開發人員工具,選擇網絡,點擊啓用網絡流量獲取。輸入域名後回車,此時下面會顯示瀏覽器與服務器之間的數據交互。

 

以下圖:

 

 

圖中能夠看出,大量請求結果顯示爲已掛起,再檢查下這些請求的URL地址,發現請求的端口是內網的端口號,因此致使這些樣式沒法展現。若是程序是經過配置方式定義的端口號,修改下相應配置,再重啓進程就能夠避免這種狀況。


2. 網頁前臺校驗規則查看
一般,在測試一些頁面時,前臺會對輸入項的內容進行校驗,好比註冊頁面的聯繫方式、郵箱、地址長度等。咱們可使用開發人員工具,能夠方便快捷的查看某些元素的校驗規則,從而快速的查找出校驗規則是否存在問題。
好比輸入框的長度限制,打開開發人員工具,選中DOM資源管理器,經過選擇輸入元素,對前臺輸入校驗進行檢查。

以下圖:

能夠看到這裏對項目名稱進行了最大輸入長度的限制爲40,再根據數據庫中相應字段的長度,就可以判斷出是否可能存在問題。

再例如檢查手機號碼的校驗

以下圖:

圖中看到對手機號碼校驗規則是'^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1})|(14[0-9]{1}))+\\d{8})$'。

固然有是否這些校驗是寫在script裏面,也有時候是在後臺校驗。

 

【總結】

B/S架構的項目在首次部署完成後,常常會遇到因爲配置問題致使的頁面沒法打開。遇到這種狀況後,你們首先要對HTTP連接及URL訪問有一個比較完整的認識。而後,根據項目實際狀況梳理出網絡拓撲,並對關鍵節點一一排查。最終,找到致使頁面沒法打開的真正緣由。 在實際的測試過程當中,你們也能夠多嘗試使用下IE瀏覽器集成的開發人員工具(一些瀏覽器也有相應功能,如火狐瀏覽器),有助於提升測試效率,特別是針對一些頁面校驗問題。

相關文章
相關標籤/搜索