運維經典面試題


1、為什么我們要使用tomcat,類似的軟件有哪些?

 

因為Apache僅支持靜態網站,不能解析Java、Jsp,它們服務端口也不同Apache端口80  tomcat端口8080

 

類似的軟件有Weblogic (收費)Jboss(免費)Resin、Jetty

 

2、tomcat優化

 

內存優化:JAVA_OPTS='-Xms=256m -Xmx=1024m -Xmn=512m'

 

並發優化:maxProcessors=2000,最大處理線程數

 

maxSpareThreads=2000,tomcat連接器的最大空閑socket線程數

 

緩存優化:compressionMinSize=2048,啟動壓縮的輸出內容大小,默認2048

 

3、影響mysql主從不同步的因素可能有哪些?

 

網絡延遲

主從兩台機器的負載不一樣(單位時間內活躍的進程)

mysql異常宕機情況下,如果未設置sync_binlog=1或者innodb_flush_log_at_trx_commit=1很有可能出現binlog或者relaylog文件出現損壞,導致主從不一致

mysql本身的bug引起的主從不同步

mysql版本不一致

mysql的最大連接數用完了

4、MySQL主從同步的原理是什么?MySQL是通過什么來保證主從數據的同步?

 

同步原理:從服務器的IO線程從主服務器獲取bin-log二進制日志,並在本地保存為relay-log中繼日志,然后通過SQL線程來在從服務器上執行中繼日志中的內容,從而使從庫和主庫保持一致。

 

在slave上修改配置,通過binlog日志保證主從數據同步。

 

在master上修改配置參數:Innodb_flush_log_at_trx_commit = 1;Sync_binlog = 1

 

在slave上修改配置參數:Master_info_replication = “table”;

 

Relay_log_info_replication = “table”;Relay_log_recovery = 1

 

5、MySQL的主從復制過程是同步的還是異步的?

 

主從復制的過程是異步的復制過程,主庫完成寫操作並計入binlog日志中,從庫再通過請求主庫的binlog日志寫入relay中繼日志中,最后再執行中繼日志的sql語句。

 

6、存儲引擎InnoDB和MyISAM有什么區別?

 

主要差別:兩種類型最主要的差別就是InnoDB支持事務處理與外鍵和行級鎖,而MyISAM不支持。所以MyISAM往往就容易被人認為只適合在小項目中使用。

 

MyISAM的索引和數據是分開的,並且索引是有壓縮的,內存使用率高,能加載更多索引,而InnoDB是索引和數據是緊密捆綁的,沒有壓縮,體積比MyISAM大。

 

7、NGINX代理負載均衡的調度算法有哪些?具體實現時的現象是什么?

 

1.輪詢(默認):每個請求按時間順序逐一分配到不同的后端,如果后台某台服務器宕機,自動剔除故障系統,使用戶訪問不受影響,這種方式簡便,成本低,但是可靠性低,負載均衡不均衡,適用於圖片服務器集群和純靜態頁面服務器集群。

 

2.weight(權重):weight的值越大分配到訪問概率越高,主要用於后端每台服務器性能不均衡的情況下,或者僅僅為在主從的情況下設置不同的權值,達到合理有效的利用主機資源。

 

3.IP_HASH(訪問IP):每個請求按訪問的哈希結果分配,使來自同一個IP的訪問固定一台后端服務器,並且可以有效解決動態網頁存在的session的共享問題。

 

4.FAIR(第三方):比weight、ip_hash更加智能的負載均衡算法,fair算法可以根據頁面大小和加載時間長短智能的進行均衡負載,也就是根據后端服務器的響應時間來分配請求,響應時間短的優先分配。nginx本身不支持fair,如果需要這種調度算法,則需要安裝upstream_fair模塊。

 

5.URL_HASH(第三方):按訪問的URL的哈希結果來分配請求,使每個URL定向到一台后端服務器,可以進一步提高后端緩存服務器的效率。這種調度算法需要安裝nginx的hash軟件包 

 

8、為什么是四層的負載均衡,而不是其他層

 

在四層模式下,僅僅只是流量轉發或者是TCP的porxy。七層是full proxy,需要分析協議。顯然四層的轉發效率更快,但功能少了許多。MySQL的負載均衡僅僅只是發生在網絡層,所以選四層代理。

 

9、keepalived的工作原理是什么,使用的是什么協議?

 

keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協議。虛擬路由冗余協議,可以認為是實現路由器高可用的協議,即將N台提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據vrrp的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。

 

10、nginx的七層代理有什么好處?

 

   請求如果直接發到同步處理的后端,那么從收到請求到把響應發出去的這段時間中,一個進程的資源就被占用了。在慢鏈接的情況下,這個進程除了處理之外,大多數時間基本耗費在等待上,而nginx有異步非阻塞模型,它可以通過基於事件的方式同時處理和維護多個請求,而后端只需要做邏輯計算,節約了等待時間去處理更多的請求。

 

   動態頁面的IO性能不好,nginx可以將請求緩存下來,再將完整的請求轉發給后端服務器做處理,減少后端服務器的等待時間。

 

11、nginx upstream的容錯機制是怎么樣的(有台機器掛掉了,nginx怎么處理的)

 

   nginx收到客戶端的請求,將請求根據調度算法轉發給后台服務器,后台服務器防問被拒接或者返回錯誤信息。nginx將其暫停一段時間,在這段時間內不再將請求轉發給該服務器,並將請求轉發給后台的其他服務器響應。

 

12、瀏覽器中輸入域名回車后HTTP的請求是怎么進行的?

 

   http將請求發送給nginx代理,nginx將請求轉發給后台服務器,后台服務器接收請求,並返回信息給nginx,nginx收到后台服務器的信息后返回給http。

 

13、nginx如何配置多域名,防盜鏈

 

server {

       listen    80;

       server_name www.xxx.com mall.xxx.com img.xxx.com;

}

location / {

     valid_referers nono blocked mall.xxx.com;

     if ($invalid_referer){

     return 403;}

}

14、Apache、Nginx、Lighttpd都有哪些優缺點

 

   Apache特點:1)幾乎可以運行在所有的計算機平台上;2)支持最新的http/1.1協議;3)簡單而且強有力的基於文件的配置(httpd.conf);4)支持通用網關接口(cgi);5)支持虛擬主機;6)支持http認證,7)集成perl;8)集成的代理服務器;9)可以通過web瀏覽器監視服務器的狀態,可以自定義日志;10)支持服務器端包含命令(ssi);11)支持安全socket層(ssl);12)具有用戶繪畫過程的跟蹤能力;13)支持fastcgi;14)支持java servlets

 

   Nginx特點:nginx是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP代理服務器,處理靜態文件,索引文件以及自動索引,無緩存的反向代理加速,簡單的負載均衡和容錯,具有很高的穩定性,支持熱部署。

 

   Lighttpd特點:是一個具有非常低的內存開銷,CPU占用率低,效能好,以及豐富的模塊,Lighttpd是眾多opensource輕量級的webserver中較為優秀的一個,支持fastcgi,cgi,auth,輸出壓縮,url重寫,alias等重要功能。

 

15、什么是七層的負載均衡和4層的負載均衡,我們的訪問請求經過這兩種負載均衡都做了些什么處理?

 

   七層負載均衡是基於URL等應用層的負載均衡;請求經過七層時,七層負載均衡接受虛擬url請求,根據調度算法轉發請求到后台服務器

 

   四層負載均衡是基於IP+端口的負載均衡;請求經過四層時,四層負載均衡根據請求的IP和端口,根據調度算法將請求轉發到后台。

 

16、LVS的三種工作模式是什么?分別是如何工作的

 

   NAT模式(VS-NAT):LVS將客戶端發來的數據包的IP頭的目的地址轉換成其中一台RS(real server)的IP地址,由RS處理數據並返回給LVS,LVS再把數據包的源IP改為自己的IP,目的地址IP改為客戶端的IP地址發送給客戶端。

 

   IP隧道模式(VS-TUN):將客戶端發來的數據包封裝一個新的目的IP頭標記,通過IP隧道轉發給RS,RS收到后,先把數據包的頭解開,還原數據包,處理后直接返回給客戶端,不需要再經過LVS。

 

   DR模式(VS-DR):客戶端發送請求到VIP,LVS將請求報文的目標MAC地址改為RS的MAC地址,將請求轉發給RS,而RS響應后的處理結果直接返回給客戶端。

 

17、LVS、NGINX、HAPROXY的優缺點

 

LVS優點:具有很好的可伸縮性、可靠性、可管理性。抗負載能力強、對內存和CPU資源消耗比較低。工作在四層上,僅作分發,所以它幾乎可以對所有的應用做負載均衡,且沒有流量的產生,不會受到大流量的影響。

 

缺點:軟件不支持正則表達式處理,不能做動靜分離,如果web應用比較龐大,LVS/DR+KEEPALIVED實施和管理比較復雜。相對而言,nginx和haproxy就簡單得多。

 

nginx優點:工作在七層之上,可以針對http應用做一些分流的策略。比如針對域名、目錄結構。它的正則規則比haproxy更為強大和靈活。對網絡穩定性依賴非常小。理論上能PING就能進行負載均衡。配置和測試簡單,可以承擔高負載壓力且穩定。nginx可以通過端口檢測到服務器內部的故障。比如根據服務器處理網頁返回的狀態碼、超時等。並且可以將返回錯誤的請求重新發送給另一個節點,同時nginx不僅僅是負載均衡器/反向代理軟件。同時也是功能強大的web服務器,可以作為中層反向代理、靜態網頁和圖片服務器使用。

 

缺點:不支持URL檢測,僅支持HTTP和EMAIL,對session的保持,cookie的引導能力相對欠缺。

 

Haproxy優點:支持虛擬主機、session的保持、cookie的引導;同時支持通過獲取指定的url來檢測后端服務器的狀態。支持TCP協議的負載均衡;單純從效率上講比nginx更出色,且負載策略非常多。

 

缺點:擴展性能差;添加新功能很費勁,對不斷擴展的新業務很難對付。

 

18、DNS/智能DNS/CDN原理是什么?

 

DNS正向解析將客戶端請求的域名轉換成IP地址、反向解析將IP轉換成域名。

 

智能DNS在DNS的基礎上通過匹配客戶端的IP將請求分流到最近的服務器上,達到負載均衡。

 

CDN在DNS和智能DNS的基礎上,將客戶端的請求轉給后台真實服務器,返回給客戶端的同時,緩存到本地服務器上,下次客戶端再次訪問該頁面時直接將緩存返回給客戶端。

 

19、將本機80端口請求轉發到另外一台主機的8080端口

 

iptables -t nat -A PREROUTING -d 192.168.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:8080 

 

iptables -t nat -A POSTROUTING -d 192.168.1.2 -p tcp --dport 80 -j SNAT --to-source 192.168.1.1

 

20、如何將本地80端口的請求轉發到8080端口

 

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM