這篇文章將為大家詳細(xì)講解有關(guān)Java大型中間件系統(tǒng)中須調(diào)整的Linux內(nèi)核參數(shù)有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
在隆昌等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都全網(wǎng)營(yíng)銷,外貿(mào)網(wǎng)站制作,隆昌網(wǎng)站建設(shè)費(fèi)用合理。
作為Java開發(fā)者,必可避免的需要開發(fā)或使用一些中間件,對(duì)于Java開發(fā)的中間件,除了JVM參數(shù)必須調(diào)整外,
Linux的一些內(nèi)核參數(shù)也必須要調(diào)整。 |
無(wú)非都是跟磁盤文件IO、網(wǎng)絡(luò)通信、內(nèi)存管理、線程數(shù)量有關(guān)系的,因?yàn)槲覀兊闹虚g件系統(tǒng)在運(yùn)行的時(shí)候無(wú)非就是跟這些打交道。
vm.overcommit_memory
這個(gè)參數(shù)有三個(gè)值可以選擇,0、1、2。
如果值是0的話,在你的中間件系統(tǒng)申請(qǐng)內(nèi)存的時(shí)候,操作系統(tǒng)內(nèi)核會(huì)檢查可用內(nèi)存是否足夠,如果足夠的話就分配內(nèi)存給你,如果感覺(jué)剩余內(nèi)存不是太夠了,干脆就拒絕你的申請(qǐng),導(dǎo)致你申請(qǐng)內(nèi)存失敗,進(jìn)而導(dǎo)致中間件系統(tǒng)異常出錯(cuò)。因此一般需要將這個(gè)參數(shù)的值調(diào)整為1,意思是把所有可用的物理內(nèi)存都允許分配給你,只要有內(nèi)存就給你來(lái)用,這樣可以避免申請(qǐng)內(nèi)存失敗的問(wèn)題。
比如我們?cè)?jīng)線上環(huán)境部署的redis就因?yàn)檫@個(gè)參數(shù)是0,導(dǎo)致在save數(shù)據(jù)快照到磁盤文件的時(shí)候,需要申請(qǐng)大內(nèi)存的時(shí)候被拒絕了,進(jìn)而導(dǎo)致了異常報(bào)錯(cuò)。
可以用如下 命令修改:
echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf
vm.max_map_count
這個(gè)參數(shù)的值會(huì)影響中間件系統(tǒng)可以開啟的線程的數(shù)量,同樣也是非常重要的。
如果這個(gè)參數(shù)過(guò)小,有的時(shí)候可能會(huì)導(dǎo)致有些中間件無(wú)法開啟足夠的線程,進(jìn)而導(dǎo)致報(bào)錯(cuò),甚至中間件系統(tǒng)掛掉。
他的默認(rèn)值是65536,但是這個(gè)值有時(shí)候是不夠的,比如我們大數(shù)據(jù)團(tuán)隊(duì)的生產(chǎn)環(huán)境部署的Kafka集群曾經(jīng)有一次就報(bào)出過(guò)這個(gè)異常,說(shuō)無(wú)法開啟足夠多的線程,直接導(dǎo)致Kafka宕機(jī)了。
可以用如下 命令修改:
echo 'vm.max_map_count=655360' >> /etc/sysctl.conf
vm.swappiness
這個(gè)參數(shù)是用來(lái)控制進(jìn)程的swap行為的,這個(gè)簡(jiǎn)單來(lái)說(shuō)就是操作系統(tǒng)會(huì)把一部分磁盤空間作為swap區(qū)域,然后如果有的進(jìn)程現(xiàn)在可能不是太活躍,就會(huì)被操作系統(tǒng)把進(jìn)程調(diào)整為睡眠狀態(tài),把進(jìn)程中的數(shù)據(jù)放入磁盤上的swap區(qū)域,然后讓這個(gè)進(jìn)程把原來(lái)占用的內(nèi)存空間騰出來(lái),交給其他活躍運(yùn)行的進(jìn)程來(lái)使用。
如果這個(gè)參數(shù)的值設(shè)置為0,意思就是盡量別把任何一個(gè)進(jìn)程放到磁盤swap區(qū)域去,盡量大家都用物理內(nèi)存。
如果這個(gè)參數(shù)的值是100,那么意思就是盡量把一些進(jìn)程給放到磁盤swap區(qū)域去,內(nèi)存騰出來(lái)給活躍的進(jìn)程使用。
默認(rèn)這個(gè)參數(shù)的值是60,有點(diǎn)偏高了,可能會(huì)導(dǎo)致我們的中間件運(yùn)行不活躍的時(shí)候被迫騰出內(nèi)存空間然后放磁盤swap區(qū)域去。因此通常在生產(chǎn)環(huán)境建議把這個(gè)參數(shù)調(diào)整小一些,比如設(shè)置為10,盡量用物理內(nèi)存,別放磁盤swap區(qū)域去。
可以用如下命令修改:
echo 'vm.swappiness=10' >> /etc/sysctl.conf
ulimit
這個(gè)是用來(lái)控制linux上的最大文件連接數(shù)的,默認(rèn)值可能是1024,一般肯定是不夠的,因?yàn)槟阍诖罅款l繁的讀寫磁盤文件的時(shí)候,或者是進(jìn)行網(wǎng)絡(luò)通信的時(shí)候,都會(huì)跟這個(gè)參數(shù)有關(guān)系
對(duì)于一個(gè)中間件系統(tǒng)而言肯定是不能使用默認(rèn)值得,如果你采用默認(rèn)值,很可能在線上會(huì)出現(xiàn)如下錯(cuò)誤:
error: too many open files
因此通常建議用如下命令修改這個(gè)值:
echo 'ulimit -n 1000000' >> /etc/profile
一點(diǎn)小小的總結(jié)
中間件系統(tǒng)肯定要開啟大量的線程(跟vm.max_map_count有關(guān))。
而且要進(jìn)行大量的網(wǎng)絡(luò)通信和磁盤IO(跟ulimit有關(guān))。
然后大量的使用內(nèi)存(跟vm.swappiness和vm.overcommit_memory有關(guān))。
所以對(duì)OS內(nèi)核參數(shù)的調(diào)整,往往也就是圍繞跟中間件系統(tǒng)運(yùn)行最相關(guān)的一些東西。
關(guān)于Java大型中間件系統(tǒng)中須調(diào)整的Linux內(nèi)核參數(shù)有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
當(dāng)前標(biāo)題:Java大型中間件系統(tǒng)中須調(diào)整的Linux內(nèi)核參數(shù)有哪些
標(biāo)題路徑:http://aaarwkj.com/article8/goojop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、微信小程序、網(wǎng)站營(yíng)銷、網(wǎng)站制作、網(wǎng)站收錄、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
營(yíng)銷型網(wǎng)站建設(shè)知識(shí)