一、爲何咱們要使用tomcat,相似的軟件有哪些?java
由於Apache僅支持靜態網站,不能解析Java、Jsp,它們服務端口也不一樣Apache端口80 tomcat端口8080mysql
相似的軟件有Weblogic (收費)Jboss(免費)Resin、Jettynginx
二、tomcat優化web
內存優化:JAVA_OPTS='-Xms=256m -Xmx=1024m -Xmn=512m'正則表達式
併發優化:maxProcessors=2000,最大處理線程數算法
maxSpareThreads=2000,tomcat鏈接器的最大空閒socket線程數sql
緩存優化:compressionMinSize=2048,啓動壓縮的輸出內容大小,默認2048後端
三、影響mysql主從不一樣步的因素可能有哪些?瀏覽器
網絡延遲緩存
主從兩臺機器的負載不同(單位時間內活躍的進程)
mysql異常宕機狀況下,若是未設置sync_binlog=1或者innodb_flush_log_at_trx_commit=1頗有可能出現binlog或者relaylog文件出現損壞,致使主從不一致
mysql自己的bug引發的主從不一樣步
mysql版本不一致
mysql的最大鏈接數用完了
四、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
五、MySQL的主從複製過程是同步的仍是異步的?
主從複製的過程是異步的複製過程,主庫完成寫操做並計入binlog日誌中,從庫再經過請求主庫的binlog日誌寫入relay中繼日誌中,最後再執行中繼日誌的sql語句。
六、存儲引擎InnoDB和MyISAM有什麼區別?
主要差異:兩種類型最主要的差異就是InnoDB支持事務處理與外鍵和行級鎖,而MyISAM不支持。因此MyISAM每每就容易被人認爲只適合在小項目中使用。
MyISAM的索引和數據是分開的,而且索引是有壓縮的,內存使用率高,能加載更多索引,而InnoDB是索引和數據是緊密捆綁的,沒有壓縮,體積比MyISAM大。
七、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軟件包
八、爲何是四層的負載均衡,而不是其餘層
在四層模式下,僅僅只是流量轉發或者是TCP的porxy。七層是full proxy,須要分析協議。顯然四層的轉發效率更快,但功能少了許多。MySQL的負載均衡僅僅只是發生在網絡層,因此選四層代理。
九、keepalived的工做原理是什麼,使用的是什麼協議?
keepalived是以VRRP協議爲實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。虛擬路由冗餘協議,能夠認爲是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裏面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其餘機器的默認路由爲該vip),master會發組播,當backup收不到vrrp包時就認爲master宕掉了,這時就須要根據vrrp的優先級來選舉一個backup當master。這樣的話就能夠保證路由器的高可用了。
十、nginx的七層代理有什麼好處?
請求若是直接發到同步處理的後端,那麼從收到請求到把響應發出去的這段時間中,一個進程的資源就被佔用了。在慢連接的狀況下,這個進程除了處理以外,大多數時間基本耗費在等待上,而nginx有異步非阻塞模型,它能夠經過基於事件的方式同時處理和維護多個請求,然後端只須要作邏輯計算,節約了等待時間去處理更多的請求。
動態頁面的IO性能很差,nginx能夠將請求緩存下來,再將完整的請求轉發給後端服務器作處理,減小後端服務器的等待時間。
十一、nginx upstream的容錯機制是怎麼樣的(有臺機器掛掉了,nginx怎麼處理的)
nginx收到客戶端的請求,將請求根據調度算法轉發給後臺服務器,後臺服務器防問被拒接或者返回錯誤信息。nginx將其暫停一段時間,在這段時間內再也不將請求轉發給該服務器,並將請求轉發給後臺的其餘服務器響應。
十二、瀏覽器中輸入域名回車後HTTP的請求是怎麼進行的?
http將請求發送給nginx代理,nginx將請求轉發給後臺服務器,後臺服務器接收請求,並返回信息給nginx,nginx收到後臺服務器的信息後返回給http。
1三、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;}
}
1四、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等重要功能。
1五、什麼是七層的負載均衡和4層的負載均衡,咱們的訪問請求通過這兩種負載均衡都作了些什麼處理?
七層負載均衡是基於URL等應用層的負載均衡;請求通過七層時,七層負載均衡接受虛擬url請求,根據調度算法轉發請求到後臺服務器
四層負載均衡是基於IP+端口的負載均衡;請求通過四層時,四層負載均衡根據請求的IP和端口,根據調度算法將請求轉發到後臺。
1六、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響應後的處理結果直接返回給客戶端。
1七、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更出色,且負載策略很是多。
缺點:擴展性能差;添加新功能很費勁,對不斷擴展的新業務很難對付。
1八、DNS/智能DNS/CDN原理是什麼?
DNS正向解析將客戶端請求的域名轉換成IP地址、反向解析將IP轉換成域名。
智能DNS在DNS的基礎上經過匹配客戶端的IP將請求分流到最近的服務器上,達到負載均衡。
CDN在DNS和智能DNS的基礎上,將客戶端的請求轉給後臺真實服務器,返回給客戶端的同時,緩存到本地服務器上,下次客戶端再次訪問該頁面時直接將緩存返回給客戶端。
1九、將本機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