Web服務器及其磁盤資源訪問控制方法
【專利摘要】本發明公開了一種Web服務器及其磁盤資源訪問控制方法,該方法包括:主進程將Web請求分配給一個工作進程,將其它工作進程的請求處理信息傳給該工作進程;該工作進程調用標記模塊,將標記模塊從Web請求中解析出的用戶標識發送給主進程;主進程記錄該工作進程的請求處理信息;該工作進程調用統計模塊,將從其它工作進程的請求處理信息中查找出的該用戶標識對應的進程標識與該用戶標識傳給統計模塊;統計模塊讀取進程磁盤文件中的磁盤資源訪問量進行統計;若統計結果超過為該用戶標識配置的資源訪問配額,則返回拒絕信息,該工作進程拒絕Web請求;否則返回確認信息,該工作進程對Web請求進行處理。從而使得磁盤資源訪問控制更加靈活。
【專利說明】Web服務器及其磁盤資源訪問控制方法
【技術領域】
[0001]本發明涉及網絡技術,尤其涉及Web服務器及其磁盤資源訪問控制方法。
【背景技術】
[0002]網絡的技術發展迅速,Web2.0時代最突出的特點是用戶與網站的交互;目前,網站服務提供商廣泛采用LAMP (Linux、Apache、MySQL、PHP,即Linux操作系統、阿帕奇服務器軟件、數據庫軟件、PHP腳本)架構為公司很多網站站點(即多個網站站點用戶)開發網頁提供平臺化的支持=Web服務器上的Apache軟件接收到發送給網站的請求信息后,進行資源訪問、處理后將生成的網頁數據返回給客戶端的瀏覽器呈現。
[0003]具體地,Web服務器上的Apache軟件中的主進程在接收到客戶端發送給網站的Web請求后,將該Web請求分配給一個工作進程進行處理,該工作進程根據該Web請求,訪問服務器的磁盤資源,從本地磁盤獲取數據后生成網頁數據向客戶端返回。
[0004]通常,為保證Web服務器的正常運行,需要對處理Web請求的工作進程進行磁盤資源訪問的控制。例如,現有技術的Cgroups的子系統blkio可用于控制工作進程對磁盤資源的訪問,具體方法為:創建一個Cgroups blkio的進程組,將要控制的物理磁盤的設備號以及預設的磁盤資源訪問量的值寫入進程組的相關配置文件中;之后,在Web服務器上的Apache軟件啟動后,將工作進程加入到進程組中;ApaChe軟件對進程組中的各工作進程的磁盤資源訪問量進行統計,當統計出的磁盤資源訪問量超過預設的磁盤資源訪問量后,拒絕處理新的Web請求。其中,磁盤資源訪問量可以為每秒讀寫次數(iops)或每秒讀寫量(bps)等。
[0005]然而,本發明的發明人發現,現有的磁盤資源訪問控制方法不夠靈活,不適用于對不同網站站點用戶分別配置磁盤資源訪問配額的情況:在公有云計算場景中,Web服務器上的Apache軟件通常會接收到發送給不同網站的Web請求,發送給同一網站的多個Web請求也可以由多個工作進程來處理。在實際應用中,針對不同的網站站點用戶,通常需要配置不同的磁盤資源訪問配額,以對不同網站站點用戶的磁盤資源訪問行為分別進行控制;而現有的磁盤資源訪問控制方法中,不同網站站點用戶,比如user I, user2的Web請求均由工作進程組中的工作進程進行處理,無法區分哪些工作進程處理userl的Web請求,哪些工作進程處理user2的Web請求,更無法確定出userl、user2的磁盤資源訪問量,從而,不適用于對不同網站站點用戶分別配置磁盤資源訪問配額的情況。而且,現有的磁盤資源訪問控制方法僅能對物理磁盤進行磁盤資源訪問的控制,不能對邏輯磁盤進行磁盤資源訪問的控制;從而,也使得磁盤資源訪問控制不夠靈活。因此,有必要提供一種更靈活的磁盤資源訪問控制方法。
【發明內容】
[0006]本發明的實施例提供了一種Web服務器及其磁盤資源訪問控制方法,用以更靈活的進行磁盤資源訪問控制。[0007]根據本發明的一個方面,提供了一種Web服務器的磁盤資源訪問控制方法,包括:
[0008]主進程接收到Web請求后,將該Web請求分配給一個工作進程,并將其它工作進程的請求處理信息傳送給該工作進程;
[0009]該工作進程調用標記模塊,并將分配的Web請求傳送給所述標記模塊;所述標記模塊從接收的Web請求中解析出用戶標識后向該工作進程返回;該工作進程將得到的用戶標識發送給所述主進程;所述主進程將該工作進程發送的用戶標識與該工作進程的進程標識的對應關系作為該工作進程的請求處理信息進行記錄;
[0010]該工作進程從所述其它工作進程的請求處理信息中查找出所述用戶標識所對應的進程標識后,調用統計模塊,并將查找到的進程標識,以及所述用戶標識傳送給所述統計模塊;所述統計模塊對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,根據讀取的磁盤資源訪問量進行統計;若確定統計結果超過為所述用戶標識配置的資源訪問配額,則向該工作進程返回拒絕信息,否則返回確認信息;
[0011]該工作進程若接收到確認信息,則對分配的Web請求進行處理;若接收到拒絕信息,則拒絕所述Web請求。
[0012]其中,所述資源訪問配額具體為資源訪問速率上限;以及
[0013]所述統計模塊對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,根據讀取的磁盤資源訪問量進行統計,具體包括:
[0014]所述統計模塊記錄下接收的進程標識隸屬于所述用戶標識的隸屬關系;并對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,將讀取的磁盤資源訪問量與當前的讀取時間對應于所述用戶標識下的該進程標識進行記錄;
[0015]之后,所述統計模塊根據所述用戶標識下的各進程標識記錄的磁盤資源訪問量進行統計:所述統計模塊對于所述用戶標識下的每個進程標識,根據記錄的該進程標識的磁盤資源訪問量以及讀取時間,計算出該進程標識的磁盤資源訪問速率;對所述用戶標識下的各進程標識的磁盤資源訪問速率進行相加,將相加得到的磁盤資源訪問速率作為所述統計結果。
[0016]較佳地,所述統計模塊記錄下接收的進程標識隸屬于所述用戶標識的隸屬關系,具體包括:
[0017]所述統計模塊查找是否有所述用戶標識的隸屬關系表;
[0018]若查找到所述用戶標識的隸屬關系表,則對于每個接收的進程標識,若確定所述用戶標識的隸屬關系表中未記錄該進程標識,則將其添加記錄到所述用戶標識的隸屬關系表中;
[0019]若沒有查找到所述用戶標識的隸屬關系表,則創建所述用戶標識的隸屬關系表,并將接收的進程標識隸屬于所述用戶標識的隸屬關系記錄到所述用戶標識的隸屬關系表中。
[0020]較佳地,所述統計模塊對于所述用戶標識下的每個進程標識,根據記錄的該進程標識的磁盤資源訪問量以及讀取時間,計算出該進程標識的磁盤資源訪問速率,具體包括:
[0021]所述統計模塊對于所述用戶標識下的每個進程標識,根據對應于該進程標識前次記錄的磁盤資源訪問量與讀取時間,以及本次記錄的磁盤資源訪問量與讀取時間,計算出該進程標識的磁盤資源訪問速率。
[0022]較佳地,所述統計模塊對于所述用戶標識下的每個進程標識,根據對應于該進程標識前次記錄的磁盤資源訪問量與讀取時間,以及本次記錄的磁盤資源訪問量與讀取時間,計算出該進程標識的磁盤資源訪問速率,具體包括:
[0023]所述統計模塊對于所述用戶標識下、只有一次磁盤資源訪問量記錄的進程標識,將磁盤資源訪問量O作為該進程標識的前次記錄的磁盤資源訪問量,將對應于所述用戶標識下的其它進程標識前次記錄的讀取時間,作為該進程標識的前次記錄的讀取時間,進而計算出該進程標識的磁盤資源訪問速率。
[0024]或者,所述資源訪問配額具體為資源訪問量上限;以及
[0025]所述統計模塊對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,根據讀取的磁盤資源訪問量進行統計,具體包括:
[0026]所述統計模塊對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量;將讀取的磁盤資源訪問量進行相加后得到所述統計結果。
[0027]其中,所述磁盤資源訪問量具體為:讀磁盤數據量,或寫磁盤數據量。
[0028]根據本發明的另一個方面,還提供了一種Web服務器,包括:
[0029]Web服務器模塊、標記模塊、統計模塊;其中,
[0030]所述Web服務器模塊用于在其主進程接收到Web請求后,將該Web請求分配給所述Web服務器模塊的一個工作進程,并將所述Web服務器模塊的其它工作進程的請求處理信息傳送給該工作進程;該工作進程調用所述標記模塊,并將分配的Web請求傳送給所述標記模塊,并將所述標記模塊返回的用戶標識發送給所述主進程;所述主進程將該工作進程發送的用戶標識與該工作進程的進程標識的對應關系作為該工作進程的請求處理信息進行記錄;該工作進程從所述其它工作進程的請求處理信息中查找出所述用戶標識所對應的進程標識后,調用所述統計模塊,并將查找到的進程標識,以及所述用戶標識傳送給所述統計模塊;該工作進程還用于在接收到確認信息后,對分配的Web請求進行處理;在接收到拒絕信息后,拒絕所述Web請求;
[0031]所述標記模塊用于從接收的Web請求中解析出用戶標識后,將解析出的用戶標識進行返回;
[0032]所述統計模塊用于對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,根據讀取的磁盤資源訪問量進行統計;若確定統計結果超過為接收的用戶標識配置的資源訪問配額,則返回拒絕信息,否則返回確認信息。
[0033]其中,所述資源訪問配額具體為資源訪問速率上限;以及
[0034]所述統計模塊具體包括:
[0035]隸屬關系記錄單元,用于對于所述統計模塊接收的用戶標識,查找是否有所述用戶標識的隸屬關系表;若查找到所述用戶標識的隸屬關系表,則對于每個接收的進程標識,若確定所述用戶標識的隸屬關系表中未記錄該進程標識,則將其添加記錄到所述用戶標識的隸屬關系表中;若沒有查找到所述用戶標識的隸屬關系表,則創建所述用戶標識的隸屬關系表,并將接收的進程標識隸屬于所述用戶標識的隸屬關系記錄到所述用戶標識的隸屬關系表中。
[0036]磁盤文件讀取單元,用于對于所述統計模塊接收的每個進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,將讀取的磁盤資源訪問量與當前的讀取時間對應于所述用戶標識下的該進程標識進行記錄;
[0037]統計結果確定單元,用于對于所述用戶標識下的每個進程標識,根據對應于該進程標識前次記錄的磁盤資源訪問量與讀取時間,以及本次記錄的磁盤資源訪問量與讀取時間,計算出該進程標識的磁盤資源訪問速率;對所述用戶標識下的各進程標識的磁盤資源訪問速率進行相加,將相加得到的磁盤資源訪問速率作為所述統計結果;
[0038]比較單元,用于將所述統計結果確定單元確定出的統計結果與為所述用戶標識配置的資源訪問速率上限進行比較;若確定所述統計結果超過所述資源訪問速率上限,則返回拒絕信息,否則返回確認信息。
[0039]或者,所述資源訪問配額具體為資源訪問量上限;以及
[0040]所述統計模塊具體包括:
[0041]磁盤文件讀取單元,用于對于所述統計模塊接收的每個進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量并進行記錄;
[0042]統計結果確定單元,用于將所述磁盤文件讀取單元記錄的磁盤資源訪問量進行相加后得到所述統計結果;
[0043]比較單元,用于將所述統計結果確定單元確定出的統計結果與為所述用戶標識配置的資源訪問量上限進行比較;若確定所述統計結果超過所述資源訪問量上限,則返回拒絕信息,否則返回確認信息。
[0044]本發明實施例的技術方案中,由于針對在不同工作進程中處理的同一網站站點用戶的Web請求,根據該網站站點用戶的用戶標識,確定出處理該網站站點用戶的Web請求的各工作進程,即確定出該用戶標識下的各進程標識,并讀取對應各進程標識的進程磁盤文件中的磁盤資源訪問量進行統計;并確定統計結果是否超過為該用戶標識配置的磁盤資源訪問配額;若超過,則拒絕發送給該網站站點用戶的Web請求,若沒有超過,則對發送給該網站站點用戶的Web請求進行處理。從而,可以對不同的網站站點用戶分別配置磁盤資源訪問配額,使得磁盤資源訪問控制更加靈活;
[0045]而且,統計模塊對磁盤資源訪問量進行統計時,不區分物理磁盤和邏輯磁盤,均是從對應各工作進程的進程標識的進程磁盤文件中,分別讀取出各進程標識的磁盤資源訪問量。從而,既可以對物理磁盤進行磁盤資源訪問的控制,也可以對邏輯磁盤進行磁盤資源訪問的控制,進一步使得磁盤資源訪問控制更加靈活。
【專利附圖】
【附圖說明】
[0046]圖1為本發明實施例的Web服務器的Apache軟件的內部結構框圖;
[0047]圖2為本發明實施例的Web服務器模塊記錄工作進程的請求處理信息的方法流程圖;
[0048]圖3為本發明實施例的Web服務器的磁盤資源訪問控制方法的流程圖;
[0049]圖4為本發明實施例的統計模塊得到統計結果的一種方法的流程圖;
[0050]圖5為本發明實施例的進程標識的磁盤資源訪問量與讀取時間的示意圖;
[0051]圖6為本發明實施例的統計模塊得到統計結果的另一種方法的流程圖;
[0052]圖7為本發明實施例的統計模塊的內部結構框圖;[0053]圖8為本發明實施例的統計模塊的內部結構框圖。
【具體實施方式】
[0054]為使本發明的目的、技術方案及優點更加清楚明白,以下參照附圖并舉出優選實施例,對本發明進一步詳細說明。然而,需要說明的是,說明書中列出的許多細節僅僅是為了使讀者對本發明的一個或多個方面有一個透徹的理解,即便沒有這些特定的細節也可以實現本發明的這些方面。
[0055]本申請使用的“模塊”、“系統”等術語旨在包括與計算機相關的實體,例如但不限于硬件、固件、軟硬件組合、軟件或者執行中的軟件。例如,模塊可以是,但并不僅限于:處理器上運行的進程、處理器、對象、可執行程序、執行的線程、程序和/或計算機。舉例來說,計算設備上運行的應用程序和此計算設備都可以是模塊。一個或多個模塊可以位于執行中的一個進程和/或線程內,一個模塊也可以位于一臺計算機上和/或分布于兩臺或更多臺計算機之間。
[0056]本發明的發明人考慮到,針對在不同工作進程中處理的同一網站站點用戶的Web請求,利用進程磁盤文件中的磁盤資源訪問量來統計這些Web請求的磁盤資源訪問量是否超過為該用戶標識配置的磁盤資源訪問配額;若超過,則拒絕發送給該網站站點用戶的Web請求,若沒有超過,則對發送給該網站站點用戶的Web請求進行處理。從而,可以對不同的網站站點用戶分別配置磁盤資源訪問配額,使得磁盤資源訪問控制更加靈活;
[0057]而且,統計模塊對磁盤資源訪問量進行統計時,不區分物理磁盤和邏輯磁盤,均是從對應各工作進程的進程標識的進程磁盤文件中,分別讀取出各進程標識的磁盤資源訪問量。從而,既可以對物理磁盤進行磁盤資源訪問的控制,也可以對邏輯磁盤進行磁盤資源訪問的控制,進一步使得磁盤資源訪問控制更加靈活。
[0058]下面結合附圖詳細說明本發明實施例的技術方案。依據上述思路,本發明實施例提供的Web服務器的Apache軟件的內部結構框圖,如圖1所示,包括:Web服務器模塊101、標記模塊102和統計模塊103。
[0059]其中,Web服務器模塊101在其主進程接收到Web請求后,將該Web請求分配給一個工作進程,并對該工作進程的請求處理信息進行記錄,具體方法如圖2所示,包括:
[0060]S201:ffeb服務器模塊101的主進程接收到Web請求后,將該Web請求分配給一個
工作進程。
[0061]具體地,Apache軟件中的Web服務器模塊101的主進程接收到客戶端發送給網站的Web請求后,選取一個空閑的工作進程,將接收到的Web請求分配給該工作進程。
[0062]S202:該工作進程調用標記模塊102,并將分配的Web請求傳送給標記模塊102。
[0063]S203:標記模塊102從接收的Web請求中解析出用戶標識后向該工作進程返回。
[0064]具體地,客戶端發送給網站的Web請求的Header (標頭)中攜帶有該網站站點用戶的用戶標識,在本文中,網站站點用戶的用戶標識具體可以是網站站點的網站id ;
[0065]在本步驟中,標記模塊102從接收到的Web請求中,解析出其攜帶的用戶標識,并將解析出的用戶標識向工作進程返回。
[0066]S204:該工作進程將得到的用戶標識發送給主進程。
[0067]S205:主進程將該工作進程發送的用戶標識與該工作進程的進程標識的對應關系作為該工作進程的請求處理信息進行記錄。
[0068]具體地,主進程接收到該工作進程發送的用戶標識后,建立該工作進程發送的用戶標識,與該工作進程的進程標識的對應關系,并將該對應關系作為該工作進程的請求處理信息進行記錄。由此,對于分配了 Web請求的每一個工作進程,主進程均可以將該工作進程的請求處理信息進行記錄。
[0069]而且,Web服務器模塊101的主進程在將Web請求分配給一個工作進程后,還將其它工作進程的請求處理信息傳送給該工作進程,以助于實現后續的Web服務器的磁盤資源訪問控制,具體方法如圖3所示,包括:
[0070]S301:ffeb服務器模塊101的主進程接收到Web請求后,將該Web請求分配給一個工作進程,并將其它工作進程的請求處理信息傳送給該工作進程。
[0071]具體地,Web服務器模塊101的主進程接收到用戶發送的Web請求后,將該Web請求分配給一個工作進程,并將其他工作進程的請求處理信息傳送給該工作進程,以備通過下述步驟S304?S306進行磁盤資源訪問量的統計。
[0072]S302:該工作進程調用標記模塊102,并將分配的Web請求傳送給標記模塊102。
[0073]S303:標記模塊102從接收的Web請求中解析出用戶標識后向該工作進程返回。
[0074]S304:該工作進程從其它工作進程的請求處理信息中,查找出標記模塊102返回的用戶標識所對應的進程標識。
[0075]具體地,在本步驟中,該工作進程根據標記模塊102返回的用戶標識,從主進程發送過來的其他工作進程的請求處理信息中,查找出該用戶標識所對應的進程標識。
[0076]S305:該工作進程調用統計模塊103,并將查找到的進程標識,以及標記模塊102返回的用戶標識傳送給統計模塊103。
[0077]S306:統計模塊103對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,根據讀取的磁盤資源訪問量進行統計。
[0078]具體地,統計模塊103對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件(/proc/id/io)中的磁盤資源訪問量,根據讀取的磁盤資源訪問量進行統計,并得到統計結果;其中,磁盤資源訪問量具體可以為讀磁盤數據量,或寫磁盤數據量;而且,進程磁盤文件中記錄有該工作進程啟動后從磁盤讀取的總字節數(read bytes),以及該工作進程啟動后從磁盤寫入的總字節數(write bytes),由此,讀磁盤數據量具體可以為從磁盤讀取的總字節數,寫磁盤數據量具體可以為從磁盤寫入的總字節數。
[0079]在實際應用中,統計模塊103統計磁盤資源訪問量,并得到統計結果的方法,可根據預先為用戶標識配置的資源訪問配額的類型來確定,具體內容在下述面圖4、圖5中進行詳細介紹。
[0080]例如,若為用戶標識配置的資源訪問配額為資源訪問速率上限,則統計模塊103得到統計結果的方法可下述圖4所示;若為用戶標識配置的資源訪問配額為資源訪問量上限,則統計模塊103得到統計結果的方法可下述圖5所示。
[0081]本步驟中,統計模塊103對磁盤資源訪問量進行統計時,可以不區分物理磁盤和邏輯磁盤的不同,均通過讀取各進程標識的進程磁盤文件,來獲取其中的磁盤資源訪問量,使得磁盤資源訪問的控制更加靈活。
[0082]S307:統計模塊103確定統計結果是否超過為接收的用戶標識配置的資源訪問配額;若是,則執行步驟S308 ;否則,執行步驟S310。
[0083]具體地,統計模塊103根據該工作進程傳送給本模塊的用戶標識,確定統計結果是否超過為該用戶標識配置的資源訪問配額;若超過為該用戶標識配置的資源訪問配額,則執行步驟S308 ;若未超過為該用戶標識配置的資源訪問配額,則執行步驟S310。
[0084]S308:統計模塊103向該工作進程返回拒絕信息。
[0085]具體地,若統計模塊103確定統計結果超過為接收的用戶標識配置的資源訪問配額,則向該工作進程返回錯誤值,即拒絕信息。
[0086]S309:該工作進程拒絕分配的Web請求。
[0087]具體地,該工作進程接收到拒絕信息后,拒絕主進程分配的Web請求。
[0088]S310:統計模塊103向該工作進程返回確認信息。
[0089]具體地,若統計模塊103確定統計結果未超過為接收的用戶標識配置的資源訪問配額,則向該工作進程返回正確值,即確認信息。
[0090]S311:該工作進程對分配的Web請求進行處理。
[0091]具體地,該工作進程接收到確認信息后,對主進程分配的Web請求進行處理。
[0092]事實上,若上述為用戶標識配置的資源訪問配額為資源訪問速率上限,則統計模塊103對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,根據讀取的磁盤資源訪問量進行統計的一種方法的流程如圖4所示,具體可以包括:
[0093]S401:統計模塊103記錄下接收的進程標識隸屬于接收的用戶標識的隸屬關系;且對于每個接收的進程標識,讀取對應該進程標識的磁盤資源訪問量,并將其與當前的讀取時間對應于接收的用戶標識下的該進程標識進行記錄。
[0094]在本步驟中,統計模塊103記錄下接收的進程標識隸屬于接收的用戶標識的隸屬關系,具體可以為:統計模塊103查找是否有接收到的用戶標識的隸屬關系表;若查找到該用戶標識的隸屬關系表,則對于每個接收的進程標識,若確定該用戶標識的隸屬關系表中未記錄該進程標識,則將其添加記錄到該用戶標識的隸屬關系表中;若沒有查找到該用戶標識的隸屬關系表,則創建該用戶標識的隸屬關系表,并將接收的進程標識隸屬于該用戶標識的隸屬關系,記錄到該用戶標識的隸屬關系表中。
[0095]而且,統計模塊103對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,將讀取的磁盤資源訪問量與當前的讀取時間對應于接收的用戶標識下的該進程標識,在隸屬關系表中進行記錄。
[0096]之后,統計模塊103可根據如下步驟S402?S403對接收的用戶標識下的各進程標識記錄的磁盤資源訪問量進行統計,并得到統計結果。
[0097]S402:統計模塊103對于接收的用戶標識下的每個進程標識,根據記錄的該進程標識的磁盤資源訪問量以及讀取時間,計算出該進程標識的磁盤資源訪問速率。
[0098]具體地,統計模塊103對于接收的用戶標識下的每個進程標識,根據對應于該進程標識前次記錄的磁盤資源訪問量與讀取時間,以及本次記錄的磁盤資源訪問量與讀取時間,計算出該進程標識的磁盤資源訪問速率。
[0099]而且,在實際應用中,統計模塊103對于接收的用戶標識下、只有一次磁盤資源訪問量記錄的進程標識,可以將磁盤資源訪問量O作為該進程標識的前次記錄的磁盤資源訪問量,將對應于接收的用戶標識下的其它進程標識前次記錄的讀取時間,作為該進程標識的前次記錄的讀取時間,進而計算出該進程標識的磁盤資源訪問速率。
[0100]例如,如圖5所示,統計模塊103接收的用戶標識下的每個工作進程啟動后,均會調用統計模塊103,對該用戶標識下的各進程標識的磁盤資源訪問量進行統計。若在該用戶標識下的工作進程D啟動后,該用戶標識下的工作進程A、B和C的進程標識分別為A、B和C,且進程標識A在讀取時間V t2、t3的磁盤資源訪問量分別為VAtl、VAt2、VAt3,進程標識B在讀取時間的t2、t3的磁盤資源訪問量分別為VBt2、VBt3,進程標識C在讀取時間t3的磁盤資源訪問量分別為Vtt3 ;進程標識A、B和C對應的工作進程為工作進程A、B和C,則統計模塊103計算出:
[0101]進程標識A的磁盤資源訪問速率為:UA=(VAt3-VAt2)/(t3-t2);
[0102]進程標識B的磁盤資源訪問速率為UB=(VBt3-VBt2)/(t3_t2);
[0103]進程標識C的磁盤資源訪問速率為U。= (Vct3-O)/(t3_t2);
[0104]其中,圖5中所示的h、t2、t3分別為工作進程A、B、C和D調用統計模塊103時,統計模塊103記錄的讀取時間;且由于進程標識C只有一次磁盤資源訪問量記錄,因此,將磁盤資源訪問量O作為進程標識C的前次記錄的磁盤資源訪問量,將對應于其它進程標識A、B前次記錄的讀取時間t2作為進程標識C的前次記錄的讀取時間。
[0105]S403:統計模塊103對接收的用戶標識下的各進程標識的磁盤資源訪問速率進行相加,將相加得到的磁盤資源訪問速率作為統計結果。
[0106]例如,如圖5所示,統計模塊103對接收的用戶標識下的進程標識A、B和C的磁盤資源訪問速度進行相加,將相加得到的磁盤資源訪問速率Uall (如下表達式I所示)作為統計結果;
[0107]
【權利要求】
1.一種Web服務器的磁盤資源訪問控制方法,其特征在于,包括: 主進程接收到Web請求后,將該Web請求分配給一個工作進程,并將其它工作進程的請求處理信息傳送給該工作進程; 該工作進程調用標記模塊,并將分配的Web請求傳送給所述標記模塊;所述標記模塊從接收的Web請求中解析出用戶標識后向該工作進程返回;該工作進程將得到的用戶標識發送給所述主進程;所述主進程將該工作進程發送的用戶標識與該工作進程的進程標識的對應關系作為該工作進程的請求處理信息進行記錄; 該工作進程從所述其它工作進程的請求處理信息中查找出所述用戶標識所對應的進程標識后,調用統計模塊,并將查找到的進程標識、以及所述用戶標識傳送給所述統計模塊;所述統計模塊對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,根據讀取的磁盤資源訪問量進行統計;若確定統計結果超過為所述用戶標識配置的資源訪問配額,則向該工作進程返回拒絕信息,否則返回確認信息; 該工作進程若接收到確認信息,則對分配的Web請求進行處理;若接收到拒絕信息,則拒絕所述Web請求。
2.如權利要求1所述的方法,其特征在于,所述資源訪問配額具體為資源訪問速率上限;以及 所述統計模塊對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,根據讀取的磁盤資源訪問量進行統計,具體包括: 所述統計模塊記錄下接收的進程標識隸屬于所述用戶標識的隸屬關系;并對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,將讀取的磁盤資源訪問量與當前的讀取時間對應于所述用戶標識下的該進程標識進行記錄; 之后,所述統計模塊根據所述用戶標識下的各進程標識記錄的磁盤資源訪問量進行統計:所述統計模塊對于所述用戶標識下的每個進程標識,根據記錄的該進程標識的磁盤資源訪問量以及讀取時間,計算出該進程標識的磁盤資源訪問速率;對所述用戶標識下的各進程標識的磁盤資源訪問速率進行相加,將相加得到的磁盤資源訪問速率作為所述統計結果O
3.如權利要求2所述的方法,其特征在于,所述統計模塊記錄下接收的進程標識隸屬于所述用戶標識的隸屬關系,具體包括: 所述統計模塊查找是否有所述用戶標識的隸屬關系表; 若查找到所述用戶標識的隸屬關系表,則對于每個接收的進程標識,若確定所述用戶標識的隸屬關系表中未記錄該進程標識,則將其添加記錄到所述用戶標識的隸屬關系表中; 若沒有查找到所述用戶標識的隸屬關系表,則創建所述用戶標識的隸屬關系表,并將接收的進程標識隸屬于所述用戶標識的隸屬關系記錄到所述用戶標識的隸屬關系表中。
4.如權利要求2所述的方法,其特征在于,所述統計模塊對于所述用戶標識下的每個進程標識,根據記錄的該進程標識的磁盤資源訪問量以及讀取時間,計算出該進程標識的磁盤資源訪問速率,具體包括: 所述統計模塊對于所述用戶標識下的每個進程標識,根據對應于該進程標識前次記錄的磁盤資源訪問量與讀取時間,以及本次記錄的磁盤資源訪問量與讀取時間,計算出該進程標識的磁盤資源訪問速率。
5.如權利要求4所述的方法,其特征在于,所述統計模塊對于所述用戶標識下的每個進程標識,根據對應于該進程標識前次記錄的磁盤資源訪問量與讀取時間,以及本次記錄的磁盤資源訪問量與讀取時間,計算出該進程標識的磁盤資源訪問速率,具體包括:所述統計模塊對于所述用戶標識下、只有一次磁盤資源訪問量記錄的進程標識,將磁盤資源訪問量O作為該進程標識的前次記錄的磁盤資源訪問量,將對應于所述用戶標識下的其它進程標識前次記錄的讀取時間,作為該進程標識的前次記錄的讀取時間,進而計算出該進程標識的磁盤資源訪問速率。
6.如權利要求1所述的方法,其特征在于,所述資源訪問配額具體為資源訪問量上限;以及所述統計模塊對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,根據讀取的磁盤資源訪問量進行統計,具體包括:所述統計模塊對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量;將讀取的磁盤資源訪問量進行相加后得到所述統計結果。
7.如權利要求1-6任一所述的方法,所述磁盤資源訪問量具體為:讀磁盤數據量,或寫磁盤數據量。
8.—種Web服務器,其特征在于,包括:Web服務器模塊、標記模塊、統計模塊;其中,所述Web服務器模塊用于在其主進程接收到Web請求后,將該Web請求分配給所述Web服務器模塊的一個工作進程,并將所述Web服務器模塊的其它工作進程的請求處理信息傳送給該工作進程;該工作進程調用所述標記模塊,并將分配的Web請求傳送給所述標記模塊,并將所述標記模塊返回的用戶標識發送給所述主進程;所述主進程將該工作進程發送的用戶標識與該工作進程的進程標識的對應關系作為該工作進程的請求處理信息進行記錄;該工作進程從所述其它工作進程的請求處理信息中查找出所述用戶標識所對應的進程標識后,調用所述統計模塊,并將查找到的進程標識、以及所述用戶標識傳送給所述統計模塊;該工作進程還用于在接收到確認信息后,對分配的Web請求進行處理;在接收到拒絕信息后,拒絕所述Web請求;所述標記模塊用于從接收的Web請求中解析出用戶標識后,將解析出的用戶標識進行返回;所述統計模塊用于對于每個接收的進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,根據讀取的磁盤資源訪問量進行統計;若確定統計結果超過為接收的用戶標識配置的資源訪問配額,則返回拒絕信息,否則返回確認信息。
9.如權利要求8所述的服務器,其特征在于,所述資源訪問配額具體為資源訪問速率上限;以及所述統計模塊具體包括:隸屬關系記錄單元,用于對于所述統計模塊接收的用戶標識,查找是否有所述用戶標識的隸屬關系表;若查找到所述用戶標識的隸屬關系表,則對于每個接收的進程標識,若確定所述用戶標識的隸屬關系表中未記錄該進程標識,則將其添加記錄到所述用戶標識的隸屬關系表中;若沒有查找到所述用戶標識的隸屬關系表,則創建所述用戶標識的隸屬關系表,并將接收的進程標識隸屬于所述用戶標識的隸屬關系記錄到所述用戶標識的隸屬關系表中。 磁盤文件讀取單元,用于對于所述統計模塊接收的每個進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量,將讀取的磁盤資源訪問量與當前的讀取時間對應于所述用戶標識下的該進程標識進行記錄; 統計結果確定單元,用于對于所述用戶標識下的每個進程標識,根據對應于該進程標識前次記錄的磁盤資源訪問量與讀取時間,以及本次記錄的磁盤資源訪問量與讀取時間,計算出該進程標識的磁盤資源訪問速率;對所述用戶標識下的各進程標識的磁盤資源訪問速率進行相加,將相加得到的磁盤資源訪問速率作為所述統計結果; 比較單元,用于將所述統計結果確定單元確定出的統計結果與為所述用戶標識配置的資源訪問速率上限進行比較;若確定所述統計結果超過所述資源訪問速率上限,則返回拒絕信息,否則返回確認信息。
10.如權利要求8所述的服務器,其特征在于,所述資源訪問配額具體為資源訪問量上限;以及 所述統計模塊具體包括: 磁盤文件讀取單元,用于對于所述統計模塊接收的每個進程標識,讀取對應該進程標識的進程磁盤文件中的磁盤資源訪問量并進行記錄; 統計結果確定單元,用于將所述磁盤文件讀取單元記錄的磁盤資源訪問量進行相加后得到所述統計結果; 比較單元,用于將所述統計結果確定單元確定出的統計結果與為所述用戶標識配置的資源訪問量上限進行比較;若確定所述統計結果超過所述資源訪問量上限,則返回拒絕信息,否則返回確認信息。
【文檔編號】G06F3/06GK103605480SQ201310524149
【公開日】2014年2月26日 申請日期:2013年10月29日 優先權日:2013年10月29日
【發明者】張任重 申請人:新浪網技術(中國)有限公司