A. WEB項目怎麼獲取不同伺服器數據
第一種,網頁前端用響應式設計適配手機客戶端界面,然後手機客戶端直接通過WebView控制項打開頁面。優點,對於服務端已經有成型的產品來說,客戶端開發成本小.缺點,展示的效果和性能不會很好,響應慢,影響交互體驗。
第二種,服務端封裝好API,客戶端做好原生交互界面,然後通過服務端提供的API請求數據在界面顯示。優點,客戶端性能和交互體驗可以得到保障(當然,前提是設計師和程序員比較靠譜)。缺點,開發成本會相對第一種方案的大,尤其是Android,適配需要一些精力和時間的。
B. Web 伺服器
Web伺服器端主要由兩部分組成,即IIS(Internet Information Server)和WEBGIS伺服器(包括MAPGIS-IMS組件和Internet GIS站點設計向導程序Wizard)。GIS組件層可理解為WEBGIS伺服器。
其中IIS主要負責接收普通的用戶請求,當其需要空間數據時則向WEBGIS伺服器發出請求,WEBGIS伺服器接收到瀏覽器端的請求後,利用MAPGIS-IMS組件的功能,進行處理、分析、計算等;如果需要數據伺服器的數據,則由WEBGIS伺服器向數據伺服器發出請求。
數據伺服器
GIS數據伺服器層的平台是UNIX或Windows/NT以及地理資料庫。它完成數據的定義、存儲、檢索、完整性約束以及有關的資料庫管理工作,同時接收WEBGIS伺服器發送來的數據請求,並將處理結果交送WEBGIS伺服器。
系統中的數據可以採用文件系統(MAPGIS的空間數據文件SDF)方式存儲,也可以採用商用關系資料庫(如SQL Server或Oracle),一般建議使用資料庫方式,方便管理、檢索。MAPGIS採用空間數據引擎(SDE)來管理資料庫中的數據,它接收來自WEBGIS伺服器的數據請求,並將處理結果交送WEBGIS伺服器。
C. 如何通過瀏覽器與web伺服器進行數據交互的
TCP協議:用戶發送請求信息,伺服器認證返回信息,用戶再發送指定訪問頁面請求
UDP協議:用戶發送,伺服器接收,直接傳輸數據信息
大概是這個意思
D. 軟體如何接收web伺服器數據
既然webservice服務端C、D
不需要再C里操作
那麼按照需求,A直接調用C的webservice介面,而c的介面只是一個調用D伺服器的介面。
然後等C獲得D的操作結果後,然後c在ruturn給A。
本質上其實就是一個類調用另一個類的方法。只是這兩個類分屬不同伺服器而已。
E. C#做web伺服器接收發來的post和get請求
就新建個webservice項目,然後寫個函數類似如下都行
12345678910
public void Up(XmlDocument doc) { //裡面通過解析xml操作你自己的資料庫 } public XmlDocument Down() { //查詢資料庫並生成xml return new XmlDocument(); }
如果XmlDocument他那邊不能接收你就直接改成string類型也行。
順便說下VS里新建WCF服務項目類型也可以實現類似web service的功能,而且更推薦。
追問
public XmlDocument Down()的意思就是將資料庫的欄位名全部轉換成XML格式,然後返回給對方,對方就根據裡面的欄位名進行賦值再通過public void Up(XmlDocument doc)這樣返回過來嗎?
追答
實際上webservice與你平時編程沒區別,最大的區別就是要考慮到webservice就是為了跨平台使用的,也就是純文本類型實際上是最通用的,因此不管參數或者返回值都最好是string,int等基本類型,當然XmlDocument理論上也可以我沒試過,你自己多試就知道了。
追問
但我想提供一個資料庫表名的類給他進行調用,畢竟所有欄位的類型要跟資料庫的一致,所以想返回值是一個表的類名,這樣的話,是不是應該寫成
public XXX getXXX()
{
return new xxx();
}
XXX為某個資料庫表的類名,這樣對方就能得到我這個類和他對應的屬性,然後使用下面的方法返回數據
public void setXXX(XXX x)
{
//判斷XXX的值並處理
F. Web伺服器怎麼接收Android發送過來的文件信息
直接用 http handler 或者 http webapi 處理 multipart-data 請求
java:
File file = new File("F:\\tmp\\taiping\\conf-1.json");
MultipartEntity mpEntity = new MultipartEntity(); // 文件傳輸
ContentBody cbFile = new FileBody(file);
mpEntity.addPart("fileContent", cbFile);
CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost("http://localhost:9999/api/values");
post.setEntity(mpEntity);
try {
CloseableHttpResponse response = client.execute(post);
String result = IOUtils.toString(response.getEntity().getContent());
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
.net http webapi
public HttpResponseMessage Post()
{
var content = Request.Content;
var uploadDir = HttpContext.Current.Server.MapPath("~/Upload");
var newFileName = "";
var sp = new MultipartMemoryStreamProvider();
Task.Run(async () => await Request.Content.ReadAsMultipartAsync(sp)).Wait();
foreach (var item in sp.Contents)
{
if (item.Headers.ContentDisposition.FileName != null)
{
var filename = item.Headers.ContentDisposition.FileName.Replace("\"", "");
newFileName = uploadDir + "\\" + filename;
var ms = item.ReadAsStreamAsync().Result;
using (var br = new BinaryReader(ms))
{
var data = br.ReadBytes((int)ms.Length);
File.WriteAllBytes(newFileName, data);
}
}
}
var result = new Dictionary<string, string>();
result.Add("result", newFileName);
var resp = Request.CreateResponse(HttpStatusCode.OK, result);
resp.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");
return resp;
}
G. 第五章: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就用於此類重定向。
H. Web伺服器性能和站點訪問性能該如何優化
今天小編要跟大家分享的文章是關於Web伺服器性能和站點訪問性能該如何優化?正在從web前端工作的小夥伴們來和小編一起看一看吧!
一、優化思路淺析
要優化Web伺服器的性能,我們先來看看Web伺服器在web頁面處理上的步驟:
1、Web瀏覽器向一個特定的伺服器發出Web頁面請求;
2、Web伺服器接收到web頁面請求後,尋找所請求的web頁面,並將所請求的Web頁面傳送給Web瀏覽器;
3、Web瀏覽器接收到所請求的web頁面內容,並將它顯示出來。
上面三個步驟都關系Web伺服器,但實際Web伺服器性能相關最大的是在第2步,這里Web伺服器需要尋找來自瀏覽器所請求的Web
頁面內容。
我們知道,Web頁面內容有靜態的,也有動態的,靜態的內容,web
伺服器可以直接將結果發回給瀏覽器,對於動態內容,則通常需要交給應用伺服器先處理,由應用伺服器返回結果。
當然,也有Web伺服器本身可以處理動態內容的,例如IIS就可以自已解釋處理ASP,ASP.NET這兩種微軟的動態網頁腳本語言。
從上面簡要的分析里,我們大致可以得到這樣的結論,影響Web頁面訪問的影響因素會有這幾個:
1、Web伺服器從磁碟中讀取靜態頁面內容的速度,也即時間;
2、Web伺服器判定請求內容是靜態還是動態內容的時間;
3、Web伺服器轉發請求給應用伺服器的時間;
4、應用伺服器處理(解釋)動態內容所需的時間;
5、Web伺服器返回Web內容給瀏覽器的響應時間;
6、Web伺服器接收來自瀏覽器請求的處理性能;
7、Web訪問請求數據在網路上傳輸的時間:包括從瀏覽器到伺服器,和從伺服器到瀏覽器兩部分;
8、瀏覽器本地計算和渲染Web內容的時間,即接收內容後展現內容的時間。
上面8項很容易理解,也很直接,其實還有以下幾項也是關乎Web
頁面訪問速度體驗的因素,你可以思考下是否如此?或者說是否會影響到頁面訪問性能。
§Web伺服器執行安全策略檢查的時間,或者說性能;
§Web伺服器讀取日誌文件、寫日誌內容、關閉對日誌文件訪問的時間,先讀後寫再關閉,這三步中的讀與寫又涉及到磁碟訪問性能因素;
§同時與Web伺服器連接會話的客戶端數量大小,即並發訪問量多大。
我們可以將上面的影響因素抽像出來,那麼就是:
1、Web伺服器磁碟性能;
2、Web伺服器與應用伺服器交互的性能;
3、應用伺服器處理動態內容的性能,或者說動態內容應用處理性能;
4、客戶端與Web伺服器的連接速度,即網路傳輸性能;
5、Web瀏覽器解釋和渲染Web內容的性能;
6、Web訪問並發性能。
反映到我們進行性能優化,可以入手的角度就有:
1、增加帶寬,包括伺服器和客戶端兩邊的Internet連接帶寬;
2、加快動態內容的處理性能;
3、盡可能多地使用靜態內容,這樣Web伺服器就可以無需請求應用伺服器,直接將Web內容發給瀏覽器端,這里可以入手的方案又有:
動態內容緩存
動態內容靜態化
多台伺服器負載均衡同時處理大量的並發訪問;
提升伺服器磁碟訪問性能,也即通常所說的I/O性能;
減少網頁中的HTTP請求數;
更換更好性能的Web伺服器;
合理部署伺服器,在離客戶端更近的地方部署伺服器,已經證明可以明顯地提升訪問性能。
二、性能優化實踐
經過前面小節的簡要分析,相信你對優化Web伺服器有一定的思路了,你可以從硬體層面、軟體層面、Web代碼三個層面去優化。
下面我們結合一個具體的實例來實踐一回,本文所舉例是一個小型的Web
站點,部分數據系假設,如有類同,純屬巧合,僅起拋磚引玉之用。在實際工作中,如果碰到大站點,你可以參考此處的分析,修改優化方案。
1.站點簡介
一個社區論壇站點,採用Discuz!論壇程序構建,該程序採用主流的PHP+MySQL組成。
網站目前有近5萬注冊用戶,絕大多數是國內的用戶,活躍用戶數在一半左右,每天平均PV在15~20萬,獨立訪問IP數在8000
左右。
2.Web伺服器性能優化需求
網站現部署在國外的伺服器,租用虛擬主機來運營,因為訪問量比較大,所以經常會收到虛擬主機服務商的流量很大的通知,要求控制下訪問量。
另外,虛擬主機的伺服器在美國,沒有在國內租用虛擬主機的原因是國內網站在備案方面非常繁瑣,在網站一開始運營時數據量和訪問量都比較小,所以對性能要求不高,數據量小,所以伺服器在查詢處理數據時速度比較快,也讓人感覺訪問速度不慢,現在隨著數據量和訪問量的不斷上升,訪問速度已明顯下降,到了需要改善訪問性能的時候了。
基於目前該社區網站的情況,提出的優化需求是,國內訪問速度需要提升一倍,目前首頁載入時間需要40秒左右,希望優化後能在20
秒以內將首頁載入完成。
另外提出網站數據能夠每天自動備份一次,備份數據保留一個月的,以便隨時恢復。
上述兩點需求,其中第一條才是性能優化需求,第二條是額外的需求了。
3.性能優化方案
根據其網站的現狀和優化需求,結合自己的經驗,加上谷歌的搜索,同時與網站主不斷確認溝通,最終得到以下性能優化方案:
由虛擬主機部署改為獨立伺服器部署
虛擬主機受限比較多,無法自己自定義配置Web伺服器,無法配置PHP
動態緩存,而且獨立伺服器可以獨享內存、處理器資源,不再受虛擬主機商對每個虛擬主機用戶的內存和處理器資源佔用限制。處理器資源和內存資源,對接受更多並發訪問有直接性能提升效果。
獨立伺服器,我們選用Linode2048型號,2G內存,4核處理器(Linode所有VPS都是四核處理器),80G硬碟空間,800G
網路流量。
由Windows操作系統改為Linux操作系統
網站使用的是PHP+MySQL程序,PHP在Windows下的性能,受限於IIS需要通過ISAPI形式調用PHP,所以性能不如
Linux下Apache直接通過PHP模塊解釋PHP,更不如Nginx與PHP-FPM
的性能,既然使用了獨立伺服器,操作系統也可以自己確定,Linux系統我們選用了熟悉的UbuntuLinuxServer10.04(一年前還沒有
12.04),^-^。
Web伺服器採用Nginx,而不使用Apache
選用Nginx而不用Apache的原因非常直接和乾脆,因為站點里有很多靜態的附件文件,在處理靜態內容上,Nginx性能是Apache
的差不多10倍。
在PHP解釋和偽靜態規則方面,Apache要比Nginx強,但這不影響我們放棄它,為緩解這一點,我們在後面對PHP
進行了動態緩存。
對PHP查詢進行動態緩存,使用eAccelerator這個加速器
PHP加速器是一個為了提高PHP執行效率,從而緩存起PHP的操作碼,這樣PHP後面執行就不用解析轉換了,可以直接調用PHP
操作碼,這樣速度上就提高了不少。
eAccelerator是一個開源PHP加速器,優化和動態內容緩存,提高了PHP腳本的緩存性能,使得PHP
腳本在編譯的狀態下,對伺服器的開銷幾乎完全消除。它還有對腳本起優化作用,以加快其執行效率。使得的PHP程序代碼執效率能提高1-10
倍,這個加速還是非常明顯的。
具體地,我們計劃對eAccelerator進行以下設置優化:
§緩存使用物理內存來進行,不使用磁碟來緩存。我們知道內存的讀寫性能是硬碟的N倍,所以在內存資源可以安排情況下,強烈建議使用內存來保存
eAccelerator的緩存內容。
§緩存大小設置為32MB,這個值是操作系統默認支持最大的緩存容量。雖然可以通過修改配置文件來加大這個值,但我們覺得沒有必要,所以就放棄了。
Nginx性能優化
選用了Nginx,雖然它的性能很好,但我們仍然需要對它進行性能優化,在這個案例中,我們做了以下優化:
§使用8個進程,每個進程大約需要20M內存消耗,這里一共使用了150M左右的內存。
§充分使用主伺服器的CPU內核:四核,使用CPU粘性配置選項(worker_cpu_affinity),每核處理器分配兩個進程。
§開啟gzip壓縮功能:gzip壓縮對JS,CSS,XML壓縮效果非常好,能壓縮一半,即減少一倍的傳輸時間;對圖片文件,JPG
已經壓縮過的,它的壓縮性能要少一些。
§圖片本地緩存1天:網站上的圖片很多,通常一張圖片上傳後,不會頻繁的修改,只會頻繁的訪問,所以將圖片放在Nginx
緩存里,可以減少伺服器訪問載入次數,提升訪問速度。
§JS、CSS文件本地緩存7
天:這兩種網頁文件,平時都不會去修改它,將它緩存起來,可以減少載入次數,提升訪問速度。為什麼這兩種文件不和圖片一起設置緩存有效期,是考慮了不同文件的修改頻率不一樣。
§Nginx日誌每天切割一次:這個優化項能大大減小Nginx日誌文件的大小,經過一周的查看,每天的日誌文件是50M
左右,如果不是每天切割,用月切割,那一個月的日誌文件就是幾個G,要Web
伺服器在內存里載入這么大的文件,系統本身內存不夠用,就自然會用到磁碟來緩存,這就影響性能。每天50M左右,在內存上完全可以順利載入,這樣Nginx
在處理訪問時,可以快速的保存訪問日誌。
經過上述幾個優化項目,Nginx這邊一共需要佔用200M左右內存資源。
對PHPCGI進程性能進行優化
Nginx沒有PHP模塊,所以它對PHP的支持是通過PHP-FPM來實現的,PHP-FPM
是跑進程來處理並發請求,在這個案例中,我們配置了20個進程,每個進程差不多佔用20M左右內存資源,一共是400M左右。
同時,PHP-FPM與Nginx交互機制,選用LinuxSocket模式而不是TCP協議埠,Socks是系統級處理模式,socks
也就是一個文件連接,而TCP協議埠,需要經過網路協議處理,性能不如前者,所以我們選擇了前者。
MySQL資料庫性能優化
因為網站主程序是選用他人開發的開源程序,所以對資料庫查詢的程序優化我們無法處理,只能從MySQL本身尋找突破口。
我們可以想像一下,對於論壇網站,通常看貼、查貼的訪問量要遠大於創建貼子、回復貼子的訪問量,體現在MySQL
資料庫上,就是讀表與查詢表數據的連接處理更多。
因此我們要選擇對讀表、查詢性能更好的存儲引擎,結合以前了解的知識,MySQL預設的MyISAM
引擎就是被設計為適合處理讀頻率遠大於寫頻率的環境,查詢效率相當可觀,而且內存佔用很少,這也與我們租用低內存配置的VPS相符。
具體到MySQL配置參數的優化上,受限於伺服器上內存資源本身有限,就直接採用預設的中型環境配置文件。
內容分發網路應用
站點每天十多萬的訪問,上萬獨立IP
訪問,查看先前的訪問統計,訪問來自國內各個地區,使用多種網路連接訪問進來,為保證來自各網路的用戶訪問速度,同時也減少對網站伺服器的請求,我們採用了CDN
來分發靜態內容,這樣各地的用戶可以就近訪問到已緩存在CDN上的文件,CDN
服務商會在靜態內容第一次訪問時緩存到他們全國各地的伺服器上,當第二次訪問時,用戶實際是沒有連接到網站伺服器上獲取文件的,而是直接從CDN
伺服器上獲取,可以明顯的提升網站性能。
以上就是小編今天為大家分享的關於Web伺服器性能和站點訪問性能該如何優化的文章,希望本篇文章能夠對正在從事web前端工作的小夥伴們有所幫助。想要了解更多web前端相關知識記得關注北大青鳥web培訓官網。最後祝願小夥伴們工作順利!
I. webservice服務端怎麼接收數據
可能我沒有太懂你的需求
既然webservice服務端C、D
不需要再C里操作
那麼按照需求,A直接調用C的webservice介面,而c的介面只是一個調用D伺服器的介面。
然後等C獲得D的操作結果後,然後c在ruturn給A。
本質上其實就是一個類調用另一個類的方法。只是這兩個類分屬不同伺服器而已。
不太明白這個需求