⑴ webservice 是多線程嗎
應該是多線程的,每個請求是一個線程,每個線程是獨立的
應該是多線程的,每個請求是一個線程,每個線程是獨立的
⑵ 進程,線程,服務和任務的區別
進程(process)是指運行中的應用程序,每一個進程都有自己獨立的內存空間。一個應用程序可以同時啟動多個進程。例如對於IE瀏覽器程序,每打開一個IE瀏覽器窗口,就啟動了一個新的進程。同樣,每次執行JDK的java.exe程序,就啟動了一個獨立的Java虛擬機進程,該進程的任務是解析並執行Java程序代碼。
線程(thread)是操作系統能夠進行運算的最小單位。線程被包含在進程之中,是行程中的實際運行單位。一條線程是指進程中的一個單一順序的控制流,一個進程中可以並行多個現成,每條縣城並行執行不同的任務。當進程內的多個線程同時運行時,這種運行方式稱為並發運行。許多伺服器程序,如資料庫伺服器和Web伺服器,都支持並發運行,這些伺服器能同時響應來自不同客戶的請求。
進程和線程的主要區別在於:每個進程都需要操作系統為其分配獨立的內存地址空間,而同一進程中的所有線程在同一塊地址空間中工作,這些線程可以共享同一塊內存和系統資源,比如共享一個對象或者共享已經打開的一個文件。
服務(service)也稱為守護線程,是沒有界面的,默默運行在系統後台的。他可以為應用程序提供一些更有特色的東西,比如播放MP3,開啟一個播放MP3的服務,用戶點擊開始按鈕通知服務開啟,點擊關閉按鈕通知服務關閉,如果你禁用這個服務,那別人想播放MP3那是不行的,而且服務之間是有可能互相依靠的。
任務(task)是指由軟體完成的一個活動。任務是比較抽象的概念,是一個一般性的術語,一個任務既可以是一個進程,也可以是一個線程。簡而言之,它指的是一系列共同達到某一目的的操作。例如,讀取數據並將數據放入內存中。這個任務可以作為一個進程來實現,也可以作為一個線程(或作為一個中斷任務)來實現。
⑶ 伺服器,使用多進程 與 多線程 請問有什麼區別
關於多進程和多線程,教科書上最經典的一句話是「進程是資源分配的最小單位,線程是CPU調度的最小單位」,這句話應付考試基本上夠了,但如果在工作中遇到類似的選擇問題,那就沒有這么簡單了,選的不好,會讓你深受其害。
經常在網路上看到有的XDJM問「多進程好還是多線程好?」、「Linux下用多進程還是多線程?」等等期望一勞永逸的問題,我只能說:沒有最好,只有更好。根據實際情況來判斷,哪個更加合適就是哪個好。
我們按照多個不同的維度,來看看多線程和多進程的對比(註:因為是感性的比較,因此都是相對的,不是說一個好得不得了,另外一個差的無法忍受)。
適應於多核、多機分布式;如果一台機器不夠,擴展到多台機器比較簡單
適應於多核分布式
進程占優
1)需要頻繁創建銷毀的優先用線程
原因請看上面的對比。
這種原則最常見的應用就是Web伺服器了,來一個連接建立一個線程,斷了就銷毀線程,要是用進程,創建和銷毀的代價是很難承受的
2)需要進行大量計算的優先使用線程
所謂大量計算,當然就是要耗費很多CPU,切換頻繁了,這種情況下線程是最合適的。
這種原則最常見的是圖像處理、演算法處理。
3)強相關的處理用線程,弱相關的處理用進程
什麼叫強相關、弱相關?理論上很難定義,給個簡單的例子就明白了。
一般的Server需要完成如下任務:消息收發、消息處理。「消息收發」和「消息處理」就是弱相關的任務,而「消息處理」裡面可能又分為「消息解碼」、「業務處理」,這兩個任務相對來說相關性就要強多了。因此「消息收發」和「消息處理」可以分進程設計,「消息解碼」、「業務處理」可以分線程設計。
當然這種劃分方式不是一成不變的,也可以根據實際情況進行調整。
4)可能要擴展到多機分布的用進程,多核分布的用線程
原因請看上面對比。
5)都滿足需求的情況下,用你最熟悉、最拿手的方式
至於「數據共享、同步」、「編程、調試」、「可靠性」這幾個維度的所謂的「復雜、簡單」應該怎麼取捨,我只能說:沒有明確的選擇方法。但我可以告訴你一個選擇原則:如果多進程和多線程都能夠滿足要求,那麼選擇你最熟悉、最拿手的那個。
需要提醒的是:雖然我給了這么多的選擇原則,但實際應用中基本上都是「進程+線程」的結合方式,千萬不要真的陷入一種非此即彼的誤區。
消耗資源:
從內核的觀點看,進程的目的就是擔當分配系統資源(CPU時間、內存等)的基本單位。線程是進程的一個執行流,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。
線程,它們彼此之間使用相同的地址空間,共享大部分數據,啟動一個線程所花費的空間遠遠小於啟動一個進程所花費的空間,而且,線程間彼此切換所需的時間也遠遠小於進程間切換所需要的時間。據統計,總的說來,一個進程的開銷大約是一個線程開銷的30倍左右,當然,在具體的系統上,這個數據可能會有較大的區別。
通訊方式:
進程之間傳遞數據只能是通過通訊的方式,即費時又不方便。線程時間數據大部分共享(線程函數內部不共享),快捷方便。但是數據同步需要鎖對於static變數尤其注意
線程自身優勢:
提高應用程序響應;使多CPU系統更加有效。操作系統會保證當線程數不大於CPU數目時,不同的線程運行於不同的CPU上;
改善程序結構。一個既長又復雜的進程可以考慮分為多個線程,成為幾個獨立或半獨立的運行部分,這樣的程序會利於理解和修改。
⑷ webservice處理請求時 是不是多線程的 如果數據頻繁要自己寫線程處理嗎
肯定不是多線程, 如果處理請求時使用了多線程那麼性能就很差
開始的重量級類, 像hibernate中的SessionFactory等等都是線程安全的
很少需要考慮線程的同步問題
⑸ php在web上運行是多進程還是單進程
php在web上運行是單進程的,具體原因如下:
1、PHP是一個單線程的腳本開發語言,它常在Web開發及系統集成中出現。
PHP是單進程單線程的,當處理復雜的業務的時候我們會發現他串列執行命令的時候CPU、磁碟、內存等利用的都很低有很多時候都是在排隊等待,有的時候我們想並發的讓他去執行一批任務然後一起拿解決結果是一件很痛苦的事情(自己用pthread或者其他方式才能解決,但是這很痛苦)開發語言一直在升級變化適應需要。另外,可以考慮通訊使用Swoole。
2、解決方案如下:
分前後端,前端可以通過消息中間件,同步、非同步 調用一個或多個介面。但是socket的擴展確確實實不咋好用。不是普通小企業能做的出來的。
⑹ 一個web網站,每個用戶訪問時時開啟一個線程還是進程
線程。(湊字湊字文字)
⑺ Web伺服器是什麼通俗易懂的回答
Web伺服器一般指網站伺服器,是指駐留於網際網路上某種類型計算機的程序,可以向瀏覽器等Web客戶端提供文檔,也可以放置網站文件,讓全世界瀏覽;可以放置數據文件,讓全世界下載。目前最主流的三個Web伺服器是Apache Nginx IIS。
WEB伺服器也稱為WWW(WORLD WIDE WEB)伺服器,主要功能是提供網上信息瀏覽服務。
WWW 是 Internet 的多媒體信息查詢工具,是 Internet 上近年才發展起來的服務,也是發展最快和目前用的最廣泛的服務。正是因為有了WWW工具,才使得近年來 Internet 迅速發展,且用戶數量飛速增長。
(7)web服務用線程還是進程擴展閱讀:
WEB伺服器特點:
Windows,Linux與Unix這3個操作系統是架設Web伺服器比較常見的操作系統。Linux的安全性能在這3個操作系統中最高,可以支持多個硬體平台,其網路功能比較強大。
總的來說,這兩大優點是其他操作系統不可替代的:
1、可以依據用戶不同的需求來隨意修改、調整與復制各種程序的源碼以及發布在互聯網上;
2、Linux操作系統的市場價格比較便宜,也能夠在互聯網上免費下載源碼。可以說,Linux為架設既高效又安全的Web伺服器的比較理想的操作系統。
3、此外,要讓Web伺服器更具有優越的性能,可以根據伺服器系統之特點與用途作進一步的優化與處理,盡量減少Web伺服器的數據傳輸量以及降低其數據傳輸的頻率。
進而促進網路寬頻的利用率與使用率,以及提高網路客戶端的網頁載入的速度,同時也可以減少Web伺服器各種資源的消耗。
⑻ 「WEB伺服器」是什麼
Web伺服器:
一般指網站伺服器,是指駐留於網際網路上某種類型計算機的程序,可以向瀏覽器等Web客戶端提供文檔。
Web伺服器作用:
1、放置網站文件,讓全世界瀏覽;
2、可以放置數據文件,讓全世界下載。
Web伺服器分類:
1、Apache;
2、Nginx;
3、IIS。
Web伺服器工作原理可分為四個步驟:
連接過程、請求過程、應答過程以及關閉連接。
⑼ linux下多進程和多線程在web server上的區別
最好是多進程,單線程。一個cpu一個進程,一個進程一個線程。
這樣可以發貨多核的優勢。
線程切換開銷比較大,進程切換開銷更大。為啥還要多進程,是因為進程跟cpu綁定,盡量不切換進程。