標籤:運維面試積累css
1.dns工做原理是什麼:html
1.假如客戶機訪問www.qq.com,操做系統會先檢查本身本地的HOSTS文件是否有這個網站的映射關係,若是有直接調用,完成域名解析前端
2.若是HOSTS沒有,則查找本地的DNS解析緩存,若是有該記錄,則直接返回,完成域名解析。node
3.若是本地緩存中沒有,首先會找TCP/IP參數中設置的首選DNS服務器,在此叫它本地DNS服務器,此服務器收到查詢時,若是要查詢的域名,包含在本地配置區的資源中,則返回解析結果給客戶機,完成域名解析。linux
4.若是都查詢失敗了,本地DNS會把請求發至13臺跟DNS,根DNS判斷這個域名是誰來受權管理,並會返還一個負責該頂級域名服務器的IP(好比。com)。本地DNS收到IP後,將會聯繫負責.com域的這臺服務器,若是本身沒法解析,會推送到二級域進行查詢,直到找到主機。nginx
5.本地域名服務器把返回的結果緩存,備下一次使用,同事將結果返回給客戶機web
2.DNS遞歸查詢和迭代查詢的區別是什麼:面試
遞歸查詢: 通常客戶機和服務器之間屬遞歸查詢,即當客戶機向DNS服務器發出請求後,若DNS服務器自己不能解析,則會向另外的DNS服務器發出查詢請求,獲得結果後轉交給客戶機。redis
迭代查詢(反覆查詢): 通常DNS服務器之間屬迭代查詢,如:若DNS2不能響應DNS1的請求,則它會將DNS3的IP給DNS2,以便其再向DNS3發出請求。算法
3.半虛擬與全虛擬的區別:
半虛擬:半虛擬化是經過事先通過修改的客戶機操做系統內核共享宿主底層硬件來實現的,優勢是半虛擬化的虛擬機操做系統內核可以直接管理底層硬件,性能比全虛擬化技術更強,缺點是客戶機操做系統內核須要事先進行修改,部署的便利性和靈活性都不夠,兼容性不夠好。
全虛擬:全虛擬化是經過客戶機和宿主機直接的一個虛擬化邏輯層hypervisor來徹底模擬底層硬件細節,優勢是客戶機的操做系統內核不須要作特殊配置,部署便利,靈活,兼容性好,缺點是客戶機操做系統的內核不可以直接管理底層硬件,內核經過hypervisor管理底層硬件須要有轉換開銷,性能比半虛擬化略弱。
Kvm是 半虛擬。 Xen和vmware是全虛擬。
4.OSI七層參考模型
應用層 表示層 會話層 傳輸層 網絡層 數據鏈路層 物理層
每層含義訪問:http://blog.csdn.net/youmu2010/article/details/6434867
5.nginx爲何能夠處理高併發
Nginx 不一樣於 Apache2 的一點就是,Nginx 採用單線程,非阻塞,異步 IO 的工做模型。
Apache2 對於每個請求,都會建立一個新進程或線程,會浪費不少內存和 CPU 時間,而 Nginx 使用操做系統提供的IO多路複用技術(epoll), 在一個線程中處理全部的請求。當一個 IO 操做開始的時候,Nginx 不會等待操做完成就會去處理下一個請求,等到某個 IO 操做完成後,Nginx 再回過頭去處理此次 IO 的後續工做。
6.nginx和apache誰處理靜態塊:
nginx處理靜態快,apache處理動態快。
7.http協議
http是應用層的面相對象的協議,全稱是超文本傳輸協議,是客戶端與服務器通訊的協議,採用請求/響應的模式,最經常使用的有GET和POST請求
8.軟鏈接與硬連接的區別:
若一個 inode 號對應多個文件名,則稱這些文件爲硬連接。所以,刪除一個硬連接文件並不影響其餘有相同 inode 號的文件。硬連接不能對目錄進行建立,只可對文件建立。
軟鏈接能夠理解爲windows下的快捷方式
9.請求一個網站的過程
域名解析 --> 發起TCP的3次握手 --> 創建TCP鏈接後發起http請求 --> 服務器響應http請求,瀏覽器獲得html代碼 --> 瀏覽器解析html代碼,並請求html代碼中的資源(如js、css、圖片等) --> 瀏覽器對頁面進行渲染呈現給用戶
10.linux中文件權限t和s分別是什麼意思
suid的設置出如今文件擁有者的x位置上,若是以前用戶有x權限,設置suid後,x就會成爲s(小寫的s);若是以前沒有x權限,即-,設置以後就會成爲S(大寫S)。
這個腳本的所屬主和所屬組爲root。咱們固然能夠以root的用戶的身份執行它,可是若是在某種場合,普通用戶也須要執行這個腳原本修改本身的密碼的時候,也須要調用這個腳本,因而,咱們設置了suid位,也就是咱們看到的那樣,在所屬主的標誌位上有個s。這樣一來,其餘人有讀取和執行的權限,並且能夠假如咱們如今有個普通用戶名爲sunny,如今切換到sunny,執行此腳本,表面上咱們看是執行成功了,其實咱們是藉助root用戶的身份來執行它的,而不是sunny,這就是suid的做用。
T或T(Sticky):/tmp和 /var/tmp目錄供全部用戶暫時存取文件,亦即每位用戶皆擁有完整的權限進入該目錄,去瀏覽、刪除和移動文件。
11.top命令第三行都是什麼含義
6.7% us — 用戶空間佔用CPU的百分比。
0.4% sy — 內核空間佔用CPU的百分比。
0.0% ni — 改變過優先級的進程佔用CPU的百分比
92.9% id — 空閒CPU百分比
0.0% wa — IO等待佔用CPU的百分比
0.0% hi — 硬中斷(Hardware IRQ)佔用CPU的百分比
0.0% si — 軟中斷(Software Interrupts)佔用CPU的百分比
靜態查看的話可查看/proc/stat和/proc/loadavg顯示處理器使用率和平均CPU使用率
12.netstat和ps的區別
netstat查看端口相關信息
ps查看當前正在運行的進程信息
13.寫一條iptables容許192.168.0.3這個IP訪問22端口
iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
14.SNAT和DNAT的區別:
SNAT:開放內網機器外網權限
DNAT:發佈內部服務器,讓外面的用戶能訪問到服務器。
資料參考:http://blog.chinaunix.net/uid-7411781-id-3442250.html
15.iptables設置作nat轉發的步驟
首先開啓內核轉發的模塊。
echo 1 > /porc/sys/net/ipv4/ip_forward #這是個暫時的作法,重啓後就會失效,好的作法是:
vi /etc/sysctl.conf
修改其中的net.ipv4.ip_forward = 1
DNS的配置在/etc/resolv.conf中添加DNS的IP便可
而後要讓它當即生效,須要執行命令:
sysctl -p
第二步添加NAT:
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
#這條命令裏的 eth0表明外網接口,-s 192.168.10.0/24表明內網段
16.網頁返回常見狀態碼
200表示服務器成功處理請求。
201請求成功而且服務器建立了新的資源。
202服務器已經接受請求,但還沒有處理。
400服務器不理解請求的語言,請求錯誤。
401身份驗證錯誤
403服務器拒絕請求
404找不到網頁
500服務器內部錯誤
502錯誤網關
503服務器不可用。
504網關超時
505服務器不支持請求中所用的http協議版本
參考網頁:http://www.cnblogs.com/captain_jack/archive/2010/09/20/1831792.html
17.lvs、nginx、haproxy的區別
lvs優點:
1.抗負載能力強,工做在4層
2.工做穩定
3.無流量。lvs僅僅分發請求,而流量並不從它自己出去(dr)
4.基本支持全部應用。由於lvs工做在4層,因此它能夠對幾乎全部應用作負載均衡
nginx:
1.nginx工做在網絡的7層,因此它能夠針對http應用自己來作分流策略,好比針對域名、目錄結構等。
2.nginx也一樣能承受很高負載且穩定,但負載度和穩定度差lvs還有幾個等級:nginx處理全部流量因此受限於機器IO和配置
3.nginx能夠檢測到服務器內部的故障,好比根據服務器處理網頁返回的狀態碼、超時等等,而且會把返回錯誤的請求從新提交到另外一個節點。
在使用上,通常最前端所採起的策略應是lvs,也就是DNS的指向應爲lvs均衡器,lvs的優勢令它很是適合作這個任務。
重要的ip地址,最好交由lvs託管,好比數據庫的ip、webservice服務器的ip等等,這些ip地址隨着時間推移,使用面會愈來愈大,若是更換ip則故障會接踵而至。因此將這些重要ip交給lvs託管是最爲穩妥的,這樣作的惟一缺點是須要的VIP數量會比較多。
nginx可做爲lvs節點機器使用,一是能夠利用nginx的功能,二是能夠利用nginx的性能。固然這一層面也能夠直接使用squid,squid的功能方面就比nginx弱很多了,性能上也有所遜色於nginx。
nginx也可做爲中層代理使用,這一層面nginx基本上無對手,惟一能夠撼動nginx的就只有lighttpd了,不過lighttpd目前尚未 能作到nginx徹底的功能,配置也不那麼清晰易讀。另外,中層代理的IP也是重要的,因此中層代理也擁有一個VIP和lvs是最完美的方案了。
haproxy:
一、HAProxy是工做在網絡7層之上。
二、可以補充Nginx的一些缺點好比Session的保持,Cookie的引導等工做
三、支持url檢測後端的服務器出問題的檢測會有很好的幫助。
4.單純從效率上來說HAProxy更會比Nginx有更出色的負載均衡速度。
五、HAProxy能夠對Mysql進行負載均衡,對後端的DB節點進行檢測和負載均衡。
如今網站發展的趨勢對網絡負載均衡的使用是隨着網站規模的提高根據不一樣的階段來使用不一樣的技術:
第一階段:利用Nginx或者HAProxy進行單點的負載均衡,這一階段服務器規模剛脫離開單服務器、單數據庫的模式,須要必定的負載均衡,可是 仍然規模較小沒有專業的維護團隊來進行維護,也沒有須要進行大規模的網站部署。這樣利用Nginx或者HAproxy就是第一選擇,此時這些東西上手快, 配置容易,在七層之上利用HTTP協議就能夠。這時是第一選擇
第二階段:隨着網絡服務進一步擴大,這時單點的Nginx已經不能知足,這時使用LVS或者商用F5就是首要選擇,Nginx此時就做爲LVS或者 F5的節點來使用,具體LVS或者F5的是選擇是根據公司規模,人才以及資金能力來選擇的,這裏也不作詳談,可是通常來講這階段相關人才跟不上業務的提 升,因此購買商業負載均衡已經成爲了必經之路。
第三階段:這時網絡服務已經成爲主流產品,此時隨着公司知名度也進一步擴展,相關人才的能力以及數量也隨之提高,這時不管從開發適合自身產品的定製,以及下降成原本講開源的LVS,已經成爲首選,這時LVS會成爲主流。
最終造成比較理想的狀態爲:F5/LVS<—>Haproxy<—>Squid/Varnish<—>AppServer。
18.經常使用的調度算法有什麼:
1.輪叫調度
2.加權輪叫調度
3.最小鏈接調度
4.加權最小鏈接調度
19.lvs的三種路由方式
LVS-NAT:地址轉換
LVS-DR:直接路由
LVS-TUN:隧道
詳情參考:http://www.cnblogs.com/lixigang/p/5371815.html
20.redis兩種持久化的區別
優勢:
1.只有一個文件dump.rdb,方便持久化。
2.容災性好,一個文件能夠保存到安全的磁盤。
3.性能最大化,fork子進程來完成寫操做,讓主進程繼續處理命令,因此是IO最大化。
4.相對於數據集大時,比AOF的啓動效率更高。
缺點:
1.數據安全性低,當服務器還在等待寫快照時出現了宕機,那麼將會丟失數據。
AOF持久化是指全部的命令行記錄以redis命令請求協議的格式保存爲aof文件。
優勢:
1.數據安全,每進行一次命令操做就記錄到aof文件中一次;
2.經過append模式寫文件,即便中途服務器宕機,能夠經過redis-check-aof工具解決數據一致性問題。
3.AOF機制的rewrite模式,用來將過大的aof文件縮小,
缺點:
1.文件會比RDB形式的文件大。
2.數據集大的時候,比rdb啓動效率低。
21.linux文件刪除原理
linux是經過link數量控制文件刪除,通常來講,每一個文件都有兩個計數器:i_link和i_count
i_link是文件的硬連接數。 i_count是文件被進程調用數
只要i_link和i_count同時爲0時,文件纔回被刪除。
rm刪除的是文件的i_link數
22.linux系統的啓動過程
1.加載BIOS
2.讀取MBR
3.Boot Loader
4.加載內核
5.用戶層init根據inittab文件來設定運行級別
6.init進程執行rc.sysinit
7.啓動內核模塊
8.執行不一樣運行級別的腳本程序
9.執行/etc/rc.d/rc.local
10.執行/bi/login程序,進入登錄狀態
詳細參考:http://blog.chinaunix.net/uid-26495963-id-3066282.html
23.top命令右上角的load average的值是什麼意思,高於多少表明負載有問題
拆分出四個內容 :
1. load average(系統平均負載)是什麼?
系統平均負載被定義爲在特定時間間隔內運行隊列中(在CPU上運行或者等待運行多少進程)的平均進程數.
2. load average的三個數值表明什麼?
經過top\uptime\w能夠獲取到load average的值,它的三個數字值分別記錄了一分鐘\五分鐘\十五分鐘的系統平均負載.
3. 高於多少負載有問題?
高於多少表明負載有問題呢,這裏有兩個法則:
「有多少核心即爲有多少負荷」法則: 在多核處理中,你的系統均值不該該高於處理器核心的總數量。
「核心的核心」法則: 核心分佈在分別幾個單個物理處理中並不重要,其實兩顆四核的處理器 等於 四個雙核處理器 等於 八個單處理器。因此,它應該有八個處理器內核。
4. 咱們以哪一個數字爲準?一分鐘?五分鐘?仍是十五分鐘?
我認爲你應該着眼於五分鐘或者十五分鐘的平均數值。坦白講,若是前一分鐘的負載狀況是 1.00,那麼仍能夠說明認定服務器狀況仍是正常的。 可是若是十五分鐘的數值仍然保持在 1.00,那麼就值得注意了(根據個人經驗,這時候你應 該增長的處理器數量了).
翻譯爲: 當一個網站訪問慢時, 你都是怎麼去查找問題,和解決問題以達到優化效果的
第一,用5分鐘排除網絡因素,藉助工具(如pagespeed)分析頁面加載過程
1. 某個元素或者圖片加載過慢: 具體緣由具體分析
2. DNS解析時長問題: 能夠經過購買解析服務, 來讓本身的域名在各地DNS更多緩存
3. 網絡帶寬瓶頸: 考慮增長帶寬
4. 網絡線路波動: 考慮CDN,或者鏡像站
第二,要考慮到服務器問題
1. 是否有服務器過載: 考慮增長硬件
2. I/O操做:數據庫的頻繁讀寫,服務器的頻繁請求(包括靜態文件的讀取,圖片的讀取)等都屬於I/O問題。對於數據庫的問題,首先要優化SQL,存儲過程等。若是單表數據量過大要考慮作分割或者運用程序來控制分表。若是請求量過大,要考慮作集羣。對於服務器(靜態)文件的I/O問題,則能夠考慮作CDN,這樣也能夠解決地域性問題。對於動態文件的訪問,則涉及到代碼優化及負載均衡兩項。
3. 具體應用優化: nginx針對訪問量修改配置文件,調高Buffers 調低keep alive空鏈接時間等
第三,安全方面
1. 查看web\mail等其它服務日誌,是否存在被***現象: 針對安全方面加固
2. 是否有其它***存在DDOS,WEB CC等
25.進程和線程的區別
翻譯: 進程和線程的概念
進程(英語:process),是計算機中已運行程序的實體。進程是程序的基本執行實體,進程自己不是基本運行單位,而是線程的容器
線程(英語:thread)是操做系統可以進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運做單位。一條線程指的是進程中一個單一順序的控制流,一個進程中能夠併發多個線程,每條線程並行執行不一樣的任務。
① 進程是系統進行資源分配的基本單位,有獨立的內存地址空間; 線程是CPU調度的基本單位,沒有單獨地址空間,有獨立的棧,局部變量,寄存器, 程序計數器等。
② 建立進程的開銷大,包括建立虛擬地址空間等須要大量系統資源; 建立線程開銷小,基本上只有一個內核對象和一個堆棧。
③ 一個進程沒法直接訪問另外一個進程的資源;同一進程內的多個線程共享進程的資源。
④ 進程切換開銷大,線程切換開銷小;進程間通訊開銷大,線程間通訊開銷小。
⑤ 線程屬於進程,不能獨立執行。每一個進程至少要有一個線程,成爲主線程
26.經常使用的RAID原理
RAID 0連續以位或字節爲單位分割數據,並行讀/寫於多個磁盤上,所以具備很高的數據傳輸率,但它沒有數據冗餘,所以並不能算是真正的RAID 結構。RAID 0 只是單純地提升性能,並無爲數據的可靠性提供保證,並且其中的一個磁盤失效將影響到全部數據。所以,RAID 0 不能應用於數據安全性要求高的場合。
RAID 1它是經過磁盤數據鏡像實現數據冗餘,在成對的獨立磁盤上產生互爲備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,所以RAID 1 能夠提升讀取性能。RAID 1是磁盤陣列中單位成本最高的,但提供了很高的數據安全性和可用性。當一個磁盤失效時,系統能夠自動切換到鏡像磁盤上讀寫,而不須要重組失效的數據。簡單來講就是:鏡象結構,相似於備份模式,一個數據被複制到兩塊硬盤上。
RAID 10高可靠性與高效磁盤結構一個帶區結構加一個鏡象結構,由於兩種結構各有優缺點,所以能夠相互補充。主要用於容量不大,但要求速度和差錯控制的數據庫中。
RAID 5分佈式奇偶校驗的獨立磁盤結構,它的奇偶校驗碼存在於全部磁盤上,任何一個硬盤損壞,均可以根據其它硬盤上的校驗位來重建損壞的數據。支持一塊盤掉線後仍然正常運行。
27.有沒有作過性能調優
這個是個大的話題,要反問是應用調優仍是系統調優 沒有進行過調優,基本調優步驟:
1. 找出系統性能瓶頸(包括硬件瓶頸和軟件瓶頸);
2. 性能優化的方案(升級硬件?改進系統系統結構?);
3. 達到合理的硬件和軟件配置;
4. 使系統資源使用達到最大的平衡。
當時是面試官讓我把具體命令說出來, 也就是看看知道一些處理文本的命令嘛.其實不難:
1 |
cat logfile |cut -d ' ' -f 5 |sort |uniq -c | sort -nr | head -n 10 |less |
cut命令負責將文本以空格分開,取第五列數據==>
排序==> 去重並統計次數(-c參數就是統計參數)==> 再次排序(統計次數會被寫在IP以前, 因此這裏是按統計次數排序 sort的-r是逆序就是從大到小,-n爲按數字排序主要是sort默認排序極可能會把10判斷爲比2還小,經過-n就不會出現這個狀況)==> 取次數最多的10條
① 源站
源站指發佈內容的原始站點。添加、刪除和更改網站的文件,都是在源站上進行的;另外緩存服務器所抓取的對象也所有來自於源站。
② 緩存服務器
緩存服務器是直接提供給用戶訪問的站點資源,有一臺或數臺服務器組成;當用戶發起訪問時,他的訪問請求被智能DNS定位到離他較近的緩存服務器。若是用戶所請求的內容恰好在緩存裏面,則直接把內容返還給用戶;若是訪問所需的內容沒有被緩存,則緩存服務器向鄰近的緩存服務器或直接向源站抓取內容,而後再返還給用戶。
③ 智能DNS
智能DNS是整個CDN技術的核心,它主要根據用戶的來源,將其訪問請求指向離用戶比較近的緩存服務器,如把廣州電信的用戶請求指向到廣州電信IDC機房中的緩存服務器。經過智能DNS解析,讓用戶訪問同服務商下的服務器,消除國內南北網絡互相訪問慢的問題,達到加速做用。智能DNS的出現,顛覆了傳統的一個域名對應一個鏡像的作法,讓用戶更加便捷的去訪問網站。
緩存服務器中有訪問內容:
客戶端請求 ==> 智能DNS解析到最近的緩存服務器 ==> 緩存服務器返回請求資源
緩存服務器中無訪問內容:
客戶端請求 ==> 智能DNS解析到最近的緩存服務器 ==> 緩存服務器發現沒有客戶端請求資源,向源站請求 ==> 源站返回資源到緩存服務器 ==> 緩存服務器返回客戶端請求資源
查看:http://coolk.blog.51cto.com/1752609/1707382
系統加載網卡驅動後會去讀一個文件,這個文件是一個緩存文件,包含了網卡的mac地址,由於更換了主板,網卡的mac也變更了,可是這個文件的mac仍是沒有變,因此現有的網卡mac地址和文件裏的不一樣,因此係統就拒絕啓動,把這個文件刪除後重啓系統就能夠了 操做爲下:
>#mv /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.bak
>#reboot #重啓後會生成新的緩存文件
32.將/opt目錄中建立時間超過7天的文件壓縮成tar.ge格式
find /opt -type f -mtime +7 -name ‘*’ -exec tar -zxvf {}.tar.gz {}\;
-amin n
查找系統中最後N分鐘訪問的文件
-atime n
查找系統中最後n*24小時訪問的文件
-cmin n
查找系統中最後N分鐘被改變文件狀態的文件
-ctime n
查找系統中最後n*24小時被改變文件狀態的文件
-mmin n
查找系統中最後N分鐘被改變文件數據的文件
-mtime n
查找系統中最後n*24小時被改變文件數據的文件
33.2016-09-09 13:30:28這個日期用命令怎麼表示
data +「%Y-%m-%d %H:%M:%S」
詳細參考data命令地址:http://blog.csdn.net/runming918/article/details/7223520
34.天天中午12點使用tcpdump命令抓取目的端口爲TCP 80的1000個包輸出到當前目錄並以當前時間命名.請寫出定時任務及腳本內容.
待補全
35.簡述非對稱加密算法工做過程。
非對稱密鑰加密體制,又稱爲公鑰密碼體制、雙密鑰密碼體制。它是指對信息加密和解密時所使用的密鑰是不一樣的,即有兩個密鑰,一個是能夠公開的,另外一個是私有的,這兩個密鑰組成一對密鑰對,分別爲公開密鑰和私有密鑰。若是使用其中一個密鑰對數據進行加密,則只有用另一個密鑰才能解密。因爲加密和解密時所使用的密鑰不一樣,這種加密體制稱爲非對稱密鑰加密體制。 在公開密鑰算法中,用公開的密鑰進行加密,用私有密鑰進行解密的過程,稱爲加密。而用私有密鑰進行加密,用公開密鑰進行解密的過程稱爲認證。