本文小編為大家詳細(xì)介紹“l(fā)inux高并發(fā)的概念是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“l(fā)inux高并發(fā)的概念是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
我們提供的服務(wù)有:網(wǎng)站制作、成都網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、汪清ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的汪清網(wǎng)站制作公司
在linux中,高并發(fā)是系統(tǒng)運(yùn)行過(guò)程中遇到的一種“短時(shí)間內(nèi)遇到大量操作請(qǐng)求”的情況,主要發(fā)生在web系統(tǒng)集中大量訪問(wèn)收到大量請(qǐng)求;該情況的發(fā)生會(huì)導(dǎo)致系統(tǒng)在這段時(shí)間內(nèi)執(zhí)行大量操作,例如對(duì)資源的請(qǐng)求,數(shù)據(jù)庫(kù)的操作等。
高并發(fā)(High Concurrency)是互聯(lián)網(wǎng)分布式系統(tǒng)架構(gòu)設(shè)計(jì)中必須考慮的因素之一,它通常是指,通過(guò)設(shè)計(jì)保證系統(tǒng)能夠同時(shí)并行處理很多請(qǐng)求。
高并發(fā)(High Concurrency)是一種系統(tǒng)運(yùn)行過(guò)程中遇到的一種“短時(shí)間內(nèi)遇到大量操作請(qǐng)求”的情況,主要發(fā)生在web系統(tǒng)集中大量訪問(wèn)收到大量請(qǐng)求(例如:12306的搶票情況;天貓雙十一活動(dòng))。該情況的發(fā)生會(huì)導(dǎo)致系統(tǒng)在這段時(shí)間內(nèi)執(zhí)行大量操作,例如對(duì)資源的請(qǐng)求,數(shù)據(jù)庫(kù)的操作等。
響應(yīng)時(shí)間(Response Time)
系統(tǒng)對(duì)請(qǐng)求做出響應(yīng)的時(shí)間。例如系統(tǒng)處理一個(gè)HTTP請(qǐng)求需要200ms,這個(gè)200ms就是系統(tǒng)的響應(yīng)時(shí)間
吞吐量(Throughput)
單位時(shí)間內(nèi)處理的請(qǐng)求數(shù)量
每秒查詢(xún)率QPS(Query Per Second)
每秒響應(yīng)請(qǐng)求數(shù)。在互聯(lián)網(wǎng)領(lǐng)域,這個(gè)指標(biāo)和吞吐量區(qū)分的沒(méi)有這么明顯
并發(fā)用戶數(shù)(User Concurrence)
同時(shí)承載正常使用系統(tǒng)功能的用戶數(shù)量。例如一個(gè)即時(shí)通訊系統(tǒng),同時(shí)在線量一定程度上代表了系統(tǒng)的并發(fā)用戶數(shù)
單進(jìn)程最大打開(kāi)文件數(shù)限制
內(nèi)核TCP參數(shù)方面
IO事件分配機(jī)制
提升單機(jī)處理能力
增強(qiáng)單機(jī)硬件性能,例如:增加CPU核數(shù)如32核,升級(jí)更好的網(wǎng)卡如萬(wàn)兆,升級(jí)更好的硬盤(pán)如SSD,擴(kuò)充硬盤(pán)容量如2T,擴(kuò)充系統(tǒng)內(nèi)存如128G
提升單機(jī)架構(gòu)性能,例如:使用Cache來(lái)減少I(mǎi)O次數(shù),使用異步來(lái)增加單服務(wù)吞吐量,使用無(wú)鎖數(shù)據(jù)結(jié)構(gòu)來(lái)減少響應(yīng)時(shí)間
增加服務(wù)器數(shù)量,就能線性擴(kuò)充系統(tǒng)性能
(1)客戶端層:典型調(diào)用方是瀏覽器browser或者手機(jī)應(yīng)用APP
(2)反向代理層:系統(tǒng)入口,反向代理
(3)站點(diǎn)應(yīng)用層:實(shí)現(xiàn)核心應(yīng)用邏輯,返回html或者json
(4)服務(wù)層:如果實(shí)現(xiàn)了服務(wù)化,就有這一層
(5)數(shù)據(jù)-緩存層:緩存加速訪問(wèn)存儲(chǔ)
(6)數(shù)據(jù)-數(shù)據(jù)庫(kù)層:數(shù)據(jù)庫(kù)固化數(shù)據(jù)存儲(chǔ)
反向代理層的水平擴(kuò)展
當(dāng)nginx成為瓶頸的時(shí)候,只要增加服務(wù)器數(shù)量,新增nginx服務(wù)的部署,增加一個(gè)外網(wǎng)ip,就能擴(kuò)展反向代理層的性能,做到理論上的無(wú)限高并發(fā)
通過(guò)“DNS輪詢(xún)”實(shí)現(xiàn)的:dns-server對(duì)于一個(gè)域名配置了多個(gè)解析ip,每次DNS解析請(qǐng)求來(lái)訪問(wèn)dns-server,會(huì)輪詢(xún)返回這些ip
站點(diǎn)層的水平擴(kuò)展
通過(guò)“nginx”實(shí)現(xiàn)的。通過(guò)修改nginx.conf,可以設(shè)置多個(gè)web后端
當(dāng)web后端成為瓶頸的時(shí)候,只要增加服務(wù)器數(shù)量,新增web服務(wù)的部署,在nginx配置中配置上新的web后端,就能擴(kuò)展站點(diǎn)層的性能,做到理論上的無(wú)限高并發(fā)
服務(wù)層的水平擴(kuò)展
通過(guò)“服務(wù)連接池”實(shí)現(xiàn)的
站點(diǎn)層通過(guò)RPC-client調(diào)用下游的服務(wù)層RPC-server時(shí),RPC-client中的連接池會(huì)建立與下游服務(wù)多個(gè)連接,當(dāng)服務(wù)成為瓶頸的時(shí)候,只要增加服務(wù)器數(shù)量,新增服務(wù)部署,在RPC-client處建立新的下游服務(wù)連接,就能擴(kuò)展服務(wù)層性能,做到理論上的無(wú)限高并發(fā)
數(shù)據(jù)層的水平擴(kuò)展
user0庫(kù),存儲(chǔ)偶數(shù)uid數(shù)據(jù)
user1庫(kù),存儲(chǔ)奇數(shù)uid數(shù)據(jù)
user0庫(kù),存儲(chǔ)uid范圍1-1kw
user1庫(kù),存儲(chǔ)uid范圍1kw-2kw
數(shù)據(jù)層(緩存,數(shù)據(jù)庫(kù))涉及數(shù)據(jù)的水平擴(kuò)展,將原本存儲(chǔ)在一臺(tái)服務(wù)器上的數(shù)據(jù)(緩存,數(shù)據(jù)庫(kù))水平拆分到不同服務(wù)器上去,以達(dá)到擴(kuò)充系統(tǒng)性能的目的。
存儲(chǔ)一定范圍的數(shù)據(jù)
按照哈希水平拆分
關(guān)閉iptables防火墻,阻止kernel加載iptables模塊
單進(jìn)程最大打開(kāi)文件數(shù)限制(默認(rèn)單個(gè)進(jìn)程最大打開(kāi)1024個(gè)文件)
ulimit –n 65535
修改Linux系統(tǒng)對(duì)用戶的打開(kāi)文件數(shù)的軟限制和硬限制
vim /etc/security/limits.conf
* soft nofile 65535 #'*'表示修改所有用戶的限制
* hard nofile 65535
#用戶完成系統(tǒng)登錄后讀取/etc/security/limits.conf文件
vim /etc/pam.d/login
sessionrequired /lib/security/pam_limits.so
TIME_WAIT狀態(tài)
TCP連接斷開(kāi)后,會(huì)以TIME_WAIT狀態(tài)保留一定的時(shí)間,然后才會(huì)釋放端口。當(dāng)并發(fā)請(qǐng)求過(guò)多的時(shí)候,就會(huì)產(chǎn)生大量的TIME_WAIT狀態(tài)的連接,無(wú)法及時(shí)斷開(kāi)的話,會(huì)占用大量的端口資源和服務(wù)器資源
#查看TIME_WAIT狀態(tài)連接
netstat -n | grep tcp | grep TIME_WAIT |wc -l
# vim /etc/sysctl.conf
net.ipv4.tcp_syncookies= 1 #表示開(kāi)啟SYNCookies。當(dāng)出現(xiàn)SYN等待隊(duì)列溢出時(shí),啟用cookies來(lái)處理,可防范少量SYN攻擊,默認(rèn)為0,表示關(guān)閉;
net.ipv4.tcp_tw_reuse= 1 #表示開(kāi)啟重用。允許將TIME-WAITsockets重新用于新的TCP連接,默認(rèn)為0,表示關(guān)閉;
net.ipv4.tcp_tw_recycle= 1 #表示開(kāi)啟TCP連接中TIME-WAITsockets的快速回收,默認(rèn)為0,表示關(guān)閉;
net.ipv4.tcp_fin_timeout= 30 #修改系統(tǒng)默認(rèn)的TIMEOUT 時(shí)間。
讀到這里,這篇“l(fā)inux高并發(fā)的概念是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。