併發和並行從宏觀上來說都是同時處理多路請求的概念。但併發和並行又有區別,並行是指兩個或者多個事件在同一時刻發生;而併發是指兩個或多個事件在同一時間間隔內發生。web
在操做系統中,併發是指一個時間段中有幾個程序都處於已啓動運行到運行完畢之間,且這幾個程序都是在同一個處理機上運行,但任一個時刻點上只有一個程序在處理機上運行。服務器
①程序與計算再也不一一對應,一個程序副本能夠有多個計算
②併發程序之間有相互制約關係,直接制約體現爲一個程序須要另外一個程序的計算結果,間接制約體現爲多個程序競爭某一資源,如處理機、緩衝區等。
③併發程序在執行中是走走停停,斷續推動的。
在網絡服務器上,併發是指同一時刻能處理的鏈接數,好比,服務器能創建1000個TCP鏈接,即服務器同時維護了1000個socket,這個服務器的併發量就是1000,可是服務器可能只有單核或者8核,16核等,總之對這1000個socket鏈接的處理也是分時來作的。每一個socket服務器處理的時間若是是1s,那麼該服務器1s內能夠處理完1000個請求,若是每一個socket處理100ms的話,那麼該服務器1s內能夠處理10000個請求。網絡
在這裏咱們先拋出一些概念,若是這些概念都弄清楚了,併發和並行基本就清楚了。併發
會話:在咱們用電腦工做時,打開的一個窗口或一個Web頁面,咱們能夠把它叫作一個「會話」,擴展到web服務器上,要維護不少個用戶的web頁面訪問,咱們能夠認爲服務器管理了多個「會話」。socket
併發鏈接數:網站有時候報錯:「HTTP Error 503. The service is unavailable」。但刷一兩下又正常,估計極可能是超過網站的最大併發鏈接數了。併發鏈接指網絡流量管理設備或代理服務器對其業務信息流的處理能力,是可以同時處理的點對點鏈接的最大數目,它反映出設備對多個鏈接的訪問控制能力和鏈接狀態跟蹤能力,這個參數的大小直接影響到設備所能支持的最大信息點數。性能
併發能夠理解爲服務器最多維護多少個會話數,並行則不同,它關係的是有多少個會話是在同時進行,假若有兩臺服務器(進程),可能並行的數量是2,而併發的數量是1000。咱們還能夠對比下吞吐量和帶寬的概念。測試
吞吐量與帶寬的區分:吞吐量和帶寬是很容易搞混的一個詞,二者的單位都是Mbps。先來看二者對應的英語,吞吐量:throughput;帶寬:Max net bitrate。當討論通訊鏈路的帶寬時,通常是指鏈路上每秒所能傳送的比特數,它取決於鏈路時鐘速率和信道編碼在計算機網絡中又稱爲線速。能夠說以太網的帶寬是10Mbps。可是須要區分鏈路上的可用帶寬(帶寬)與實際鏈路中每秒所能傳送的比特數(吞吐量)。一般更傾向於用「吞吐量」一詞來表示一個系統的測試性能。這樣,由於實現受各類低效率因素的影響,因此由一段帶寬爲10Mbps的鏈路鏈接的一對節點可能只達到2Mbps的吞吐量。這樣就意味着,一個主機上的應用可以以2Mbps的速度向另外的一個主機發送數據。網站
帶寬能夠理解成是並行,即同時能夠有10M 個bit(0,1)在線路中傳輸。而吞吐量相似併發,指主機每秒能夠處理2M個bit。比喻有些不是很恰當,但仔細體會下,有些相似之處。編碼