1、求50到100並發的伺服器配置?
50-100並發,如果是網站的話,數量就很少,用單路四核的配置就可以了。如果是做erp,oa軟體之類的,至少得用雙路四核SAS硬碟的才可以。
你可以看看國產品牌正睿的這款雙路四核伺服器。標配一顆至強E5506四核處理器,英特爾5500伺服器晶元組主板,2G DDR3 REG ECC 1333MHz內存,SAS 300G 15000轉/分鍾企業級硬碟,雙千兆網卡,性能可以說是非常不錯。如果以後隨著業務量的增長,覺得性能不夠用了,還可以擴展到兩顆處理器,達成8顆處理核心,最大支持24GB DDR3 REG ECC高速容錯校驗內存。
產品型號:I247789S-E
產品類型:雙路四核塔式伺服器
處 理 器:Xeon E5506
內 存:2G DDR3 REG ECC
硬 盤:SAS 300G
機 構:塔式
價 格:¥7999
購買即贈 《200元電子正睿券》
銀牌服務
重慶五年免費上門服務,全國三年免費上門服務,關鍵部件三年以上免費質保。
給你推薦的是國產品牌正睿的伺服器產品,他們的產品性價比很高,做工很專業,兼容性,質量之類的都有保障,售後也很完善,3年免費質保,3年免費上門服務,在業界口碑很不錯。
2、伺服器的並發是什麼意思,怎麼計算的!
伺服器並發指的是多個用戶同時訪問資料庫中的同一欄位的行為。這樣的用戶行為對於伺服器的性能是一種考驗。
但是,再好的伺服器也有自己的性能上限,當並發用戶數過多的時候,再好的伺服器也支持不住。事實上,我們在生活中經常能遇到由於並發用戶過多而導致的系統緩慢甚至癱瘓現象。比方說,很多使用過那些在線考試報名系統的朋友都會發現,半夜登錄系統報名比白天登錄系統報名要容,網頁反應速度也要快一些,這就是由於晚上的並發用戶數比較小的原因。
對於IT運維人員來說伺服器並發是恐怖的,因為伺服器的最大用戶並發數並不是IT運維人員所能控制的,我們能做到的只是採用各種手段來提升系統的性能,提升伺服器的性能利用率。
3、1000個用戶並發的網站伺服器大概需要什麼樣的配置?
並發數
不能作為配置參考
關鍵是你網站
和數據的性質啊
說個例子你就明白了
如果是視頻站
並發1000
那可實實在在同時的高流量並發
必須高帶寬
高配置應對
可如果是文字小說站呢
那就算並發也沒那麼大影響
你也知道你普通的並發
和那8000的區別了
所以關鍵不是數字
而是性質
決定配置
4、高並發的伺服器有什麼模式
服務程序最為關鍵的設計是並發服務模型,當前有以下幾種典型的模型:
- 單進程服務,使用非阻塞IO
使用一個進程服務多個客戶,通常與客戶通信的套接字設置為非阻塞的,阻塞只發生在select()、poll()、epoll_wait()等系統調用上面。這是一種行之有效的單進程狀態機式服務方式,已被廣泛採用。
缺點是它無法利用SMP(對稱多處理器)的優勢,除非啟動多個進程。此外,它嘗試就緒的IO文件描述符後,立即從系統調用返回,這會導致大量的系統調用發生,尤其是在較慢的位元組傳輸時。
select()本身的實現也是有局限的:能打開的文件描述符最多不能超過FD_SETSIZE,很容易耗盡;每次從select()返回的描述符組中掃描就緒的描述符需要時間,如果就緒的描述符在末尾時更是如此(epoll特別徹底修復了這個問題)。
- 多進程服務,使用阻塞IO
也稱作 accept/fork 模型,每當有客戶連線時產生一個新的進程為之服務。這種方式有時是必要的,比如可以通過操作系統獲得良好的內存保護,可以以不同的用戶身份運行程序,可以讓服務運行在不同的目錄下面。但是它的缺點也很明顯:進程比較占資源,進程切換開銷太大,共享某些信息比較麻煩。Apache 1.3就使用了這種模型,MaxClients數很容易就可以達到。
- 多線程服務,使用阻塞IO
也稱之 accept/pthread_create模型,有新客戶來時創建一個服務線程而不是服務進程。這解決了多進程服務的一些問題,比如它佔用資源少,信息共享方便。但是麻煩在於線程仍有可能消耗光,線程切換也需要開銷。
- 混合服務方式
所謂的混合服務方式,以打破服務方和客戶方之間嚴格的1:1關系。基本做法是:
新客戶到來時創建新的工作線程,當該工作線程檢測到網路IO會有延遲時停止處理過程,返回給Server一個延遲處理狀態,同時告訴 Server被延遲的文件描述符,延遲超時時間。Server會在合適的時候返回工作線程繼續處理。注意這里的工作線程不是通過 pthread_create()創建的,而是被包裝在專門用於處理延遲工作的函數里。
這里還有一個問題,工作線程如何檢測網路IO會有延遲?方法有很多,比如設置較短的超時時間調用poll(),或者甚至使用非阻塞IO。如果是套接字,可以設置SO_RCVTIMEO和SO_SNDTIMEO選項,這樣更有效率。
除了延遲線程,Server還應提供了未完成線程的支持。
如有有特別耗費時間的操作,你可以在完成部分工作後停止處理,返回給Server一個未完成狀態。這樣Server會檢查工作隊列是否有別的線程,如果有則讓它們運行,否則讓該工作線程繼續處理,這可以防止某些線程挨餓。
典型的一個混合服務模型開源實現ServerKit
Serverkit的這些線程支持功能可簡化我們的服務程序設計,效率上應該也是有保證的。
2. 隊列(queue)
ServerKit提供的隊列是一個單向鏈表,隊列的存取是原子操作,如果只有一個執行單元建議不要用,因為原子操作的開銷較大。
3. 堆(heap)
malloc()分配內存有一定的局限,比如在多線程的環境里,需要序列化內存分配操作。ServerKit提供的堆管理函數,可快速分配內存,可有效減少分配內存的序列化操作,堆的大小可動態增長,堆有引用計數,這些特徵比較適合多線程環境。目前ServerKit堆的最大局限是分配單元必須是固定大小。
4. 日誌記錄
日誌被保存在隊列,有一個專門的線程處理隊列中的日誌記錄:它或者調用syslog()寫進系統日誌,或者通過UDP直接寫到遠程機器。後者更有效。
5. 讀寫鎖
GNU libc也在pthreads庫里實現了讀寫鎖,如果定義了__USE_UNIX98就可以使用。不過ServerKit還提供了讀寫鎖互相轉換的函數,這使得鎖的應用更為彈性。比如擁有讀鎖的若干個線程對同一個hash表進行檢索,其中一個線程檢索到了數據,此時需要修改它,一種辦法是獲取寫鎖,但這會導致釋放讀鎖和獲取寫鎖之間存在時間窗,另一種辦法是使用ServerKit提供的函數把讀鎖轉換成寫鎖,無疑這種方式更有效率。
除了以上這些功能,ServerKit還提供了資料庫連接池的管理(當前只支持MySQL)和序列化(Sequences),如感興趣可參見相關的API文檔。
二、ServerKit服務模塊編寫
ServerKit由3部分組成:server程序,負責載入服務模塊、解析配置文件、建立資料庫連接池;libserver,動態鏈接庫,提供所有功能的庫支持,包括server本身也是調用這個庫寫的;API,編程介面,你編寫的服務模塊和ServerKit框架進行對話的介面。
ServerKit需要libConfuse解析配置文件,所以出了安裝ServerKit,還需要安裝libConfuse。關於libConfuse可參考 http://www.nongnu.org/confuse/ 。
下面我們看一個簡單的服務模塊FOO:
#include <confuse.h>
#include <server.h>
static long int sleep_ration;
static int FOO_construct()
{
fprintf(stderr, "FOO_construct\n");
return 1;
}
static int FOO_prestart(cfg_t *configuration)
{
fprintf(stderr, "FOO_prestart\n");
return 1;
}
static void * FOO_operator(void *foobar)
{
fprintf(stderr, "FOO_operator\n");
for(;;) sleep(sleep_ration);
return NULL;
}
static void FOO_report(void)
{
fprintf(stderr, "FOO_report\n");
}
static cfg_opt_t FOO_config[] = {
CFG_SIMPLE_INT("sleep_ration", &sleep_ration),
CFG_END()
};
static char *FOO_authors[] = {"Vito Caputo <[email protected]>", NULL};
SERVER_MODULE(FOO,0,0,1,"Example mole that does nothing but sleep")按以下方法編譯:
$ gcc -c -fPIC -pthread -D_REENTRANT -g FOO.c
$ gcc -shared -lserver -lconfuse -lpthread -g -e __server_mole_main -o FOO.so FOO.o
-e選項指定程序運行入口,這使得你可以直接在命令行敲 ./FOO.so 運行模塊。
server程序根據環境變數SERVER_PERSONALITY_PATH定位主目錄,並查找主目錄下的c11n作為配置文件,動態載入的模塊需放在主目錄下的moles目錄。
$ export SERVER_PERSONALITY_PATH=`pwd`
$ mkdir moles
$ cp FOO.so moles
$ vi c11n
c11n的內容:
identity = "any_id"
FOO {
sleep_ration = 1;
}
identity標識server實例,用ps可看到程序名稱形如server.identity,本例為server.any_id。
執行server啟動服務程序。
三、ServerKit其他功能缺陷
缺乏daemon模式;
只能運行在Linux box;
DB pool只支持MySQL;
Heap管理內存的功力有限
5、並發數與伺服器配置的關系,能舉個例子說明一下嗎?
做網站的話,伺服器要分前端和後端的,還有cache、負載平衡、網路帶寬和存儲系統等問題要考慮,不是單講一台伺服器就能說清楚的。
只討論一台伺服器的話,3650雙路加4G內存支持到5萬並發是容易達到的,即使針對業務流比較復雜的情況,也能滿足很大程度的需要。
但是考慮到存儲子系統,比如4塊sas硬碟raid0,可能只能達到5000數量級的並發請求。如果是以另外的光纖盤陣來支持存儲則可以顯著提高硬碟傳輸帶寬的性能。
最後還要考慮到你的網路帶寬,對大多數網站來說,通常這才是最大的瓶頸所在。也就是說即使你的cpu、內存、硬碟都沒問題,也會因為租用的網路帶寬限制而影響最大的並發數。
還有一點,經過優化的網站程序對結果也有很大影響。事實上很多網站的訪問體驗很糟糕,其實不是因為硬體的原因,而是程序寫的太爛。
很抱歉我本想以單台伺服器來講,但是說著說著又變成講網站架構了。不如舉個例子吧,如果你在這台伺服器上運行discuz或動網之類的服務,在沒有特別高峰的情況下,5萬並發是沒有問題的。
6、什麼是並發通信伺服器
不同於順序伺服器, 並發伺服器 就要能在一個時間為多個客戶端提供服務。 例如,一個 聊天伺服器 可能服務一個特定的客戶端數小時 不同於順序伺服器, 並發伺服器 就要能在一個時間為多個客戶端提供服務。 例如,一個 聊天伺服器 可能服務一個特定的客戶端數小時 ──在停止為這個客戶端服務之前伺服器不能等待, 除非是在等待一下個客戶端到來之前的間隙才能等待。── 在停止為這個客戶端服務之前伺服器不能等待, 除非是在等待一下個客戶端到來之前的間隙才能等待。 http:/ /cnsnap.cn.freebsd.org/doc/zh_ CN.GB2312/books/developers- handbook/sockets-concurrent- servers.html
7、1000用戶並發的網站伺服器大概需要什麼樣的配置
並發數 不能作為配置參考
關鍵是你網站 和數據的性質啊
說個例子你就明白了
如果是視頻站 並發1000 那可實實在在同時的高流量並發
必須高帶寬 高配置應對
可如果是文字小說站呢 那就算並發也沒那麼大影響
你也知道你普通的並發 和那8000的區別了
所以關鍵不是數字 而是性質 決定配置
8、什麼是伺服器並發量?並發量如何計算
並發的意思是指網站在同一時間訪問的人數,人數越大,瞬間帶寬要求更高。伺服器並發量分為:1.業務並發用戶數;2.最大並發訪問數;3.系統用戶數;4.同時在線用戶數;
說明伺服器實際壓力,能承受的最大並發訪問數,既取決於業務並發用戶數,還取決於用戶的業務場景,這些可以通過對伺服器日誌的分析得到。
一般只需要分析出典型業務(用戶常用,最關注的業務操作)
給出一個估算業務並發用戶數的公式(測試人員一般只關心業務並發用戶數)
C=nL/T
C^=C+3×(C的平方根)
C是平均的業務並發用戶數、n是login session的數量、L是login session的平均長度、T是指考察的時間段長度、C^是指業務並發用戶數的峰值。
假設OA系統有1000用戶,每天400個用戶發訪問,每個登錄到退出平均時間2小時,在1天時間內用戶只在8小時內使用該系統。
C=400×2/8=100
C^=100+3×(100的平方根)=100+3×10=130
另外,如果知道平均每個用戶發出的請求數u,則系統吞吐量可以估算為u×C
精確估算,還要考慮用戶業務操作存在一定的時間集中性(比如上班後1小時內是OA系統高峰期),採用公式計算仍然會存在偏差。
285-104-1346
9、什麼是多線程並發伺服器
有多個 CPU 可用。單核機器上多線程的優勢不明顯。
線程間有共享數據。如果沒有共享數據,用模型 3b 就行。雖然我們應該把線程間的共享數據降到最低,但不代表沒有;
共享的數據是可以修改的,而不是靜態的常量表。如果數據不能修改,那麼可以在進程間用 shared memory,模式 3 就能勝任;
提供非均質的服務。即,事件的響應有優先順序差異,我們可以用專門的線程來處理優先順序高的事件。防止優先順序反轉;
latency 和 throughput 同樣重要,不是邏輯簡單的 IO bound 或 CPU bound 程序;
利用非同步操作。比如 logging。無論往磁碟寫 log file,還是往 log server 發送消息都不應該阻塞 critical path;
能 scale up。一個好的多線程程序應該能享受增加 CPU 數目帶來的好處,目前主流是 8 核,很快就會用到 16 核的機器了。
具有可預測的性能。隨著負載增加,性能緩慢下降,超過某個臨界點之後急速下降。線程數目一般不隨負載變化。
多線程能有效地劃分責任與功能,讓每個線程的邏輯比較簡單,任務單一,便於編碼。而不是把所有邏輯都塞到一個 event loop 里,就像 Win32 SDK 程序那樣。