新聞中心
:解析系統(tǒng)瓶頸及優(yōu)化方法

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比防城港網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式防城港網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋防城港地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
最近在一個(gè)小型企業(yè)的生產(chǎn)環(huán)境中,Linux操作系統(tǒng)拒絕了42023個(gè)網(wǎng)絡(luò)請(qǐng)求,導(dǎo)致了一些嚴(yán)重的生產(chǎn)故障。對(duì)于這種情況,我們必須對(duì)其造成的原因進(jìn)行梳理,找到系統(tǒng)瓶頸并針對(duì)性地解決問(wèn)題。
一、拒絕請(qǐng)求的原因
1.系統(tǒng)文件句柄數(shù)達(dá)到上限
操作系統(tǒng)默認(rèn)的文件句柄數(shù)有限,當(dāng)系統(tǒng)同時(shí)處理的請(qǐng)求數(shù)量較大時(shí),它們會(huì)消耗系統(tǒng)的資源,使得系統(tǒng)的可用文件句柄數(shù)逐漸減少。當(dāng)文件句柄數(shù)達(dá)到系統(tǒng)設(shè)定的上限時(shí),操作系統(tǒng)就無(wú)法再承載新的請(qǐng)求,從而拒絕請(qǐng)求。
2.進(jìn)程數(shù)過(guò)多
操作系統(tǒng)中的進(jìn)程數(shù)也是有限的,當(dāng)運(yùn)行中的進(jìn)程數(shù)超過(guò)系統(tǒng)限制時(shí),新的進(jìn)程將無(wú)法創(chuàng)建,從而無(wú)法處理更多的請(qǐng)求。
3.內(nèi)存限制太低
如果操作系統(tǒng)的內(nèi)存限制過(guò)低,那么當(dāng)程序需要更多的內(nèi)存時(shí),操作系統(tǒng)就會(huì)拒絕程序請(qǐng)求,并報(bào)告內(nèi)存不足的錯(cuò)誤。
二、優(yōu)化解決方案
1.增加系統(tǒng)文件句柄數(shù)
我們可以增加系統(tǒng)文件句柄數(shù)。在Linux操作系統(tǒng)中,可以修改ulimit文件的配置項(xiàng)來(lái)達(dá)到增加文件句柄數(shù)的目的。可參考下面的命令:
ulimit -n 65536
這條命令將系統(tǒng)的更大文件句柄數(shù)設(shè)置為65536。
2.增加進(jìn)程數(shù)
與文件句柄數(shù)一樣,系統(tǒng)的進(jìn)程數(shù)也是可以設(shè)置的??梢酝ㄟ^(guò)修改/etc/security/limits.conf文件中的相關(guān)配置項(xiàng)或者使用命令“ulimit -u”來(lái)設(shè)置系統(tǒng)允許的進(jìn)程數(shù)。建議將進(jìn)程數(shù)提高到至少數(shù)千個(gè),以便支持高并發(fā)的請(qǐng)求處理。
3.增加內(nèi)存限制
如果出現(xiàn)內(nèi)存不足的錯(cuò)誤,可以將系統(tǒng)內(nèi)存限制進(jìn)行調(diào)整??梢允褂妹睢皍limit -m”來(lái)設(shè)置系統(tǒng)內(nèi)存限制。如果需要支持更多的內(nèi)存,可以考慮使用更大的物理內(nèi)存或虛擬內(nèi)存,以滿足應(yīng)用程序的內(nèi)存需求。
4.使用多線程處理請(qǐng)求
對(duì)于大量請(qǐng)求的處理,可以使用多線程的方式來(lái)處理。在多線程的架構(gòu)中,每個(gè)請(qǐng)求都會(huì)被處理為一個(gè)單獨(dú)的線程。在處理大量請(qǐng)求時(shí),多線程可以顯著提高系統(tǒng)的處理能力和響應(yīng)速度,從而避免拒絕請(qǐng)求的情況。
5.使用緩存技術(shù)
對(duì)于大量重復(fù)的請(qǐng)求,可以使用緩存技術(shù)來(lái)減少系統(tǒng)的請(qǐng)求量。緩存可以存儲(chǔ)已處理過(guò)的結(jié)果,并在下一次請(qǐng)求時(shí)直接返回運(yùn)算結(jié)果,避免了重復(fù)的處理過(guò)程。這種方式可以顯著減少系統(tǒng)的請(qǐng)求量,從而避免了操作系統(tǒng)資源的過(guò)度消耗。
在處理高并發(fā)請(qǐng)求時(shí),操作系統(tǒng)的限制是必須要考慮的。以上提到的優(yōu)化解決方案可以在一定程度上提升操作系統(tǒng)的處理能力和響應(yīng)速度,并避免出現(xiàn)拒絕請(qǐng)求的情況。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220linux下mysql的drop table命令不能把表和相關(guān)存儲(chǔ)信息都刪除干凈,怎么弄
于在linux下的操作。
使用OPTIMIZE TABLE語(yǔ)句可以。
OPTIMIZE TABLE語(yǔ)法
OPTIMIZE TABLE tbl_name …
如果您已經(jīng)刪除了表的一大部分,或者如果您已經(jīng)對(duì)含有可變長(zhǎng)度行的表(含有VARCHAR, BLOB或TEXT列的表)進(jìn)行了很多更改,則應(yīng)使用OPTIMIZE TABLE。被刪除的記錄被保持在鏈接清單中,后續(xù)的INSERT操作會(huì)重新使用舊的記錄位置。您可以使用OPTIMIZE TABLE來(lái)核春重新利用未使用的空間,并整理數(shù)據(jù)文件的碎片。
在多數(shù)的設(shè)置中,改團(tuán)耐您根本不需要運(yùn)行OPTIMIZE TABLE。即使您對(duì)可變長(zhǎng)度的行進(jìn)行了大量的更新,您也不需要經(jīng)常運(yùn)行,每周一次或每月一次即可,只對(duì)特定的表運(yùn)行。
OPTIMIZE TABLE只對(duì)MyISAM, BDB和InnoDB表起作用。
對(duì)于MyISAM表,OPTIMIZE TABLE按如下方式操作:
1. 如果表已經(jīng)刪除或分解了行,則修復(fù)表。
2. 如果未對(duì)索引頁(yè)進(jìn)行分類,則進(jìn)行分類。
3. 如果表的統(tǒng)計(jì)數(shù)據(jù)沒(méi)有更新(并且通過(guò)對(duì)索引進(jìn)行分類不能實(shí)現(xiàn)修復(fù)),則進(jìn)行更新。
對(duì)于BDB表,OPTIMIZE TABLE目前被映射到ANAZE TABLE上。對(duì)于InnoDB表,OPTIMIZE TABLE被映射到ALTER TABLE上,這會(huì)重建表。重建操作能更新索引統(tǒng)計(jì)數(shù)據(jù)并釋放成簇索引中的未使用的空間。
要重新使用未使用的空間并減小或碰文件的尺寸,則使用OPTIMIZE TABLE語(yǔ)句或myisamchk應(yīng)用程序重新編排表。OPTIMIZE TABLE更簡(jiǎn)便,但是myisamchk速度更快。
數(shù)據(jù)告銀庫(kù)中的內(nèi)容被刪除之后,空間并不會(huì)得到回收,也就是說(shuō)原來(lái)占用的空間還是會(huì)被數(shù)據(jù)庫(kù)占用,要向回收胡友漏這些空間需要進(jìn)行數(shù)據(jù)庫(kù)的收縮。但是褲爛mysql好像還不支持?jǐn)?shù)據(jù)庫(kù)或者文件級(jí)別的收縮。
如何控制Linux清理cache機(jī)制
Linux下的緩存機(jī)制及清理buffer/cache/swap的方法梳理
(1)緩存機(jī)制
為了提高文件系統(tǒng)性能,內(nèi)核利用一部分物理內(nèi)存分配出緩沖區(qū),用于緩存系統(tǒng)操作和數(shù)據(jù)文件,當(dāng)內(nèi)核收到讀寫的請(qǐng)求時(shí),內(nèi)核先去緩存區(qū)找是否有請(qǐng)求的數(shù)據(jù),有就直接返回,如果沒(méi)有則通過(guò)驅(qū)動(dòng)程序直接遲槐操作磁盤。
緩存機(jī)制優(yōu)點(diǎn):減少系統(tǒng)調(diào)用次數(shù),降低CPU上下文切換和磁盤訪問(wèn)頻率。
CPU上下文切換:CPU給每個(gè)進(jìn)程一定的服務(wù)時(shí)間,當(dāng)時(shí)間片用完后,內(nèi)核從正物缺在運(yùn)行的進(jìn)程中收回處理器,同時(shí)把進(jìn)程當(dāng)前運(yùn)行狀態(tài)保存下來(lái),然后加載下一個(gè)任務(wù),這個(gè)過(guò)程叫做上下文切換。實(shí)質(zhì)上就是被終止運(yùn)行進(jìn)程與待運(yùn)行進(jìn)程的進(jìn)程切換。
(2)查看緩存區(qū)及內(nèi)存使用情況
# free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:0
可以看到內(nèi)存總共8G,已使用7725M,剩余141M,不少的碼螞友人都是這么看的,這樣并不能作為實(shí)際的使用率。因?yàn)橛辛司彺鏅C(jī)制,具體該怎么算呢?
空閑內(nèi)存=free(141)+buffers(74)+cached(6897)
已用內(nèi)存=total(7866)-空閑內(nèi)存
由此算出空閑內(nèi)存是7112M,已用內(nèi)存754M,這才是真正的使用率,也可參考-/+ buffers/cache這行信息也是內(nèi)存正確使用率。
(3)可見(jiàn)緩存區(qū)分為buffers和cached,他們有什么區(qū)別呢?
內(nèi)核在保證系統(tǒng)能正常使用物理內(nèi)存和數(shù)據(jù)量讀寫情況下來(lái)分配緩沖區(qū)大小。buffers用來(lái)緩存metadata及pages,可以理解為系統(tǒng)緩存,例如,vi打開(kāi)一個(gè)文件。cached是用來(lái)給文件做緩存,可以理解為數(shù)據(jù)塊緩存,例如,dd if=/dev/zero of=/tmp/test count=1 bs=1G 測(cè)試寫入一個(gè)文件,就會(huì)被緩存到緩沖區(qū)中,當(dāng)下一次再執(zhí)行這個(gè)測(cè)試命令時(shí),寫入速度會(huì)明顯很快。
(4)隨便說(shuō)下Swap做什么用的呢?
Swap意思是交換分區(qū),通常我們說(shuō)的虛擬內(nèi)存,是從硬盤中劃分出的一個(gè)分區(qū)。當(dāng)物理內(nèi)存不夠用的時(shí)候,內(nèi)核就會(huì)釋放緩存區(qū)(buffers/cache)里一些長(zhǎng)時(shí)間不用的程序,然后將這些程序臨時(shí)放到Swap中,也就是說(shuō)如果物理內(nèi)存和緩存區(qū)內(nèi)存不夠用的時(shí)候,才會(huì)用到Swap。
swap清理:
swapoff -a && swapon -a
注意:這樣清理有個(gè)前提條件,空閑的內(nèi)存必須比已經(jīng)使用的swap空間大
(5)怎樣釋放緩存區(qū)內(nèi)存呢?
a)直接改變內(nèi)核運(yùn)行參數(shù)
#釋放pagecache
echo 1 >/proc/sys/vm/drop_caches
#釋放dentries和inodes
echo 2 >/proc/sys/vm/drop_caches
#釋放pagecache、dentries和inodes
echo 3 >/proc/sys/vm/drop_caches
b)也可以使用sysctl重置內(nèi)核運(yùn)行參數(shù)
sysctl -w vm.drop_caches=3
注意:這兩個(gè)方式都是臨時(shí)生效,永久生效需添加sysctl.conf文件中,一般寫成腳本手動(dòng)清理,建議不要清理。
修改/etc/sysctl.conf 添加如下選項(xiàng)后就不會(huì)內(nèi)存持續(xù)增加
vm.dirty_ratio = 1
vm.dirty_background_ratio=1
vm.dirty_writeback_centisecs=2
vm.dirty_expire_centisecs=3
vm.drop_caches=3
vm.swappiness =100
vm.vfs_cache_pressure=163
vm.overcommit_memory=2
vm.lowmem_reserve_ratio=
kern.maxvnodes=3
如何為linux釋放內(nèi)存和緩存
Linux釋放內(nèi)哪讓存的命令: sync echo 1 > /proc/sys/vm/drop_caches drop_caches的值可以是0-3之間的數(shù)字譽(yù)緩慶,代表不同的含義: 0:不釋放(系統(tǒng)默認(rèn)值) 1:釋放頁(yè)緩存 2:釋放慶握dentries和inodes
linux drop 42023的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux drop 42023,Linux拒絕了42023個(gè)請(qǐng)求,linux下mysql的drop table命令不能把表和相關(guān)存儲(chǔ)信息都刪除干凈,怎么弄,如何控制Linux清理cache機(jī)制,如何為linux釋放內(nèi)存和緩存的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技公司主營(yíng):網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、微信開(kāi)發(fā)、成都小程序開(kāi)發(fā)、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)等業(yè)務(wù),是專業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫冊(cè)、網(wǎng)頁(yè)、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開(kāi)發(fā)于一體。
新聞標(biāo)題:Linux拒絕了42023個(gè)請(qǐng)求(linuxdrop42023)
標(biāo)題鏈接:http://fisionsoft.com.cn/article/cdsjchc.html


咨詢
建站咨詢
