![linux運(yùn)維面試題題庫(kù)_第1頁(yè)](http://file4.renrendoc.com/view6/M01/39/09/wKhkGWeq6CGAFTYNAAJobiD23AA221.jpg)
![linux運(yùn)維面試題題庫(kù)_第2頁(yè)](http://file4.renrendoc.com/view6/M01/39/09/wKhkGWeq6CGAFTYNAAJobiD23AA2212.jpg)
![linux運(yùn)維面試題題庫(kù)_第3頁(yè)](http://file4.renrendoc.com/view6/M01/39/09/wKhkGWeq6CGAFTYNAAJobiD23AA2213.jpg)
![linux運(yùn)維面試題題庫(kù)_第4頁(yè)](http://file4.renrendoc.com/view6/M01/39/09/wKhkGWeq6CGAFTYNAAJobiD23AA2214.jpg)
![linux運(yùn)維面試題題庫(kù)_第5頁(yè)](http://file4.renrendoc.com/view6/M01/39/09/wKhkGWeq6CGAFTYNAAJobiD23AA2215.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Linux運(yùn)維面試題
1.linux系統(tǒng):
(D如果向磁盤寫入數(shù)據(jù)提示錯(cuò)誤:nospaceleft,通過(guò)dff查看磁盤空間,發(fā)現(xiàn)沒(méi)滿?
請(qǐng)解答原因和發(fā)生的場(chǎng)景
因?yàn)閕node滿了,系統(tǒng)郵件臨時(shí)隊(duì)列很容易被大量小文件占滿。
(2)osi模型的概念和七層模型
Osi:開(kāi)放式參考互聯(lián)模型
Osi七層模型:應(yīng)用層、表示層、會(huì)話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層。
應(yīng)用層:提供應(yīng)用程序和接口。
表示層:對(duì)數(shù)據(jù)進(jìn)行裝換,加密和壓縮。
會(huì)話層:建立、管理和終止會(huì)話。
傳輸層:報(bào)文傳輸和差錯(cuò)控制。
網(wǎng)絡(luò)層:將分組從源端傳送到目的端,提供網(wǎng)絡(luò)互聯(lián)。
數(shù)據(jù)鏈路層:將數(shù)字分組封裝成幀,提供節(jié)點(diǎn)到節(jié)點(diǎn)的傳輸。
物理層:在媒體上傳輸比特。
(3)tcp和udp的區(qū)別
Tcp:面向連接,可靠傳輸,流控,使用場(chǎng)景:web瀏覽器、電子郵件、文件傳輸程序。
Udp:無(wú)連接,不可靠傳輸,盡力傳輸,使用場(chǎng)景:dns、視頻流、ip語(yǔ)音。
(4)tcp三次握手過(guò)程
a.主機(jī)A發(fā)送建立tcp連接的請(qǐng)求報(bào)文,報(bào)文包含seq序列號(hào),是在發(fā)送端隨機(jī)生成的,并
且將報(bào)文中SYN字段置為1,表示需要建立tcp連接。
b.主機(jī)B會(huì)回復(fù)主機(jī)A發(fā)送的tcp連接請(qǐng)求報(bào)文,報(bào)文包含seq序列號(hào),是在回復(fù)端隨機(jī)生
成的,并且將回復(fù)報(bào)文的SYN字段置為1,而且會(huì)產(chǎn)生ACK字段,ACK字段的值會(huì)在主機(jī)A
發(fā)送過(guò)來(lái)的seq序列號(hào)基礎(chǔ)上加1進(jìn)行回復(fù),以便A收到消息時(shí),知曉自己的tcp連接請(qǐng)求
已經(jīng)得到了驗(yàn)證。
c.主機(jī)A收到主機(jī)B發(fā)送的tcp連接驗(yàn)證請(qǐng)求后,會(huì)使自己的序列號(hào)加1,并且再次回復(fù)
ACK驗(yàn)證請(qǐng)求,在主機(jī)B發(fā)送過(guò)來(lái)的seq基礎(chǔ)上加1,進(jìn)行回復(fù)。
(5)tcp四次揮手過(guò)程
a.主機(jī)A發(fā)送斷開(kāi)TCP連接請(qǐng)求的報(bào)文,報(bào)文包含seq序列號(hào),在發(fā)送端隨機(jī)生成,并且將
報(bào)文中FIN字段置為1,表示需要斷開(kāi)tcp連接。
b.主機(jī)B會(huì)回復(fù)主機(jī)A發(fā)送的TCP斷開(kāi)請(qǐng)求報(bào)文,其中包含seq序列號(hào),是在回兔段隨機(jī)生
成的,而且會(huì)產(chǎn)生ACK字段,ACK字段的值會(huì)在主機(jī)A發(fā)送的seq序列號(hào)基礎(chǔ)上加1進(jìn)行回
復(fù),以便A收到消息時(shí)知道自己的tcp斷開(kāi)連接請(qǐng)求已經(jīng)得到了驗(yàn)證。
c.主機(jī)B在回復(fù)完主機(jī)A的tcp斷開(kāi)連接請(qǐng)求后,不會(huì)馬上進(jìn)行tcp連接的斷開(kāi),主機(jī)B會(huì)
先確保斷開(kāi)前,所有傳輸?shù)紸的數(shù)據(jù)已經(jīng)傳輸完畢,一旦確認(rèn)傳輸數(shù)據(jù)完畢就會(huì)將回復(fù)報(bào)文
的FIN字段置為1,并產(chǎn)生隨機(jī)seq序列號(hào)。
d.主機(jī)A收到主機(jī)B的tcp斷開(kāi)請(qǐng)求后,會(huì)回復(fù)主機(jī)B的斷開(kāi)請(qǐng)求,包含隨機(jī)生成的seq和
ack字段,ack字段會(huì)在主機(jī)B的tcp斷開(kāi)請(qǐng)求的seq基礎(chǔ)上加1,從而完成主機(jī)B的請(qǐng)求
的驗(yàn)證回復(fù)。
(6)tcp連接的11種狀態(tài)
(7)dns解析原理
a.用戶在客戶端瀏覽器輸入域名,系統(tǒng)會(huì)查找本地的dns緩存和hosts文
件,確定是否存在網(wǎng)站域名對(duì)應(yīng)的ip地址解析記錄。如果有把結(jié)果返回給瀏覽器,如果沒(méi)
有就會(huì)把請(qǐng)求發(fā)給localDNS。
b.系統(tǒng)在localDNS上查找是否存在網(wǎng)站域名對(duì)應(yīng)的ip地址解析記靈,如果有就把解析記
錄返回給客戶端瀏覽器,如果沒(méi)有就會(huì)把用戶的請(qǐng)求發(fā)給根服務(wù)器。
c.根服務(wù)器上沒(méi)有WWW.baidu.core網(wǎng)站域名對(duì)應(yīng)的ip地址解析記錄,但是它有.com頂級(jí)域
名服務(wù)器對(duì)應(yīng)的ip地址解析記錄,它會(huì)把.com頂級(jí)域名對(duì)應(yīng)的ip地址返回給localDNS。
d.LocalDNS向.com頂級(jí)域名服務(wù)器請(qǐng)求www.baidu.com網(wǎng)站域名對(duì)應(yīng)的ip地址解析記
錄,.com頂級(jí)域名服務(wù)器上也沒(méi)有www.baidu.com網(wǎng)站域名對(duì)應(yīng)的ip地址解析記錄,但是
它有baidu.com域名服務(wù)器對(duì)應(yīng)的ip地址,它把baidu.com域名服務(wù)器對(duì)應(yīng)的ip地址返
回給localDNSo
e.LocalDNS向baidu.com域名服務(wù)器上請(qǐng)求www.baidu.com網(wǎng)站域名對(duì)應(yīng)的ip地址解析
記錄,因?yàn)閣ww.baidu.com是baidu.com的下一級(jí)域名,所以它有www.baidu.com網(wǎng)站域名
對(duì)應(yīng)的ip地址解析記錄,baidu.com域名服務(wù)器把www.baidu.com網(wǎng)站域名對(duì)應(yīng)的ip地址
解析記錄返回給localDNSoLocalDNS把www.baidu.com網(wǎng)站域名對(duì)應(yīng)的ip地址解析記
錄返回給客戶端后在本地進(jìn)行緩存,等到用戶下次請(qǐng)求訪問(wèn)相同網(wǎng)站時(shí)直接用本地的緩存返
回給用戶,加快用戶訪問(wèn)網(wǎng)站速度。
(8)用戶訪問(wèn)網(wǎng)站速度慢或者訪問(wèn)不了如何排查
a.檢查網(wǎng)站的物理鏈路是否通暢:pingwww.baidu.com通過(guò)ping命令檢查icmp協(xié)議。
b.檢查網(wǎng)站的路由節(jié)點(diǎn):traceroute-n
c.檢查網(wǎng)站的web服務(wù)是否正常:windows下檢查telnet或者curlwww.baidu.com80,
如果不通查看服務(wù)是否開(kāi)啟,防火墻是否阻擋服務(wù)。
d.在win客戶端跟蹤路由:tracert-dwww.baidu.com
e.tcpdump抓包工具
f.檢查服務(wù)器的資源是否過(guò)載,服務(wù)器的連接數(shù),負(fù)載高,cpu高,io高。
g.服務(wù)器帶寬滿了,通過(guò)流量監(jiān)控查看。
h.通過(guò)日志查看有無(wú)異常ip訪問(wèn),封掉非正常ip,防爬蟲(chóng),設(shè)置防盜鏈。
I.檢查每個(gè)集群節(jié)點(diǎn)情況,如mysql數(shù)據(jù)庫(kù)慢查詢語(yǔ)句過(guò)多,根據(jù)慢查詢語(yǔ)句具體分析。
(9)如何加強(qiáng)linux系統(tǒng)的安全(防止中病毒)
Linux系統(tǒng)方面:
a.生產(chǎn)環(huán)境使用vpn登錄到跳板機(jī)后使用普通用戶登錄,不允許使用root登錄,在系統(tǒng)日
志中配置sudo用戶操作日志審計(jì)普通用戶操作,根據(jù)部門使用linux服務(wù)器權(quán)限的需求給
部門人員配置sudo權(quán)限管理普通用戶,也可以使用Idap身份驗(yàn)證用戶管理方案。
b.修改默認(rèn)的遠(yuǎn)程連接ssh服務(wù)端口22為其他的端口,修改ssh服務(wù)配置文件禁止root遠(yuǎn)
程連接,設(shè)置ssh服務(wù)只監(jiān)聽(tīng)內(nèi)網(wǎng)ip。
c.生產(chǎn)環(huán)境如果沒(méi)有外網(wǎng)ip的情況下關(guān)閉selinux和iptables,如昊是外網(wǎng)的環(huán)境需要打
開(kāi)iptables的情況下只允許生產(chǎn)環(huán)境服務(wù)和辦公網(wǎng)絡(luò)內(nèi)網(wǎng)和生產(chǎn)服務(wù)外網(wǎng)訪問(wèn)。
d.根據(jù)生產(chǎn)環(huán)境服務(wù)使用情況只保留生產(chǎn)環(huán)境服務(wù)開(kāi)啟自啟動(dòng),其他服務(wù)關(guān)閉。
e.鎖定系統(tǒng)關(guān)鍵文件如果/etc/inittab系統(tǒng)內(nèi)核運(yùn)行級(jí)別文件等增加權(quán)限chattr+i后重
命名移動(dòng)到/tmp目錄下
f.對(duì)重要配置文件、命令和web配置文件等文件做md5指紋驗(yàn)證及備份,每隔幾分鐘對(duì)文件
再次使用md5驗(yàn)證及備份,對(duì)比前后兩次使用md5驗(yàn)證的值有什么不同。
g.定時(shí)對(duì)系統(tǒng)打補(bǔ)丁更新系統(tǒng)。
h.購(gòu)買第三方軟件阿里云盾web防火墻,我們公司使用的是阿里云盾防火墻。
L監(jiān)控服務(wù)器文件變更,進(jìn)程變億、端口變化、重要安全日志并及時(shí)報(bào)警。
防止Ddos攻擊和cc攻擊:什么是Ddos攻擊和cc攻擊
Ddos攻擊:分布式拒絕服務(wù),擊者利用“肉雞”對(duì)目標(biāo)網(wǎng)站在較短的時(shí)間內(nèi)發(fā)起大量請(qǐng)求,
大規(guī)模消耗目標(biāo)網(wǎng)站的主機(jī)資源,讓它無(wú)法正常提供服務(wù)。主要是四層流量攻擊和七層應(yīng)用
攻擊。
Cc攻擊:是DDOS攻擊的一種,CC攻擊的原理就是攻擊者控制某些苣機(jī)不停地發(fā)大量數(shù)據(jù)
包給對(duì)方服務(wù)器造成服務(wù)器資源耗盡,一直到宕機(jī)崩潰,CPU長(zhǎng)時(shí)間處于100%,永遠(yuǎn)都有處
理不完的連接直至就網(wǎng)絡(luò)擁塞,正常的訪問(wèn)被中止。
Nginx方面:
a.設(shè)置nginx防盜鏈。
b.設(shè)置nginx惡意域名解析防止非正常用戶通過(guò)ip訪問(wèn)網(wǎng)站
c.限制http請(qǐng)求方法,具體如果有用戶使用wget或get下載或者獲取公司后臺(tái)頁(yè)面設(shè)置
501錯(cuò)誤頁(yè)面。
d.對(duì)指定域名設(shè)置網(wǎng)站來(lái)源ip訪問(wèn)。
e.nginx站點(diǎn)目錄文件及目錄權(quán)限優(yōu)化,設(shè)置web站點(diǎn)目錄的權(quán)限為755,文件權(quán)限
644,nginx配置禁止訪問(wèn)上傳和靜態(tài)資源目錄下的php程序,如果上傳、動(dòng)態(tài)和靜態(tài)頁(yè)面在
一個(gè)目錄下最好對(duì)網(wǎng)站架構(gòu)進(jìn)行解耦方便對(duì)目錄設(shè)置權(quán)限。
Mysql方面:
a.在做數(shù)據(jù)庫(kù)備份的時(shí)候,需要對(duì)備份目錄的腳本設(shè)置權(quán)限700,屬主改為rooto
b.生產(chǎn)環(huán)境mysql用戶權(quán)限的授權(quán)要授權(quán)單庫(kù)單用戶,授權(quán)的主機(jī)要最小化,能用localhost
不要使用%網(wǎng)段的形式,授權(quán)的權(quán)限要最小化不要使用alE如果是一主多從的環(huán)境,主庫(kù)
和從庫(kù)設(shè)置相同的用戶和密碼,主庫(kù)授權(quán)增刪改查,從庫(kù)授權(quán)select,主庫(kù)配置文件上設(shè)置
replication-ignore-s1ave防止主庫(kù)的權(quán)限復(fù)制到從庫(kù),為了禁止從庫(kù)寫入從庫(kù)設(shè)置read-
only權(quán)限。
c.生產(chǎn)環(huán)境禁止開(kāi)發(fā)連接有外網(wǎng)ip的數(shù)據(jù)庫(kù),禁止開(kāi)發(fā)獲取到web連接的密碼,只在一個(gè)
從庫(kù)上給開(kāi)發(fā)read-only只讀權(quán)限。
d.防止sql注入問(wèn)題,在sql層面很難防,主要通過(guò)修改nginx和php配置文件來(lái)實(shí)現(xiàn)的,
也可以通過(guò)采用nginx+lua防火墻來(lái)配置解決這個(gè)問(wèn)題,或者直接使月第三方軟件阿里云盾
web防火墻。
(10)使用過(guò)哪些批量管理軟件?了解哪些批量管理軟件?
Saltstack、ansible^puppet<>生產(chǎn)環(huán)境代碼上線使用過(guò)ansible+shell批量分發(fā)腳本
Saltstack和ansibio的區(qū)別
saltStack:由Pylhon編寫,采用c-s架構(gòu),依賴于zeromq消息隊(duì)列,采用yam1格式編寫
配置文件,比較簡(jiǎn)單,支持api及自定義python模塊,能輕松實(shí)現(xiàn)功能擴(kuò)展,適合網(wǎng)絡(luò)不
是很穩(wěn)定的,對(duì)安全不是很高的速度,服務(wù)器數(shù)量不是很多的情況。
Ansible:類似與saltstack,基于python開(kāi)發(fā),使用ssh協(xié)議連接傳輸數(shù)據(jù),不需要在客
戶端安裝程序,通過(guò)ssh執(zhí)行所有功能,采用yaml格式編寫配置文件,溶法相對(duì)于saltstack
比較簡(jiǎn)單,適合與網(wǎng)絡(luò)環(huán)境穩(wěn)定,服務(wù)器數(shù)量很多對(duì)速度和安全性要求比較高的環(huán)境,比較
難擴(kuò)展。
Puppet:比較笨重沒(méi)有使用過(guò)不是很熟悉。
2.請(qǐng)描述下linux防火墻iptables的表和鏈
Iptables有4張表5個(gè)鏈
iptables表:filter、nat>mangleraw(后面2個(gè)不常用)
iptables鏈:input,forward,output,prerouting,postroutingo
Filter表的鏈:input,forward,output
Nat表的鏈:output,prerouting,postrouting
Mangle表的鏈:input,forward,output,prerouting,postrouting
Filter表:和主機(jī)自身有關(guān),負(fù)責(zé)主機(jī)防火墻功能,系統(tǒng)默認(rèn)表。
Nat表:網(wǎng)絡(luò)地址轉(zhuǎn)換,用于局域網(wǎng)共享上網(wǎng)或者特殊的端口轉(zhuǎn)換服務(wù)。
Input鏈:過(guò)濾進(jìn)入主機(jī)的數(shù)據(jù)包。
Forward鏈:轉(zhuǎn)發(fā)流經(jīng)主機(jī)的數(shù)捱包。
Output鏈:從主機(jī)發(fā)出的數(shù)據(jù)包,
Prerouting鏈:數(shù)據(jù)包到達(dá)防火墻時(shí)進(jìn)行路由判斷之前執(zhí)行的規(guī)則。
Postrouting鏈:數(shù)據(jù)包離開(kāi)防火墻時(shí)進(jìn)行路由判斷之后執(zhí)行的規(guī)則。
生產(chǎn)環(huán)境使用iptables場(chǎng)景:
(1)局域網(wǎng)共享上網(wǎng),使用nat表postrouting鏈。
(2)外部ip和端口映射為內(nèi)部ip和端口,使用nat表prerouting鏈。
(3)主機(jī)防火墻使用filter表input鏈。
如何將本地80端口的請(qǐng)求轉(zhuǎn)發(fā)到8080端口,當(dāng)前主機(jī)IP為192.168.2.1
iptables-APREROUTING-d192.168.2.1-ptcp-mtcp-dport80-jDNAT-to-
destination192.168.2.1:8080
3.系統(tǒng)緩存
(1)你了解哪些系統(tǒng)緩存?
linux緩存體系;dns和瀏覽器緩存、cdn和反向代理緩存、web服務(wù)和分布式緩存、數(shù)據(jù)庫(kù)
和操作系統(tǒng)緩存。
反向代理緩存:nginxxsquid、varish
Web緩存:nginx里面配置proxycache
分布式緩存:memcache,redis
數(shù)據(jù)庫(kù)緩存:mysqlmyisum引擎緩存,innodb緩存(innodb_buffer_size)
操作系統(tǒng)緩存:raid緩存。
(2)使用過(guò)cdn嗎?cdn的特點(diǎn)是什么?你們公司cdn是怎么計(jì)費(fèi)的?cdn緩存后的網(wǎng)站訪問(wèn)
過(guò)程?
cdn:內(nèi)容分發(fā)網(wǎng)絡(luò),全球分布式緩存集群,在用戶的最前端。作為圖片,附件,視頻等靜態(tài)
數(shù)據(jù)的緩存。通過(guò)智能dns判斷用戶的來(lái)源地域以及上網(wǎng)線路,為用戶選擇一個(gè)最接近用戶
地域以及和用戶上網(wǎng)線路相同的服務(wù)器節(jié)點(diǎn),提升用戶網(wǎng)站的體驗(yàn)。
生產(chǎn)環(huán)境使用過(guò)阿里云的cdn產(chǎn)品,cdn采用的計(jì)費(fèi)方式是95帶寬峰值計(jì)費(fèi)方式,月結(jié)95
帶寬峰值計(jì)費(fèi)按自然月結(jié)算,在一個(gè)自然月內(nèi),按賬號(hào)取每5分鐘有效帶寬值進(jìn)行降序排
列,然后去掉帶寬數(shù)值較高的5%的點(diǎn),剩下的95%帶寬點(diǎn)中最大的帶寬值即為月95帶寬峰
值計(jì)費(fèi)俏,cdn計(jì)費(fèi)規(guī)則是我們運(yùn)維經(jīng)理之前購(gòu)買的。
Cdn的作用:為客戶省錢、提升客戶的體驗(yàn),可以阻擋大部分流量攻擊。
a.用戶向?yàn)g覽器提供要訪問(wèn)的域名;
b.瀏覽器調(diào)用域名解析庫(kù)對(duì)域名進(jìn)行解析得到CNAME,再解析CNAME域名獲取IP地址,在
此過(guò)程中,使用的全局負(fù)載均衡DNS解析,如根據(jù)地理位置信息解析對(duì)應(yīng)的IP地址,使得
用戶能就近訪問(wèn);
c.這次解析到只是CDN服務(wù)器的IP地址,瀏覽器獲取這個(gè)IP地址就向CDN緩存發(fā)送請(qǐng)求;
d.CDN緩存服務(wù)器根據(jù)瀏覽器提供的要訪問(wèn)的域名,通過(guò)Cache內(nèi)部專用DNS解析得到此域
名的實(shí)際IP地址,再由緩存服務(wù)器向此實(shí)際IP地址提交訪問(wèn)請(qǐng)求,緩存服務(wù)器就好像是中
間人那樣子;
e.CDN緩存服務(wù)器獲取內(nèi)容后,一方面在本地存儲(chǔ),以便客戶端下次訪問(wèn);另外一方面就發(fā)
送給客戶端;
f.客戶端就把從CDN緩存服務(wù)器返回的內(nèi)容顯示,下次訪問(wèn)就直接訪問(wèn)CDN緩存服務(wù)器。
(2)cdn某個(gè)地域節(jié)點(diǎn)宕機(jī)訪問(wèn)異常如何排查?
我們公司使用的cdn是阿里云的cdn,如果cdn某個(gè)地域節(jié)點(diǎn)宕機(jī)訪問(wèn)異常,我們首先確定
是CDN節(jié)點(diǎn)問(wèn)題還是源站問(wèn)題,訪問(wèn)阿里昆侖用戶診斷工具,確認(rèn)本地網(wǎng)絡(luò)正常。在本地
hosts文件中添加源站的解析,進(jìn)行站點(diǎn)訪問(wèn)測(cè)試。如果訪問(wèn)源站時(shí)出現(xiàn)異常,說(shuō)明是源站
存在問(wèn)題。我們會(huì)聯(lián)系站點(diǎn)管理員進(jìn)行修復(fù)。備注上一步添加的本地hosts解析,通過(guò)ping
命令測(cè)試添加的加速域名,如果能ping通,說(shuō)明CDN節(jié)點(diǎn)正常。
cdn某個(gè)地域節(jié)點(diǎn)宕機(jī)訪問(wèn)異常一般會(huì)有這幾種情況:某地區(qū)客戶ping不通CDN的加速域
名、源站更改文件之后,某個(gè)地區(qū)的用戶從CDN節(jié)點(diǎn)上拿到的還是更改之前的文件。
某地區(qū)客戶ping不通CDN的加速域名的原因是:
用戶本地網(wǎng)絡(luò)異常;節(jié)點(diǎn)網(wǎng)絡(luò)異常或者被攻擊;用戶本地到運(yùn)營(yíng)商中間鏈路某路由節(jié)點(diǎn)故障。
解決方法:
a.排查用戶的加速域名是否在沙箱節(jié)點(diǎn)中,如果域名在沙箱中,控制臺(tái)域名狀態(tài)后面會(huì)顯示
在沙箱中,可能是用戶的加速域名遭受DDoS或CC攻擊時(shí),CDN系統(tǒng)自動(dòng)將域后域名切入沙
箱,防止影響其他正常用戶的加速服務(wù)。沙箱中的域名無(wú)法保證服務(wù)穩(wěn)定性,所以會(huì)存在
ping不通的情況,此時(shí)可能沙箱正在受到攻擊。
b.根據(jù)提交的Ping截圖,拿到所訪問(wèn)的節(jié)點(diǎn)1P,核實(shí)該1P是否是CDN節(jié)點(diǎn)IP,如果用戶
的訪問(wèn)節(jié)點(diǎn)不是CDN節(jié)點(diǎn)IP,需要用戶核實(shí)幾個(gè)情況:用戶本地是否有開(kāi)啟代理軟件(有
些代理軟件會(huì)強(qiáng)制更改訪問(wèn)域名的解析情況)、用戶是否有綁定Host文件,將加速域名強(qiáng)制
解析到了某個(gè)IP、用戶本地存在DNS劫持,這種情況,讓用戶本地開(kāi)啟殺毒安全軟件,并
且固定本地所使用的DNS為阿里的223或者電信的114或者其他知名的DNS,如果劫持情況
比較嚴(yán)重,并且無(wú)法解決,則需要向你的網(wǎng)絡(luò)服務(wù)提供商投訴要求解決劫持。
c.自己本地實(shí)際ping該節(jié)點(diǎn)IP,以及使用站長(zhǎng)工具(比如17或者聽(tīng)云平臺(tái))在全
國(guó)探測(cè)該節(jié)點(diǎn)IP,是否存在問(wèn)題(問(wèn)題現(xiàn)象:各個(gè)地區(qū)訪問(wèn)該節(jié)點(diǎn)均延遲均較大或者不通,
自己本地也Ping該節(jié)點(diǎn)不通),這種情況該節(jié)點(diǎn)存在問(wèn)題的可能性較大。
d.讓用戶本地使用tracert(win主機(jī))或者traceroute(linux主機(jī))到該IP進(jìn)行探測(cè)并
提供完整探測(cè)截圖,根據(jù)得到的截圖確定整個(gè)網(wǎng)絡(luò)鏈路的問(wèn)題點(diǎn)。
緩解用戶問(wèn)題的方法:讓用戶更改本地所使用的localDNS為其他DNS(比如電信的114或
者阿里的223)并且刷新本地的DNS緩存,使其調(diào)度到其他正常的節(jié)點(diǎn),走另外一條線路,
則該問(wèn)題可能得到緩解。
源站更改文件之后,某個(gè)地區(qū)的用戶從CDN節(jié)點(diǎn)上拿到的還是更改之前的文件
原因:刷新未生效;讀取的是本地瀏覽器緩存;被本地運(yùn)營(yíng)商劫持。
解決方法:
a.讓客戶提交pingCDN加速域名的截圖,拿到客戶訪問(wèn)的節(jié)點(diǎn)IP。
b.判斷該節(jié)點(diǎn)是否是CDN的節(jié)點(diǎn),根據(jù)提交的Ping截圖,拿到所訪問(wèn)的節(jié)點(diǎn)IP,核實(shí)該IP
是否是CDN節(jié)點(diǎn)IP,如果用戶的訪問(wèn)節(jié)點(diǎn)不是CDN節(jié)點(diǎn)IP,需要用戶核實(shí)幾個(gè)情況:用戶
本地是否有開(kāi)啟代理軟件(有些代理軟件會(huì)強(qiáng)制更改訪問(wèn)域名的解析情況)、用戶是否有綁
定Host文件,將加速域名強(qiáng)制解析到了某個(gè)IP、用戶本地存在DNS劫持,這種情況,讓用
戶本地開(kāi)啟殺毒安全軟件,并且固定本地所使用的DNS為阿里的223或者電信的114或者
其他知名的DNS,如果劫持情況比較嚴(yán)重,并且無(wú)法解決,則需要向你的網(wǎng)絡(luò)服務(wù)提供商投
訴要求解決劫持。
c.根據(jù)CDN的配置,綁定客戶提供的CDN節(jié)點(diǎn),以及CDN的源站(綁定用戶源站測(cè)試的時(shí)
候,注意?下用戶CDN的回源Host配置,舉例:如果用戶CDN加速域名為A,源站域名為
B,回源Host配置的為A,那么測(cè)試源站的時(shí)候,以curl來(lái)說(shuō),命令應(yīng)該為curl-H“Host:
A”“B”;如果是綁定Host文件,那么應(yīng)該將用戶的CDN加速域名綁定Host到源站域名所
解析出來(lái)的IP上),綁定源站測(cè)試的時(shí)候,還要注意一下源站回源端口的設(shè)置,不同的回源
端口得到的訪問(wèn)結(jié)果也可能是不一樣的;分別測(cè)試得到responseheader相關(guān)信息,判斷是
否如客戶所說(shuō)訪問(wèn)的文件會(huì)是不一致。
這里判斷是否一致,著重看幾點(diǎn):
content-length大小是否一致
last-modified(如果有):修改時(shí)間是否一致
Etag/Content-Md5(如果有)是否一致
上述三點(diǎn)只要有任何一個(gè)是不一致的,那么均可認(rèn)為源站和節(jié)點(diǎn)上文件的確是不一致的,上
述三點(diǎn)中,條件允許(意思是幾個(gè)信息都有的情況下)其中第三點(diǎn)是最具備判斷依據(jù)的點(diǎn)。
某個(gè)地區(qū)用戶訪問(wèn)CDN加速域名上拿到的非其站點(diǎn)文件內(nèi)容。
原因:訪問(wèn)的非CDN節(jié)點(diǎn);被劫持。
解決方法:1.判斷用戶訪問(wèn)的IP是否CDN的節(jié)點(diǎn)IP,方法看問(wèn)題1的步驟2。
2.排查是否CDN節(jié)點(diǎn)本身緩存了非用戶站點(diǎn)上的文件,思路可以按照問(wèn)題2系列步驟進(jìn)行,
下面針對(duì)用戶客戶端到CDNL1這一段徒路進(jìn)行方法排查用戶在能夠復(fù)現(xiàn)問(wèn)題的情況下,使
其使用瀏覽器開(kāi)發(fā)者工具,切到network標(biāo)簽下,瀏覽器地址欄鍵入訪問(wèn)URL然后回車訪
問(wèn),network標(biāo)簽下,點(diǎn)擊用戶訪問(wèn)的那個(gè)URL,截圖general/requestheader,看看用
戶實(shí)際的訪問(wèn)情況,報(bào)錯(cuò)requestURI、remoteip、requestUrl主要看訪問(wèn)形式是否如
http://x.x.x.x/cache/CDN的訪問(wèn)URL或者remoteIP非CDN節(jié)點(diǎn)IP,如下圖這種則是劫
持:
如果是圖片上的這種情況,需要需要聯(lián)系其本地運(yùn)營(yíng)商投訴處理,解除劫持。
(3)cdn節(jié)點(diǎn)源站負(fù)載高如何排杳?
a.分析web訪問(wèn)日志,查看ip來(lái)源,及時(shí)封掉非正常訪問(wèn)ip。
b.可能是edn頻繁來(lái)抓數(shù)據(jù)(源站更新頻繁,edn緩存經(jīng)常倒騰數(shù)據(jù),命中率要高一些),404
和403。
c.edn公司增加緩存節(jié)點(diǎn),抓源站,告訴edn抓自己服務(wù)器,不要抓源站。
(4)你們公司edn源站更新edn是怎么更新的?
源站更新,edb不知道也不關(guān)注。
我們公司一般的情況是內(nèi)部編輯觸發(fā),源站更新通過(guò)edn接口推送到edn,可以讓edn刪除
老的更新新的。
我了解的另外一種情況如果是外部用戶觸發(fā),但是用戶會(huì)請(qǐng)求元素,這個(gè)元素edn第一次沒(méi)
有,edn會(huì)去去源站請(qǐng)求。
(5)簡(jiǎn)述一致性hash分布式哈希算法原理和特點(diǎn)
a.首先求出memcached服務(wù)器(節(jié)點(diǎn))的哈希值,并將其配置到0?232的圓(continuum)
上。
b.然后采用同樣的方法求出存儲(chǔ)數(shù)據(jù)的鍵的哈希值,并映射到相同的圓上。
c.然后從數(shù)據(jù)映射到的位置開(kāi)始順時(shí)針查找,將數(shù)據(jù)保存到找到的第個(gè)服務(wù)器上。如果超
過(guò)232仍然找不到服務(wù)器,就會(huì)保存到第一臺(tái)memcached服務(wù)器上。
特點(diǎn):?jiǎn)握{(diào)性(Monotonicity),單調(diào)性是指如果已經(jīng)有一些請(qǐng)求通過(guò)哈希分派到了相應(yīng)的服
務(wù)器進(jìn)行處理,又有新的服務(wù)器加入到系統(tǒng)中時(shí)候,應(yīng)保證原有的請(qǐng)求可以被映射到原有的
或者新的服務(wù)器中去,而不會(huì)被映射到原來(lái)的其它服務(wù)器上去。
分散性(Spread):分布式環(huán)境中,客戶端請(qǐng)求時(shí)候可能不知道所有服務(wù)器的存在,可能只知
道其中一部分服務(wù)器,在客戶端看來(lái)他看到的部分服務(wù)器會(huì)形成一個(gè)完整的hash環(huán)。如果
多個(gè)客戶端都把部分服務(wù)器作為一個(gè)完整hash環(huán),那么可能會(huì)導(dǎo)致,同一個(gè)用戶的請(qǐng)求被
路由到不同的服務(wù)器進(jìn)行處理。這種情況顯然是應(yīng)該避免的,因?yàn)樗荒鼙WC同一個(gè)用戶的
請(qǐng)求落到同一個(gè)服務(wù)器。所謂分散性是指上述情況發(fā)生的嚴(yán)重程度。好的哈希算法應(yīng)盡量避
免盡量降低分散性。一致性hash具有很低的分散性。
平衡性(Balance);平衡性也就是說(shuō)負(fù)載均衡,是指客戶端hash后的請(qǐng)求應(yīng)該能夠分散到不
同的服務(wù)器上去。一致性hash可以做到每個(gè)服務(wù)器都進(jìn)行處理請(qǐng)求,但是不能保證每個(gè)服
務(wù)器處理的請(qǐng)求的數(shù)量大致相同。
(6)memcache和redis的區(qū)別
Memcached支持一種數(shù)據(jù)類型,redis支持多種數(shù)據(jù)類型。
(7)什么是redis?生產(chǎn)環(huán)境如何使用redis的?什么是redis持久化?redis持久化的區(qū)別?
如何選擇?redis持久化生產(chǎn)環(huán)境你們是怎么應(yīng)用的?
Redis:是一個(gè)使用C語(yǔ)言編寫的,開(kāi)源的高性能非關(guān)系型數(shù)據(jù)庫(kù)。
生產(chǎn)環(huán)境使用redis:我們公司是電商公司,主要使用redis統(tǒng)計(jì)商品維度計(jì)數(shù)和用戶維度
計(jì)數(shù),消息通知,商品鍵值存儲(chǔ),實(shí)現(xiàn)秒殺功能。
Redis持久化:把redis內(nèi)存中的數(shù)據(jù)保存到硬盤的過(guò)程稱為持久化。
Redis持久化種類:rdb持久化和aof持久化。
Rdb:可以在指定的時(shí)間間隔內(nèi)生成數(shù)據(jù)集快照。
Aof:記錄服務(wù)器所有執(zhí)行的寫操作,在服務(wù)器啟動(dòng)時(shí)通過(guò)重新執(zhí)行這些命令來(lái)還原數(shù)據(jù)集。
Redis可以RJ時(shí)使用rdb和aof,如果同時(shí)使用兩種優(yōu)先使用aofo
Rdb特點(diǎn):
a.保存redis在某個(gè)時(shí)間點(diǎn)的數(shù)據(jù)集,適合災(zāi)備。
b.可以最大化redis的性能,父進(jìn)程在持久化保存rdb文件的時(shí)候時(shí)會(huì)fork出一個(gè)子進(jìn)程,
子進(jìn)程會(huì)繼續(xù)執(zhí)行持久化工作。
c.rdb在恢復(fù)大數(shù)據(jù)集的速度比aof要快。
d.rdb不適合需要避免服務(wù)器出故障時(shí)保存數(shù)據(jù)的場(chǎng)景。
e.rdb在持久化的時(shí)候會(huì)fork出一個(gè)子進(jìn)程,保存的數(shù)據(jù)集文件很大時(shí),會(huì)非常耗時(shí),影
響系統(tǒng)性能。
Aof特點(diǎn)
a.aof持久化可以根據(jù)編輯的策略設(shè)置寫入數(shù)據(jù)的頻率。
b.aof文件是一個(gè)只進(jìn)行追加操作的日志文件。
c.redis在aof文件過(guò)大時(shí),自動(dòng)地在后臺(tái)對(duì)aof進(jìn)行重寫。
d.aof文件的體積大于rdb文件的體積。
e.aof寫入的速度慢Trdb寫入的速度。
生產(chǎn)環(huán)境選擇:如果不能忍受數(shù)據(jù)丟失,建議使用aof,如果追求速度建議使用rdbo
redis持久化生產(chǎn)環(huán)境應(yīng)用:
a.要進(jìn)行Master-slave配置,出現(xiàn)服務(wù)器故障時(shí)可以直接切換。
b.在master側(cè)禁用數(shù)據(jù)持久化,只需要在slave上配置數(shù)據(jù)持久化。
c.物理內(nèi)存+虛擬內(nèi)存不足,這個(gè)時(shí)候dump一直死著,時(shí)間久了機(jī)器掛掉。這個(gè)情況就是災(zāi)
難。
d.當(dāng)Redis物理內(nèi)存使用超過(guò)內(nèi)存總量的3/5時(shí)就會(huì)開(kāi)始比較危險(xiǎn)了,就開(kāi)始做swap,內(nèi)
存碎片大。
e.當(dāng)達(dá)到最大內(nèi)存時(shí),會(huì)清空帶有過(guò)期時(shí)間的key,即使key未到過(guò)期時(shí)間。
f.redis與DB同步寫的問(wèn)題,先寫DB,然后再寫redis,因?yàn)閷憙?nèi)存基本上沒(méi)問(wèn)題。
(8)Redis持久化數(shù)據(jù)和緩存怎么做擴(kuò)容?
如果Redis被當(dāng)做緩存使用,使用一致性哈希實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)容縮容。
如果Redis被當(dāng)做一個(gè)持久化存儲(chǔ)使用,必須使用固定的keys-to-nodes映射關(guān)系,節(jié)點(diǎn)的
數(shù)量一旦確定不能變化。否則的話(即Redis節(jié)點(diǎn)需要?jiǎng)討B(tài)變化的情況),必須使用可以在運(yùn)
行時(shí)進(jìn)行數(shù)據(jù)再平衡的一套系統(tǒng),而當(dāng)前只有Redis集群可以做到這樣。
(9)Rediskey的過(guò)期時(shí)間和永久有效分別怎么設(shè)置?
EXPIRE和PERSIST命令
(lO)rcdis集群模式有哪幾種?主從復(fù)制的流程?有什么特點(diǎn)?
redis集群模式:客戶端分片、代理分片、codis、Rediscluster、哨兵模式
主從復(fù)制流程:
a.當(dāng)從庫(kù)和主庫(kù)建立主從關(guān)系后,從庫(kù)會(huì)向主數(shù)據(jù)庫(kù)發(fā)送SYNC命令
b.主庫(kù)接收到SYNC命令后會(huì)開(kāi)始在后臺(tái)保存快照(RDB持久化過(guò)程),并將期間接收到的寫
命令緩存起來(lái)
C.當(dāng)快照完成后,主Redis會(huì)將快照文件和所有緩存的寫命令發(fā)送給從Redis
d.從Redis接收到后,會(huì)載入快照文件并口執(zhí)行收到的緩存的命令
e.之后,主Redis每當(dāng)接收到寫畬令時(shí)就會(huì)將命令發(fā)送從Redis,從而保證數(shù)據(jù)的一致。
Redis主從復(fù)制缺點(diǎn):所有的slave節(jié)點(diǎn)數(shù)據(jù)的復(fù)制和同步都由master節(jié)點(diǎn)來(lái)處理,會(huì)照
成master節(jié)點(diǎn)壓力太大,使用主從從結(jié)構(gòu)來(lái)解決。
客戶端分片:
原理:采用哈希算法將Redis數(shù)據(jù)的key進(jìn)行散列,通過(guò)hash函數(shù),特定的key會(huì)映射到
特定的Redis節(jié)點(diǎn)上。
優(yōu)點(diǎn):非常簡(jiǎn)單,服務(wù)端的Redis實(shí)例彼此獨(dú)立,相互無(wú)關(guān)聯(lián),每個(gè)Redis實(shí)例像單服務(wù)器
一樣運(yùn)行,非常容易線性擴(kuò)展,系統(tǒng)的靈活性很強(qiáng)。
缺點(diǎn):sharding處理放到客戶端,客戶端sharding不支持動(dòng)態(tài)增刪節(jié)點(diǎn)。服務(wù)端Redis實(shí)
例群拓?fù)浣Y(jié)構(gòu)有變化時(shí),每個(gè)客戶端都需要更新調(diào)整。連接不能共享,當(dāng)應(yīng)用規(guī)模增大時(shí),
資源浪費(fèi)制約優(yōu)化,系統(tǒng)擴(kuò)展性差。
服務(wù)器代理分片:
原理:客戶端發(fā)送請(qǐng)求到一個(gè)代理組件,代理解析客戶端的數(shù)據(jù),并將請(qǐng)求轉(zhuǎn)發(fā)至正確的節(jié)
點(diǎn),最后將結(jié)果回復(fù)給客戶端。
特點(diǎn):
a.透明接入,業(yè)務(wù)程序不用關(guān)心后端Redis實(shí)例,切換成本低
b.Proxy的邏輯和存儲(chǔ)的邏輯是隔離的
c.代理層多了一次轉(zhuǎn)發(fā),性能有所損耗
Rediscluster:
原理:并沒(méi)有使用一致性hash,而是采用slot(槽)的概念,一共分成16384個(gè)槽。將請(qǐng)求
發(fā)送到任意節(jié)點(diǎn),接收到請(qǐng)求的節(jié)點(diǎn)會(huì)將查詢請(qǐng)求發(fā)送到正確的節(jié)點(diǎn)上執(zhí)行。
通過(guò)哈希的方式,將數(shù)據(jù)分片,每個(gè)節(jié)點(diǎn)均分存儲(chǔ)一定哈希槽(哈希值)區(qū)間的數(shù)據(jù),默認(rèn)分
配了16384個(gè)槽位
a.每份數(shù)據(jù)分片會(huì)存儲(chǔ)在多個(gè)互為主從的多節(jié)點(diǎn)上
b.數(shù)據(jù)寫入先寫主節(jié)點(diǎn),再同步到從節(jié)點(diǎn)(支持配置為阻塞同步)
c.同一分片多個(gè)節(jié)點(diǎn)間的數(shù)據(jù)不保持一致性
d.讀取數(shù)據(jù)時(shí),當(dāng)客戶端操作的key沒(méi)有分配在該節(jié)點(diǎn)上時(shí),redis會(huì)返回轉(zhuǎn)向指令,指向
正確的節(jié)點(diǎn)
e.擴(kuò)容時(shí)時(shí)需要需要把舊節(jié)點(diǎn)的數(shù)據(jù)遷移一部分到新節(jié)點(diǎn)
優(yōu)點(diǎn):
a.無(wú)中心架構(gòu),支持動(dòng)態(tài)擴(kuò)容,對(duì)業(yè)務(wù)透明
b.具備Sentinel的監(jiān)控和自動(dòng)Failover(故障轉(zhuǎn)移)能力
c.客戶端不需要連接集群所有節(jié)點(diǎn),連接集群中任何一個(gè)可用節(jié)點(diǎn)即可
d.高性能,客戶端直連redis服務(wù),免去了proxy代理的損耗
缺點(diǎn)
a.運(yùn)維也很復(fù)雜,數(shù)據(jù)遷移需要人工干預(yù)
b.只能使用。號(hào)數(shù)據(jù)庫(kù)
c.不支持批量操作(pipeline管道操作)
d.分布式邏輯和存儲(chǔ)模塊耦合等
哨兵模式:
sentinel,中文名是哨兵。哨兵是redis集群機(jī)構(gòu)中非常重要的一人組件,主要有以下功
能
集群監(jiān)控:負(fù)責(zé)監(jiān)控redismaster和slave進(jìn)程是否正常工作。
消息通知:如果某個(gè)redis實(shí)例有故障,那么哨兵負(fù)責(zé)發(fā)送消息作為報(bào)警通知給管理員。
故障轉(zhuǎn)移:如果masternode掛掉了,會(huì)自動(dòng)轉(zhuǎn)移到slavenode上。
配置中心:如果故障轉(zhuǎn)移發(fā)生了,通知client客戶端新的master地址。
哨兵用于實(shí)現(xiàn)redis集群的高可用,本身也是分布式的,作為一個(gè)哨兵集群去運(yùn)行,互相
協(xié)同工作。
故障轉(zhuǎn)移時(shí),判斷一個(gè)masternode是否宕機(jī)了,需要大部分的哨兵都同意才行,涉及到
了分布式選舉的問(wèn)題。
即使部分哨兵節(jié)點(diǎn)掛掉了,哨兵集群還是能正常工作的,因?yàn)槿绻蝗俗鳛楦呖捎脵C(jī)制重要
組成部分的故障轉(zhuǎn)移系統(tǒng)本身是單點(diǎn)的,不好了。
(11)生產(chǎn)環(huán)境中的redis架構(gòu)是什么樣的
rediscluster,10臺(tái)機(jī)器,5臺(tái)機(jī)器部署了redis主實(shí)例,另外5臺(tái)機(jī)器部署了redis
的從實(shí)例,每個(gè)主實(shí)例掛了一個(gè)從實(shí)例,5個(gè)節(jié)點(diǎn)對(duì)外提供讀寫服務(wù),每個(gè)節(jié)點(diǎn)的讀寫高峰
qps可能可以達(dá)到每秒5萬(wàn),5臺(tái)機(jī)器最多是25萬(wàn)讀寫請(qǐng)求/s。
機(jī)器是什么配置?32G內(nèi)存+8咳CPU+IT磁盤,但是分配給redis進(jìn)程的是10g內(nèi)
存,一般線上生產(chǎn)環(huán)境,redis的內(nèi)存盡量不要超過(guò)10g,超過(guò)10g可能會(huì)有問(wèn)題。
5臺(tái)機(jī)器對(duì)外提供讀寫,一共有50g內(nèi)存。
因?yàn)槊總€(gè)主實(shí)例都掛了一個(gè)從實(shí)例,所以是高可用的,任何一個(gè)主實(shí)例宕機(jī),都會(huì)自動(dòng)故障
遷移,redis從實(shí)例會(huì)自動(dòng)變成主實(shí)例繼續(xù)提供讀寫服務(wù)。
(12)redis哈希槽是什么
Redis集群有16384個(gè)哈希槽,每個(gè)key通過(guò)CRC16校驗(yàn)后對(duì)16384取模來(lái)決定放置哪個(gè)
槽,集群的每個(gè)節(jié)點(diǎn)負(fù)責(zé)一部分hash槽。
(13)Redis集群會(huì)有寫操作丟失嗎?為什么?
Redis并不能保證數(shù)據(jù)的強(qiáng)一致性,這意味這在實(shí)際中集群在特定的條件下可能會(huì)丟失寫操
作。
(14)redis集群之間是如何復(fù)制的?
異步復(fù)制
(15)Redis集群最大節(jié)點(diǎn)個(gè)數(shù)是多少?
16384個(gè)
(16)redis性能安全問(wèn)題
a.Master最好不要做任何持久化工作,包括內(nèi)存快照和A0F日志文件,特別是不要啟用內(nèi)
存快照做持久化。
b.如果數(shù)據(jù)比較關(guān)鍵,某個(gè)Slave開(kāi)啟AOF備份數(shù)據(jù),策略為每秒同步一次。
c.為了主從復(fù)制的速度和連接的穩(wěn)定性,Slave和Master最好在同一個(gè)局域網(wǎng)內(nèi)。
d.盡量避免在壓力較大的主庫(kù)上增加從庫(kù)
e.Master調(diào)用BGREWRITEAOF重寫AOF文件,AOF在重寫的時(shí)候會(huì)占大最的CPU和內(nèi)存資源,
導(dǎo)致服務(wù)load過(guò)高,出現(xiàn)短暫服務(wù)暫?,F(xiàn)象。
f.為了Master的穩(wěn)定性,主從復(fù)制不要用圖狀結(jié)構(gòu),用單向鏈表結(jié)構(gòu)更穩(wěn)定,即主從關(guān)系
為:Master<-SlaveK-Slave2<-Slave3,e,?這樣的結(jié)構(gòu)也方便解決單點(diǎn)故障問(wèn)題,實(shí)現(xiàn)
Slave對(duì)Master的替換,也即,如果Master掛了,可以立馬啟用Slave1做Master,其他
不變。
(17)生產(chǎn)環(huán)境中是否遇到redis性能瓶頸的問(wèn)題,如果解決?
使用內(nèi)存過(guò)大,使用懶惰刪除過(guò)期key,需要增加虛擬內(nèi)存及物理內(nèi)存。
(18)生產(chǎn)環(huán)境是否遇到過(guò)雙向甚至多向數(shù)據(jù)同步的問(wèn)題?是什么場(chǎng)景?如何解決?
遇到過(guò),在集群中,由于redis數(shù)據(jù)同步存在一定的時(shí)間延遲可能造成數(shù)據(jù)不一致。通過(guò)在
寫庫(kù)前后都進(jìn)行刪除操作,并設(shè)置一定的超時(shí)時(shí)間來(lái)處理數(shù)據(jù)不一致的問(wèn)題。
(19)生產(chǎn)環(huán)境使用redis最在意哪些因素?
首選確認(rèn)安全性,其次才是性能,然后是成本。
(20)生產(chǎn)環(huán)境使用redis需要注意哪些方面?
(1)Master最好不要做任何持久化工作,如RDB內(nèi)存快照和AOF日志文件
(2)如果數(shù)據(jù)比較重要,某個(gè)Slave開(kāi)啟AOF笛份數(shù)據(jù),策略設(shè)置為每秒同步一次
(3)為了主從復(fù)制的速度和連接的穩(wěn)定性,Maste4口Slave最好在同一個(gè)局域網(wǎng)內(nèi)
(4)盡量避免在壓力很大的主庫(kù)上增加從庫(kù)
(5)主從復(fù)制不要用圖狀結(jié)構(gòu),用單向鏈表結(jié)構(gòu)更為穩(wěn)定,即:Master<-Slavel<-
Slave2<-Slave3...
這樣的結(jié)構(gòu)方便解決單點(diǎn)故障問(wèn)題,實(shí)班Slave對(duì)Master的替換.如果Master掛了,可以
立刻啟用Slave"!做Master,其他不變.
(21)對(duì)redis事務(wù)有了解嗎?
不了解
(22)redis多數(shù)據(jù)庫(kù)機(jī)制,了解多少?
單機(jī)支持16個(gè)數(shù)據(jù)庫(kù)
(23)了解redis的批量操作嗎?
常見(jiàn)操作如mset、mget
(24)你們生產(chǎn)環(huán)境有對(duì)redis集群做讀寫分離嗎?
沒(méi)有做,讀寫分離是為滿足讀多寫少的業(yè)務(wù)場(chǎng)景。
(25)redissave和bgsave的區(qū)別?
描述
save是把redis數(shù)據(jù)集備份到磁盤,此時(shí)redisi/。阻塞
bgsave也是備份,但是會(huì)創(chuàng)建1個(gè)fork進(jìn)程進(jìn)行磁盤保存操作,并不會(huì)影響redis的使用
Save:把redis數(shù)據(jù)集備份到磁盤,會(huì)阻塞redisi/o
Bgsave:也是備份,但是會(huì)創(chuàng)建一個(gè)fork進(jìn)程進(jìn)行磁盤數(shù)據(jù)保存
(26)生產(chǎn)環(huán)境遇到過(guò)redis主從數(shù)據(jù)不一致的問(wèn)題嗎?你認(rèn)為哪些原因會(huì)導(dǎo)致主從數(shù)據(jù)不
一致?如何解決主從數(shù)據(jù)不一致的問(wèn)題?
生產(chǎn)環(huán)境遇到過(guò)rodis主從數(shù)據(jù)不一致的問(wèn)題。
導(dǎo)致redis主從數(shù)據(jù)不一致的原因:對(duì)于主從庫(kù),讀寫分離,如果主從庫(kù)更新同步有時(shí)差,
就會(huì)導(dǎo)致主從庫(kù)數(shù)據(jù)的不一致,根本原因是網(wǎng)絡(luò)信息不同步,數(shù)據(jù)發(fā)送有延遲。
解決主從數(shù)據(jù)不一致的方法:
a.優(yōu)化主從間的網(wǎng)絡(luò)環(huán)境,通常放置在同一個(gè)機(jī)房部署,如使用阿里云等云服務(wù)器時(shí)要注意
此現(xiàn)象。
b.監(jiān)控主從節(jié)點(diǎn)延遲(通過(guò)offset)判斷,如果slave延遲過(guò)大,暫時(shí)屏蔽程序?qū)υ搒lave
的數(shù)據(jù)訪問(wèn)。
5.elk日志收集
(1)生產(chǎn)環(huán)境使用過(guò)elk嗎?elk芍什么特點(diǎn)?elk端口是什么?
生產(chǎn)環(huán)境使用過(guò)elk,版本是7.1.Ioelk是ELKStack是Elasticsearch、Logstash、
Kibana三個(gè)開(kāi)源軟件的組合。
ElasticsearchElasticSearch是一個(gè)基于Lucene構(gòu)建的,基于java開(kāi)發(fā)的,它提供了
一個(gè)分布式多用戶能力的開(kāi)源分右式全文搜索引擎。
Logstash是一個(gè)完全開(kāi)源的工具,它可以對(duì)你的日志進(jìn)行收集、分析,并將其存儲(chǔ)供以后
使用。
kibana是一個(gè)開(kāi)源和免費(fèi)的工具,它可以為L(zhǎng)ogstash和ElasticSearch提供的日志分
析友好的Web界面,可以幫助您匯總、分析和搜索重要數(shù)據(jù)日志。
Filebeat是用于單用途數(shù)據(jù)托運(yùn)人的平臺(tái)。它們以輕量級(jí)代理的形式安裝,并將來(lái)自成百
上千臺(tái)機(jī)器的數(shù)據(jù)發(fā)送到Logstash或Elasticsearcho
Mctricbeat是一個(gè)開(kāi)源和免費(fèi)的工具,定期收集操作系統(tǒng)或應(yīng)用服務(wù)的指標(biāo)數(shù)據(jù),存儲(chǔ)到
Elasticsearch中,進(jìn)行實(shí)時(shí)分析。Metricbeat組成:Metricbeat有2部分組成,一部分
是Module,另一部分為Metricset。
Elk特點(diǎn):
a.處理方式靈活。Elasticsearch是實(shí)時(shí)全文索引,不需要像storm那樣預(yù)先編程才能使
用。
b.配置簡(jiǎn)易上手。Elasticsearch全部采用JS0N接口,Logstash是RubyDSL設(shè)計(jì),都
是目前業(yè)界最通用的配置語(yǔ)法設(shè)計(jì)。
c.前端操作界面便捷。Kibana界面上,只需要點(diǎn)擊鼠標(biāo),就可以完成搜索、聚合功能,生
成炫麗的儀表板。
d.檢索性能高效。雖然每次查詢都是實(shí)時(shí)計(jì)算,但是優(yōu)秀的設(shè)計(jì)和實(shí)現(xiàn)基本可以達(dá)到全天數(shù)
據(jù)杳詢的秒級(jí)響應(yīng);
e.集群線性擴(kuò)展。不管是Elasticsearch集群還是Logstash集群都是可以線性擴(kuò)展的;
elasticsearch端口號(hào):9200
kibana端口號(hào):5601
logstash端口號(hào):5044
(2)es有什么特點(diǎn)?
a.實(shí)時(shí)分析。
b.分布式實(shí)時(shí)文件存儲(chǔ),并將每一個(gè)字段都編入索
c.文檔導(dǎo)向,所有的對(duì)象全部是文檔
d.高可用性,易擴(kuò)展,支持集群Cluster)、分片和復(fù)制(Shards和Replicas)
e.接口友好,支持JS0N
f.自動(dòng)發(fā)現(xiàn),索引自動(dòng)分片,索引副本機(jī)制
(3)es和關(guān)系型數(shù)據(jù)庫(kù)的區(qū)別
Elasticsearch集群可以包含多個(gè)索引(indices)(數(shù)據(jù)庫(kù)),每一個(gè)索引可以包含多個(gè)類型
(types)(表,每個(gè)類型包含多個(gè)文檔(documents)(行),然后每個(gè)文檔包含多個(gè)字段
(Fields)(列)。
(4)你們公司使用使用Elasticsearch的使用場(chǎng)景?(根據(jù)公司具體業(yè)務(wù)來(lái)回答)
電商業(yè)務(wù):因?yàn)樵谖覀兩坛侵械臄?shù)據(jù),將來(lái)會(huì)非常多,所以采用以往的模糊查詢,模糊杳詢
前置配置,會(huì)放棄索引,導(dǎo)致商品查詢是全表掃面,在百萬(wàn)級(jí)別的數(shù)據(jù)庫(kù)中,效率非常低下,
而我們使用ES做一個(gè)全文索引,我們將經(jīng)常查詢的商品的某些字段,比如說(shuō)商品名,描述、
價(jià)格還有id這些字段我們放入我們索引庫(kù)里,可以提高查詢速度。
(5)elasticsearch中的節(jié)點(diǎn)(比如共20個(gè)),其中的10個(gè)選了一個(gè)master,另外10個(gè)選
了另一個(gè)master,怎么辦?
當(dāng)集群master候選數(shù)量不小于3個(gè)時(shí),可以通過(guò)設(shè)置最少投票通過(guò)數(shù)量
(discovery.zen.minimum_master_nodes)超過(guò)所有候選節(jié)點(diǎn)一半以上來(lái)解決腦裂問(wèn)題;
當(dāng)候選數(shù)量為兩個(gè)時(shí),只能修改為唯一的?個(gè)master候選,其他作為data節(jié)點(diǎn),避免腦裂
問(wèn)題。
(6)在并發(fā)情況下,Elasticsearch如果保證讀寫一致?
可以通過(guò)版本號(hào)使用并發(fā)控制,以確保新版本不會(huì)被舊版本覆蓋,由應(yīng)用層來(lái)處理具體的沖
突;
另外對(duì)于寫操作,一致性級(jí)別支持quorum/one/all,默認(rèn)為quorum,即只有當(dāng)大多數(shù)
分片可用時(shí)才允許寫操作。但即使大多數(shù)可■用,也可能存在因?yàn)榫W(wǎng)絡(luò)等原因?qū)е聦懭敫北臼?/p>
敗,這樣該副本被認(rèn)為故障,分片將會(huì)在一個(gè)不同的節(jié)點(diǎn)上重建。
對(duì)于讀操作,可以設(shè)置replication為sync(默認(rèn)),這使得操作在主分片和副本分片
都完成后才會(huì)返回;如果設(shè)置replication為async時(shí),也可以通過(guò)設(shè)置搜索請(qǐng)求參數(shù)
.preference為primary來(lái)查詢主分片,確保文檔是最新版本。
(7)ElasticSearch中的集群、節(jié)點(diǎn)、索引、文檔、類型、分片、副本是什么?
集群:多個(gè)相同集群名稱的es節(jié)點(diǎn)組合在一起的集合。
多個(gè)CS集群節(jié)點(diǎn)共同保存您的整個(gè)數(shù)據(jù),并提供跨所有節(jié)點(diǎn)的聯(lián)合索引和搜索功能。集群
由唯一名稱標(biāo)識(shí),如果節(jié)點(diǎn)設(shè)置為按名稱加入群集,則該節(jié)點(diǎn)只能是群集的一部分。
節(jié)點(diǎn):是屬于集群一部分的單個(gè)服務(wù)器es運(yùn)行實(shí)例,它存儲(chǔ)數(shù)據(jù)并參與集群索引和搜索功
能。當(dāng)你啟動(dòng)一個(gè)es的時(shí)候,就運(yùn)行了一個(gè)節(jié)點(diǎn)。節(jié)點(diǎn)分為主節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn),主節(jié)點(diǎn)負(fù)
責(zé)調(diào)度數(shù)據(jù)返回?cái)?shù)據(jù),維護(hù)集群的狀態(tài)信息,當(dāng)集群狀態(tài)信息變化了,同步元數(shù)據(jù)給其他數(shù)
據(jù)節(jié)點(diǎn),節(jié)點(diǎn)加入集群或者從集群中下線,重新分配分片,創(chuàng)建或者刪除索引。每次集群狀
態(tài)如果有改變的化,那么主節(jié)點(diǎn)都會(huì)負(fù)責(zé)將集群狀態(tài)同步給所有的節(jié)點(diǎn)。數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)數(shù)據(jù)
的存儲(chǔ)和讀寫。默認(rèn)情況下所有節(jié)點(diǎn)都是工作節(jié)點(diǎn)。
索引:類似于關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù),我們把數(shù)據(jù)庫(kù)建立好,然后就把數(shù)據(jù)存到index中。
它有一個(gè)定義多種類型的映射。索引是邏輯名稱空間,映射到一個(gè)或多個(gè)主分片,并且可以
有零個(gè)或多個(gè)副本分片。一個(gè)es1單節(jié)點(diǎn)或者集群)可以有很多個(gè)索引
文檔:類似于關(guān)系數(shù)據(jù)庫(kù)中的一行。不同之處在于索引中的每個(gè)文檔可以具有不同的結(jié)構(gòu)(字
段),但是對(duì)于通用字段應(yīng)該具有相同的數(shù)據(jù)類型。
分片?:是指一份數(shù)據(jù)被分離開(kāi)保存到多個(gè)機(jī)器上,多個(gè)機(jī)器上的數(shù)據(jù)組合起來(lái)是一份數(shù)據(jù)。
因?yàn)镋S是個(gè)分布式的搜索引擎,所以索引通常都會(huì)分解成不同部分,而這些分布在不同節(jié)
點(diǎn)的數(shù)據(jù)就是分片,一個(gè)分片只存儲(chǔ)一部分?jǐn)?shù)據(jù),所有分片加起來(lái)就是一個(gè)完整的索引數(shù)據(jù)。
分片分為primal〉shard主分片和replica副本分片。主分片必須存在,副本分片可以根據(jù)
需要?jiǎng)?chuàng)建,一個(gè)索引可以創(chuàng)建多個(gè)分片數(shù)量,es默認(rèn)創(chuàng)建的就是5人主分片數(shù)量,可以根
據(jù)自己的實(shí)際業(yè)務(wù)確定主分片數(shù)量,但是需要注意的是主分片數(shù)量一旦確定創(chuàng)建就無(wú)法進(jìn)行
修改。
副本:是指同一份數(shù)據(jù)被保存到多個(gè)機(jī)器上,每個(gè)機(jī)器上都是相同的數(shù)據(jù)。副本就是主分片
的備份副本,如果主分片有3個(gè),那么一個(gè)副本replica就對(duì)應(yīng)有副本分片。副本分片數(shù)量
=副本數(shù)量*主分片數(shù)量,一個(gè)索引的所有分片數(shù)量計(jì)算公式=副本數(shù)量*主分片數(shù)量+主分
片數(shù)量,一個(gè)索引可以創(chuàng)建0-N個(gè)副本,es默認(rèn)創(chuàng)建的副本數(shù)量為1。副本就是es高可用
和快速響應(yīng)搜索的關(guān)鍵,副本數(shù)量可以根據(jù)實(shí)際情況修改。
分片和副本的關(guān)系:每個(gè)主分片(primaryshard)不會(huì)和副本分片(replicashard)存在于同
一個(gè)節(jié)點(diǎn)中,有效的保證es的數(shù)據(jù)高可用性。
(8)如何在生產(chǎn)環(huán)境部署es集群?每個(gè)索引的數(shù)據(jù)量大概有多少?每個(gè)索引大概有多少個(gè)
分片?(問(wèn)你們公司生產(chǎn)環(huán)境es集群節(jié)點(diǎn)數(shù)量,考察你有沒(méi)有真正使用過(guò)es集群)
es生產(chǎn)集群我們部署了10臺(tái)機(jī)器,每臺(tái)機(jī)器是6核64G的,集群總內(nèi)存是640G。
我們es集群的日增量數(shù)據(jù)大概是2000萬(wàn)條,每天日增量數(shù)據(jù)大概是500MB,每月增量
數(shù)據(jù)大概是2億,15Go目前系統(tǒng)已經(jīng)運(yùn)行了幾個(gè)月,現(xiàn)在es集群里數(shù)據(jù)總量大概是100G
左右。
目前線上有6個(gè)索引(這個(gè)結(jié)合,爾們自己業(yè)務(wù)來(lái),看看自己有哪些數(shù)據(jù)可以放es的),每
個(gè)索引的數(shù)據(jù)量大概是20G,所以這個(gè)數(shù)據(jù)量之內(nèi),我們每個(gè)索引分配的是8個(gè)shard,
比默認(rèn)的5個(gè)shard多了3個(gè)shard。
(9)如果在正常工作的情況下,節(jié)點(diǎn)丟失怎么辦?
此時(shí)主節(jié)點(diǎn)會(huì)看故障節(jié)點(diǎn)有哪些分片丟失掉了,主節(jié)點(diǎn)就會(huì)從剩余的分片副本上去選舉一個(gè)
當(dāng)做主分片,在進(jìn)行豆制一份。
如果我們想讓某個(gè)節(jié)點(diǎn)只存放數(shù)據(jù)不進(jìn)行選舉可以在配置文件進(jìn)行修改。
(10)es集群默認(rèn)情況下有幾個(gè)分片幾個(gè)副本?
es集群默認(rèn)情況下有5分片1副本
(ll)es集群discovery集群發(fā)現(xiàn)機(jī)制原理是什么?
discovery機(jī)制提供了unicastdiscovery集群發(fā)現(xiàn)機(jī)制,多個(gè)節(jié)點(diǎn)發(fā)現(xiàn)對(duì)方并且組成一個(gè)
集群,需要一批公共節(jié)點(diǎn)(unicastnodelist),其他節(jié)點(diǎn)發(fā)送請(qǐng)求到公共節(jié)點(diǎn)上,通過(guò)公
共節(jié)點(diǎn)交換各自的信息,進(jìn)而讓所有node感知到其他的node存在,進(jìn)而相互通信,最終組
成一個(gè)集群。當(dāng)一個(gè)node于公共節(jié)點(diǎn)中的成員通信之后,會(huì)收到一份完整的集群狀態(tài),狀
態(tài)中包含集群中所有的node。接著該node再與master通信,加入集群中。
(12)生產(chǎn)環(huán)境如何根據(jù)業(yè)務(wù)的實(shí)際需求創(chuàng)建分片和副本數(shù)量?
es集群分片數(shù)量多,讀取數(shù)據(jù)速度快,占用磁盤空間多。
Es集群分片數(shù)量少,讀取數(shù)據(jù)速度慢,占用磁盤空間少。
生產(chǎn)環(huán)境如果對(duì)es集群數(shù)據(jù)讀取的速度要求很高,對(duì)數(shù)據(jù)安全性和占用磁盤空間不是要求
很高的情況下,建議根據(jù)業(yè)務(wù)需求適當(dāng)增加分片數(shù)量。
生產(chǎn)環(huán)境如果對(duì)es集群數(shù)據(jù)安全性和占用磁盤空間要求跟高,對(duì)es集群數(shù)據(jù)讀取的速度
要求不高的情況下,建議根據(jù)業(yè)務(wù)需求適當(dāng)增加副本數(shù)量。
(13)es在數(shù)據(jù)量很大的情況下(數(shù)十億級(jí)別)如何提高查詢效率?(考察es集群性能如何
優(yōu)化)
可以從幾個(gè)方面提高查詢效率:根據(jù)filesystemcache內(nèi)存大小設(shè)置索引數(shù)據(jù)大小、數(shù)據(jù)
預(yù)熱、冷熱分離。
根據(jù)filesystemcache內(nèi)存大小設(shè)置索引數(shù)據(jù)大?。篹s里寫的數(shù)據(jù),實(shí)際上都寫到磁盤文
件里去了,查詢的時(shí)候,操作系統(tǒng)會(huì)將磁盤文件里的數(shù)據(jù)自動(dòng)緩存到filesystemcache(文
件系統(tǒng)緩存)去。
es的搜索引擎嚴(yán)重依賴于底層的filesystemcache,你如果給filesystemcache更多
的內(nèi)存,盡量讓內(nèi)存可以容納所有的idxsegmentfile索引數(shù)據(jù)文件,那么你搜索的時(shí)候
就基本都是走內(nèi)存的,性能會(huì)非常高。
我們公司運(yùn)維在線下測(cè)試環(huán)境做過(guò)很多壓測(cè),如果走磁盤一般肯定上秒,搜索性能絕對(duì)是秒
級(jí)別的,1秒、5秒、10秒。但如果是走filesystemcache,是走純內(nèi)存的,那么一般來(lái)
說(shuō)性能比走磁盤要高一個(gè)數(shù)量級(jí),基本上就是亳秒級(jí)的,從幾亳秒到幾百亳秒不等。
讓es性能要好,最佳的情況下,設(shè)置機(jī)器的內(nèi)存至少可以容納你的總數(shù)據(jù)量的一半。
根據(jù)我們自己的生產(chǎn)環(huán)境實(shí)踐經(jīng)驗(yàn),最佳的情況下,是僅僅在es中就存少量的數(shù)據(jù),就是
你要用來(lái)搜索的那些索引,如果內(nèi)存留給filesystemcache的是100G,那么你就將索引
數(shù)據(jù)控制在100G以內(nèi),這樣的話,你的數(shù)據(jù)幾乎全部走內(nèi)存來(lái)搜索,性能非常之高,一般
可以在1秒以內(nèi)。
數(shù)據(jù)預(yù)熱:對(duì)于用戶經(jīng)常訪問(wèn)的數(shù)據(jù),最好做一個(gè)專門的緩存預(yù)熱子系統(tǒng),就是對(duì)熱數(shù)據(jù)每
隔一段時(shí)間,就提前訪問(wèn)一下,讓數(shù)據(jù)進(jìn)入filesystemcache里面去,這樣下次用戶訪問(wèn)
的時(shí)候直接訪問(wèn)filesystemcache里面的索引數(shù)據(jù),加快用戶訪問(wèn)速度。
冷熱分離:es可以做類似于mysql的水平拆分,就是說(shuō)將大量的訪問(wèn)很少、頻率很低的
數(shù)據(jù),單獨(dú)寫一個(gè)索引,然后將訪問(wèn)很頻繁的熱數(shù)據(jù)單獨(dú)寫一個(gè)索引°最好是將冷數(shù)據(jù)寫入
一個(gè)索引中,然后熱數(shù)據(jù)寫入另外一個(gè)索引中,這樣可以確保熱數(shù)據(jù)在被預(yù)熱之后,盡量都
讓他們留在filesystemoscache里,別讓冷數(shù)據(jù)給沖刷掉。
冷熱分離舉例:假設(shè)你有6臺(tái)機(jī)器,2個(gè)索引,一個(gè)放冷數(shù)據(jù),一人放熱數(shù)據(jù),每個(gè)索引
3個(gè)shard。3臺(tái)機(jī)器放熱數(shù)據(jù)index,另外3臺(tái)機(jī)器放冷數(shù)據(jù)index,然后這樣的話,
你大量的時(shí)間是在訪問(wèn)熱數(shù)據(jù)index,熱數(shù)據(jù)可能就占總數(shù)據(jù)量的10%,此時(shí)數(shù)據(jù)量很少,
幾乎全都保留在filesystemcache里面了,就可以確保熱數(shù)據(jù)的訪問(wèn)性能是很高的。但是
對(duì)于冷數(shù)據(jù)而言,是在別的index里的,跟熱數(shù)據(jù)index不在相同的機(jī)器上,大家互相之
間都沒(méi)什么聯(lián)系了。如果有人訪問(wèn)冷數(shù)據(jù),可能大量數(shù)據(jù)是在磁盤上的,此時(shí)性能差點(diǎn),就
10%的人去訪問(wèn)冷數(shù)據(jù),90%的人在訪問(wèn)熱數(shù)據(jù),也無(wú)所謂了。
(14)生產(chǎn)環(huán)境使用es集群遇到哪些故障是怎么解決的?
有次我們運(yùn)維使用es集群遇到了一個(gè)outofmemuy錯(cuò)誤超出內(nèi)存使用錯(cuò)誤,我們分析了
原因是默認(rèn)情況下es對(duì)字段數(shù)據(jù)緩存(FieldDataCache)大小是無(wú)限制的,查詢時(shí)會(huì)把
字段值放到內(nèi)存,特別是facet查詢,對(duì)內(nèi)存要求非常高,它會(huì)把結(jié)果都放在內(nèi)存,然后進(jìn)
行排序等操作,一直使用內(nèi)存,直到內(nèi)存用完,當(dāng)內(nèi)存不夠用時(shí)就有可能出現(xiàn)。utofmemory
錯(cuò)誤。
解決方法是設(shè)置es的緩存類型為SoftReference它的主要特點(diǎn)是據(jù)有較強(qiáng)的引用功能。
只有當(dāng)內(nèi)存不夠的時(shí)候,才進(jìn)行回收這類內(nèi)存,因此在內(nèi)存足夠的時(shí)候,它們通常不被回收。
另外,這些引用對(duì)象還能保證在Java拋;HOutOfMemoiy異常之前,被設(shè)置為null。它可
以用于實(shí)現(xiàn)一些常用圖片的緩存,實(shí)現(xiàn)Cache的功能,保證最大限度的使用內(nèi)存而不引起
OutOfMemoryo具
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)內(nèi)部員工培訓(xùn)及技能提升服務(wù)合同范本
- 四月七日世界衛(wèi)生日2024主題活動(dòng)總結(jié)(6篇)
- 2025年農(nóng)業(yè)訂單種植與收購(gòu)協(xié)議書
- 2025年官方倉(cāng)庫(kù)租賃協(xié)議
- 2025年臨時(shí)演員在影視作品中的雇傭合同示例
- 2025年再婚配偶財(cái)產(chǎn)分配規(guī)定協(xié)議
- 2025版學(xué)生權(quán)益保護(hù)協(xié)議書
- 2025年交通基礎(chǔ)設(shè)施設(shè)計(jì)與施工合同協(xié)議
- 2025年全球電子商務(wù)合作協(xié)議
- 2025年設(shè)備采購(gòu)與租賃合同模版
- 2024年高考生物總復(fù)習(xí)高中生物必修一全冊(cè)重點(diǎn)知識(shí)梳理筆記(全冊(cè)完整版)
- 商業(yè)綜合體物業(yè)運(yùn)營(yíng)方案
- 鄉(xiāng)鎮(zhèn)衛(wèi)生院2025年度工作計(jì)劃
- 管理統(tǒng)計(jì)學(xué)課件
- 2024裝配式混凝土建筑工人職業(yè)技能標(biāo)準(zhǔn)
- 消火栓及自動(dòng)噴水滅火系統(tǒng)裝置技術(shù)規(guī)格書
- 軍隊(duì)文職(會(huì)計(jì)學(xué))考試(重點(diǎn))題庫(kù)200題(含答案解析)
- 北師大版八上《生物的遺傳和變異》
- 小兒急性喉炎護(hù)理查房
- 護(hù)理專業(yè)應(yīng)聘?jìng)€(gè)人簡(jiǎn)歷
- 北師大版二年級(jí)上冊(cè)100以內(nèi)加減法豎式計(jì)算題300道及答案
評(píng)論
0/150
提交評(píng)論