国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Tomcat面試題+http面試題+Nginx面試題+常見面試題

這篇具有很好參考價值的文章主要介紹了Tomcat面試題+http面試題+Nginx面試題+常見面試題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Tomcat面試題

1、Tomcat的缺省端口是多少?怎么修改? 答:缺省端口是8080,若要修改,可以進入Tomcat的安裝目錄下找到conf目錄下的server.xml文件,找到該文件中的Connector字段中的port。 2、Tomcat有哪幾種connector運行模式(服務的請求方式)? 答:三種。修改它的運行模式需要在主配置文件中找到connector字段中的protocol進行修改

這三種不同運行模式的性能相差很大,具體如下:

BIO:阻塞型I/O操作,一個線程處理一個請求。缺點:并發(fā)量高時,線程數(shù)較多,浪費資源。Tomcat7或以下,默認使用這種方式。
NIO:基于緩沖區(qū),能提供非阻塞I/O操作,和傳統(tǒng)的BIO相比,具備更好的抗并發(fā)性能;
APR(Apache portable run-time libraries):簡單理解,就是從操作系統(tǒng)級別解決異步IO問題,大幅度的提高服務器的處理和相應性能,也是Tomcat運行高并發(fā)的首選模式,在Linux中需要安裝APR動態(tài)庫才可以使用這種模式。

復制

3、如何避免用戶在訪問一個不存在的頁面時,Tomcat將其詳細版本信息返回給用戶。 答:解決辦法就是將404狀態(tài)碼進行重定向,以便我們自定義返回的頁面信息。 4、優(yōu)化tomcat可以從哪些方面著手?

答:
1、內(nèi)存優(yōu)化;
2、線程池的優(yōu)化
3、禁用DNS查詢;
4、開啟日志切割功能;
5、關(guān)閉404錯誤返回的版本信息;

復制

————————————————————————————————————————————————————————————————————————————————————————————————————————

httpd服務面試題

1、請說一下你對httpd服務的了解? 答:Apache是一個模塊化服務,支持的模塊比較多,采用servlet處理模型,同步阻塞模型,工作模式多變,對于高并發(fā)的場景處理速度會比較慢,運行穩(wěn)定。支持異步讀寫,可以通過正則表達式做動靜分離。

2、httpd服務的三種工作模式你了解多少? 答:httpd有三種工作模式。

prefork:預派生子進程 prefork模式可以算是很古老但是很穩(wěn)定的模式。httpd服務在剛啟動時,就會fork出一些子進程(默認為5個),一個子進程對應一個線程,然后等待request進來,并且總是試圖保持一些空閑的子進程,之所以這樣做,是為了減少頻繁創(chuàng)建和銷毀進程的開銷。在同一個時間點內(nèi),一個線程只能處理一個進程。

worker工作模式 worker模式和prefork模式比起來,是使用了多進程+多線程的模式,它也是預先fork了幾個子進程,每個子進程能夠生成一些服務線程和一個監(jiān)聽線程,該監(jiān)聽線程及接入請求并傳遞給服務線程處理和應答。worker工作模式占用的內(nèi)存較少,在高并發(fā)下表現(xiàn)還算優(yōu)異。不過必須要考慮線程安全的問題,因為多個子進程是共享父進程的內(nèi)存地址的。如果使用keep-alive的長連接方式,也許中間幾乎沒有請求,這是就會發(fā)生阻塞,線程被掛起,需要一直等待到超時才會被釋放。如果過多的線程,就這樣被占據(jù),也會導致在高并發(fā)場景下的無服務線程可用。(該問題同樣會發(fā)生在prefork模式)。

event工作模式 這是Apache最新的工作模式,它和worker模式很像,最大的區(qū)別在于,它解決了keep-alive場景下,線程被長期被占用的的資源浪費問題。

event工作模式中,會有一個專門的線程來管理這些keep-alive類型的線程,當有真實請求過來的時候偶,將請求傳遞給服務線程,執(zhí)行完畢后,又允許它釋放。這樣,一個線程就能處理多個請求了,實現(xiàn)異步非阻塞。

event工作模式在遇到某些不兼容的模塊時,它會失效,并退回到worker模式,一個工作線程處理一個請求。官方自帶的模塊,全部都是支持event工作模式的。

3、可以從哪幾個方面著手優(yōu)化httpd? 合理配置其進程及線程數(shù); 開啟httpd的deflate壓縮功能; 開啟expires緩存功能; 禁止httpd進行目錄遍歷; 隱藏httpd的版本信息; 開啟日志切割功能; 配置防盜鏈; ————————————————————————————————————————————————————————————————————————————————————————————————————————————

Nginx面試題

1、缺省安裝的Nginx+php-fpm環(huán)境,假設用戶瀏覽一個耗時的網(wǎng)頁,但是卻在服務端渲染頁面的中途中關(guān)閉了瀏覽器,那么請問服務端的PHP腳本是繼續(xù)執(zhí)行還是退出執(zhí)行? 答:正常情況下,如果client異常退出了,Server端的程序還是會繼續(xù)執(zhí)行,直到與IO進行了兩次交互操作。Server端發(fā)現(xiàn)client端已經(jīng)斷開連接,這個時候會出發(fā)一個User_abort,如果這個沒有設置ignore_user_abort,那么這個php-fpm的程序才會被中斷。

2、nginx是如何實現(xiàn)高并發(fā)的? 答:nginx之所以可以實現(xiàn)高并發(fā),與它采用的epoll模型有很大的關(guān)系。epoll模型采用異步非阻塞的事件處理機制。這種機制可讓nginx進程同時監(jiān)控多個事件。

簡單來說,就是異步非阻塞,使用了epoll模型和大量的底層代碼優(yōu)化。如果深入一點的話,就是nginx的特殊進程模型和事件模型的設計,才使其可以實現(xiàn)高并發(fā)。

進程模型

它是采用一個master進程和多個worker進程的工作模式。
1、master進程主要負責收集、分發(fā)請求。當一個請求過來時,master拉起一個worker進程負責處理這個請求。;
2、master進程也要負責監(jiān)控worker的狀態(tài),保證高可靠性;
3、worker進程議案設置為和CPU核心數(shù)一致或者其二倍。nginx的worker進程和Apache的不一樣。apache的進程在同一時間只能處理一個請求,所以它會開啟很多個進程,幾百甚至幾千個。而nginx的worker進程在同一時間可以處理的請求數(shù)只受內(nèi)存限制,因此可以處理更多請求。

復制

事件模型 nginx是異步非阻塞的。

一個master進程,多個worker進程,每個worker進程可以處理多個請求。每進來一個request,都會有worker進程去處理。但不是全程的處理,那么處理到的程度就是可能發(fā)生阻塞的地方,比如向后端服務器轉(zhuǎn)發(fā)request,并等待請求返回。那么,在等待期間,這個處理的worker不會這么傻等著,他會在發(fā)送完請求后,注冊一個事件:“如果upstream返回了,告訴我一聲,我再接著干”。于是它就去休息了,此時,如果再有request進來,它就可以很快再按這種方式處理。而一旦后端服務器返回了,就會觸發(fā)這個事件,worker才會來接手,這個request才會接著往下走。 由于nginx的的這個工作性質(zhì)決定了每個請求大部分的生命都是在網(wǎng)絡傳輸中,所以實際上花費在nginx 服務器上的時間并不多,這就是它幾進程就能解決高并發(fā)的秘密所在。

3、已知nginx和php-fpm安裝在同一臺服務器上,nginx連接php-fpm有兩種方式:一種是類似127.0.0.1:9000的TCP socket,另一種是類似/tmp/php-fpm.sock的Unix domain socket,請問如何選擇?需要注意什么? Unix domain socket的流程不會走到TCP那層,直接以文件的形式,以stream socket通信。如果是TCP Socket,則需要走到IP層。說的通俗一點,追求可靠性就是選擇TCP(需要占用一個端口,更穩(wěn)定,如:127.0.0.1:9000),追求高性能就是Unix Socket(不需要占用端口,更快,但可靠性不如TCP的方式)。

4、nginx和Apache的區(qū)別? 兩者最核心的區(qū)別在于apache是同步多進程模型,一個request對應一個進程,而nginx是異步的,多個連接(萬級別)可以對應一個進程。

一般來說,需要性能的web服務,用nginx,如果不需要性能只求穩(wěn)定,更考慮Apache,后者的各種模塊實現(xiàn)的比前者好很多,epoll網(wǎng)絡IO模型是nginx處理性能高的根本,但并不是所有情況下epoll大獲全勝的,如果本身提供靜態(tài)服務的只有幾個文件,apache的select模型或許比epoll更高性能。當然,這只是一個假設,真正還需要實測了再說。

更通用的方案是,前端nginx抗并發(fā),后端apache集群,配合起來會更好。

5、nginx的調(diào)度算法有哪些?

sticky:通過nginx-sticky模塊,來實現(xiàn)cookie黏貼的方式將來自同一個客戶端的請求發(fā)送到同一個后端服務器上處理,這樣一定程度上可以解決多個后端服務器的session會話同步的問題;
round-robin(RR):輪詢,每個請求按時間順序依次分配到不同的后端服務器,如果后端某臺服務器死機,自動剔除故障系統(tǒng),使用戶訪問不受影響;
weight:輪詢權(quán)重,weight的值越大分配到的訪問概率就越高,主要用于后端每臺服務器性能不均衡的情況下,或者僅僅為在主從的情況下設置不同的權(quán)重,達到合理有效的利用主機資源。
least_conn:請求被發(fā)送到當前活躍連接最少的realserver上,會考慮到weight的值;
ip_hash:每個請求按照IP的哈希結(jié)果分配,使來自同一個IP的訪客固定訪問后端服務器,可以有效的解決動態(tài)網(wǎng)頁存在的session共享問題。
fair:比weight、ip_hash更加智能的負載均衡算法,fair算法可以根據(jù)頁面的大小和加載時間長短智能地進行負載均衡,也就是根據(jù)后端服務器的響應時間來分配請求,相應時間短的優(yōu)先分配。nginx本身不支持fair,如果需要使用這種調(diào)度算法,則必須安裝upstream_fair模塊。
url_hash:按訪問的URL的哈希結(jié)果來分配請求,使每個URL定向到后端服務器,可以進一步提高后端緩存服務器的效率。同樣,nginx本身不支持url_hash,如果需要這種調(diào)度算法,則必須安裝nginx的hash軟件包。

復制

6、nginx負載均衡調(diào)度狀態(tài) 在nginx upstream模塊中,可以設定每臺后端服務器在負載均衡調(diào)度中的狀態(tài)。

常用的狀態(tài)有:

down:表示當前的server暫時不參與負載均衡;
backup:預留的備份機器。當其他所有的非backup機器出現(xiàn)故障或者繁忙的時候,才會請求backup機器,因此這臺機器的訪問壓力最低;
max_fails:允許請求失敗的次數(shù),默認為1,當超過最大次數(shù)時,返回proxy_next_upstraem模塊定義的錯誤;
fail_timeout:請求失敗超時時間,在經(jīng)歷了max_fails次失敗后,暫停服務的時間。max_fails和fail_timeout可以一起使用。

復制

7、如何查看nginx已添加的模塊?如果需要添加某個模塊,應該如何實現(xiàn)? 查看已添加的模塊:nginx -V; 如果需要添加某個模塊,需要將工作目錄切換至nginx的源碼包中,執(zhí)行“nginx -V”命令查看之前配置時的選項進行復制,然后增加需要添加的模塊配置項,進行配置并編譯,將新生成的nginx命令覆蓋掉原有的nginx命令,然后重載nginx服務,即可實現(xiàn)在線添加模塊。

8、可以從哪些方面來優(yōu)化nginx服務?

配置nginx的proxy緩存;
對靜態(tài)頁面開啟壓縮功能,如br壓縮或者gzip壓縮;
調(diào)整nginx運行工作進程個數(shù),最多開啟8個,8個以上話性能就不會再提升了,而且穩(wěn)定性變得更低,所以8個足夠用了;
調(diào)整nginx運行CPU的親和力;
修改nginx最多可打開的文件數(shù),若超過系統(tǒng)限制的最多打開文件數(shù)(ulimit -n命令查看系統(tǒng)的最多打開文件數(shù)),還需要修改系統(tǒng)默認的文件數(shù);
修改單個worker的最大連接數(shù);
開啟高效傳輸;
設置連接超時時間,以便保護服務器資源,因為建立連接也是需要消耗資源的;
優(yōu)化fastCGI的一個超時時間,也可以根據(jù)實際情況對其配置緩存動態(tài)頁面;
expires緩存調(diào)優(yōu),主要針對圖片、css、js等元素更改較少的情況下使用。
配置防盜鏈;
優(yōu)化內(nèi)核參數(shù),如進程可以同時打開的最大句柄數(shù);開啟tcp重用機制,以便允許TIME_WAIT sockets重新用于新的TCP連接....還有好多,記不住。

復制

————————————————————————————————————————————————————————————————————————————————————————————————

Linux運維常見面試題

1、什么是運維?什么是游戲運維? 1)運維是指大型組織已經(jīng)建立好的網(wǎng)絡軟硬件的維護,就是要保證業(yè)務的上線與運作的正常, 在他運轉(zhuǎn)的過程中,對他進行維護,他集合了網(wǎng)絡、系統(tǒng)、數(shù)據(jù)庫、開發(fā)、安全、監(jiān)控于一身的技術(shù) 運維又包括很多種,有DBA運維、網(wǎng)站運維、虛擬化運維、監(jiān)控運維、游戲運維等等 2)游戲運維又有分工,分為開發(fā)運維、應用運維(業(yè)務運維)和系統(tǒng)運維 開發(fā)運維:是給應用運維開發(fā)運維工具和運維平臺的 應用運維:是給業(yè)務上線、維護和做故障排除的,用開發(fā)運維開發(fā)出來的工具給業(yè)務上線、維護、做故障排查 系統(tǒng)運維:是給應用運維提供業(yè)務上的基礎設施,比如:系統(tǒng)、網(wǎng)絡、監(jiān)控、硬件等等 總結(jié):開發(fā)運維和系統(tǒng)運維給應用運維提供了“工具”和“基礎設施”上的支撐 開發(fā)運維、應用運維和系統(tǒng)運維他們的工作是環(huán)環(huán)相扣的 ——————————————————————————————————————————————————————————————————————————————————

2、在工作中,運維人員經(jīng)常需要跟運營人員打交道,請問運營人員是做什么工作的? 游戲運營要做的一個事情除了協(xié)調(diào)工作以外 還需要與各平臺溝通,做好開服的時間、開服數(shù)、用戶導量、活動等計劃 ———————————————————————————————————————————————————————————————————————————————————————— 3、現(xiàn)在給你三百臺服務器,你怎么對他們進行管理? 管理3百臺服務器的方式: 1)設定跳板機,使用統(tǒng)一賬號登錄,便于安全與登錄的考量。 2)使用saltstark、ansiable、puppet進行系統(tǒng)的統(tǒng)一調(diào)度與配置的統(tǒng)一管理。 3)建立簡單的服務器的系統(tǒng)、配置、應用的cmdb信息管理。便于查閱每臺服務器上的各種信息記錄 ———————————————————————————————————————————————————————————————————————————————————————————————————————————— 4、簡述raid0 raid1 raid5 三種工作模式的工作原理及特點 RAID,可以把硬盤整合成一個大磁盤,還可以在大磁盤上再分區(qū),放數(shù)據(jù) 還有一個大功能,多塊盤放在一起可以有冗余(備份) RAID整合方式有很多,常用的:0 1 5 10 RAID 0,可以是一塊盤和N個盤組合 其優(yōu)點讀寫快,是RAID中最好的 缺點:沒有冗余,一塊壞了數(shù)據(jù)就全沒有了 RAID 1,只能2塊盤,盤的大小可以不一樣,以小的為準 10G+10G只有10G,另一個做備份。它有100%的冗余,缺點:浪費資源,成本高 RAID 5 ,3塊盤,容量計算10*(n-1),損失一塊盤 特點,讀寫性能一般,讀還好一點,寫不好 冗余從好到壞:RAID1 RAID10 RAID 5 RAID0 性能從好到壞:RAID0 RAID10 RAID5 RAID1 成本從低到高:RAID0 RAID5 RAID1 RAID10 單臺服務器:很重要盤不多,系統(tǒng)盤,RAID1 數(shù)據(jù)庫服務器:主庫:RAID10 從庫 RAID5\RAID0(為了維護成本,RAID10) WEB服務器,如果沒有太多的數(shù)據(jù)的話,RAID5,RAID0(單盤) 有多臺,監(jiān)控、應用服務器,RAID0 RAID5 我們會根據(jù)數(shù)據(jù)的存儲和訪問的需求,去匹配對應的RAID級別 ————————————————————————————————————————————————————————————————————————————————————————————————————————— 5、LVS、Nginx、HAproxy有什么區(qū)別?工作中你怎么選擇? LVS: 是基于四層的轉(zhuǎn)發(fā) HAproxy: 是基于四層和七層的轉(zhuǎn)發(fā),是專業(yè)的代理服務器 Nginx: 是WEB服務器,緩存服務器,又是反向代理服務器,可以做七層的轉(zhuǎn)發(fā) 區(qū)別: LVS由于是基于四層的轉(zhuǎn)發(fā)所以只能做端口的轉(zhuǎn)發(fā) 而基于URL的、基于目錄的這種轉(zhuǎn)發(fā)LVS就做不了 工作選擇: HAproxy和Nginx由于可以做七層的轉(zhuǎn)發(fā),所以URL和目錄的轉(zhuǎn)發(fā)都可以做 在很大并發(fā)量的時候我們就要選擇LVS,像中小型公司的話并發(fā)量沒那么大 選擇HAproxy或者Nginx足已,由于HAproxy由是專業(yè)的代理服務器 配置簡單,所以中小型企業(yè)推薦使用HAproxy ———————————————————————————————————————————————————————————————————————————————————————————————————————————————— 6、Squid、Varinsh和Nginx有什么區(qū)別,工作中你怎么選擇? Squid、Varinsh和Nginx都是代理服務器 什么是代理服務器: 能當替用戶去訪問公網(wǎng),并且能把訪問到的數(shù)據(jù)緩存到服務器本地,等用戶下次再訪問相同的資 源的時候,代理服務器直接從本地回應給用戶,當本地沒有的時候,我代替你去訪問公網(wǎng),我接 收你的請求,我先在我自已的本地緩存找,如果我本地緩存有,我直接從我本地的緩存里回復你 如果我在我本地沒有找到你要訪問的緩存的數(shù)據(jù),那么代理服務器就會代替你去訪問公網(wǎng) 區(qū)別: 1)Nginx本來是反向代理/web服務器,用了插件可以做做這個副業(yè) 但是本身不支持特性挺多,只能緩存靜態(tài)文件 2)從這些功能上。varnish和squid是專業(yè)的cache服務,而nginx這些是第三方模塊完成 3)varnish本身的技術(shù)上優(yōu)勢要高于squid,它采用了可視化頁面緩存技術(shù) 在內(nèi)存的利用上,Varnish比Squid具有優(yōu)勢,性能要比Squid高。 還有強大的通過Varnish管理端口,可以使用正則表達式快速、批量地清除部分緩存 它是內(nèi)存緩存,速度一流,但是內(nèi)存緩存也限制了其容量,緩存頁面和圖片一般是挺好的 4)squid的優(yōu)勢在于完整的龐大的cache技術(shù)資料,和很多的應用生產(chǎn)環(huán)境 工作中選擇: 要做cache服務的話,我們肯定是要選擇專業(yè)的cache服務,優(yōu)先選擇squid或者varnish。 ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 7、Tomcat和Resin有什么區(qū)別,工作中你怎么選擇? 區(qū)別:Tomcat用戶數(shù)多,可參考文檔多,Resin用戶數(shù)少,可考慮文檔少 最主要區(qū)別則是Tomcat是標準的java容器,不過性能方面比resin的要差一些 但穩(wěn)定性和java程序的兼容性,應該是比resin的要好 工作中選擇:現(xiàn)在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求穩(wěn)定和程序的兼容 ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 8、什么是中間件?什么是jdk? 中間件介紹: 中間件是一種獨立的系統(tǒng)軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術(shù)之間共享資源 中間件位于客戶機/ 服務器的操作系統(tǒng)之上,管理計算機資源和網(wǎng)絡通訊 是連接兩個獨立應用程序或獨立系統(tǒng)的軟件。相連接的系統(tǒng),即使它們具有不同的接口 但通過中間件相互之間仍能交換信息。執(zhí)行中間件的一個關(guān)鍵途徑是信息傳遞 通過中間件,應用程序可以工作于多平臺或OS環(huán)境。 jdk:jdk是Java的開發(fā)工具包 它是一種用于構(gòu)建在 Java 平臺上發(fā)布的應用程序、applet 和組件的開發(fā)環(huán)境 ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 9、講述一下Tomcat8005、8009、8080三個端口的含義? 8005==》 關(guān)閉時使用 8009==》 為AJP端口,即容器使用,如Apache能通過AJP協(xié)議訪問Tomcat的8009端口 8080==》 一般應用使用 —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 10、什么叫CDN? 即內(nèi)容分發(fā)網(wǎng)絡 其目的是通過在現(xiàn)有的Internet中增加一層新的網(wǎng)絡架構(gòu),將網(wǎng)站的內(nèi)容發(fā)布到 最接近用戶的網(wǎng)絡邊緣,使用戶可就近取得所需的內(nèi)容,提高用戶訪問網(wǎng)站的速度 —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 11、什么叫網(wǎng)站灰度發(fā)布? 灰度發(fā)布是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式 AB test就是一種灰度發(fā)布方式,讓一部用戶繼續(xù)用A,一部分用戶開始用B 如果用戶對B沒有什么反對意見,那么逐步擴大范圍,把所有用戶都遷移到B上面 來灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時候就可以發(fā)現(xiàn)、調(diào)整問題,以保證其影響度 ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 12、簡述DNS進行域名解析的過程? 用戶要訪問 www.baidu.com,會先找本機的host文件,再找本地設置的DNS服務器,如果也沒有的話,就去網(wǎng)絡中找根服務器,根服務器反饋結(jié)果,說只能提供一級域名服務器.cn,就去找一級域名服務器,一級域名服務器說只能提供二級域名服務器.com.cn,就去找二級域名服務器,二級域服務器只能提供三級域名服務器.baidu.com.cn,就去找三級域名服務器,三級域名服務器正好有這個網(wǎng)站www.baidu.com,然后發(fā)給請求的服務器,保存一份之后,再發(fā)給客戶端

———————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 13、RabbitMQ是什么東西? RabbitMQ也就是消息隊列中間件,消息中間件是在消息的傳息過程中保存消息的容器 消息中間件再將消息從它的源中到它的目標中標時充當中間人的作用 隊列的主要目的是提供路由并保證消息的傳遞;如果發(fā)送消息時接收者不可用 消息隊列不會保留消息,直到可以成功地傳遞為止,當然,消息隊列保存消息也是有期限地 ———————————————————————————————————————————————————————————————————————————————————————— 14、講一下Keepalived的工作原理? 在一個虛擬路由器中,只有作為MASTER的VRRP(虛擬路由冗余協(xié)議)路由器會一直發(fā)送VRRP通告信息, BACKUP不會搶占MASTER,除非它的優(yōu)先級更高。當MASTER不可用時(BACKUP收不到通告信息) 多臺BACKUP中優(yōu)先級最高的這臺會被搶占為MASTER。這種搶占是非常快速的(<1s),以保證服務的連續(xù)性 由于安全性考慮,VRRP包使用了加密協(xié)議進行加密。BACKUP不會發(fā)送通告信息,只會接收通告信息 ——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

15、講述一下LVS三種模式的工作過程? LVS 有三種負載均衡的模式,分別是VS/NAT(nat 模式) VS/DR(路由模式) VS/TUN(隧道模式) 一、NAT模式(VS-NAT) 原理:就是把客戶端發(fā)來的數(shù)據(jù)包的IP頭的目的地址,在負載均衡器上換成其中一臺RS的IP地址 并發(fā)至此RS來處理,RS處理完后把數(shù)據(jù)交給負載均衡器,負載均衡器再把數(shù)據(jù)包原IP地址改為自己的IP 將目的地址改為客戶端IP地址即可期間,無論是進來的流量,還是出去的流量,都必須經(jīng)過負載均衡器 優(yōu)點:集群中的物理服務器可以使用任何支持TCP/IP操作系統(tǒng),只有負載均衡器需要一個合法的IP地址 缺點:擴展性有限。當服務器節(jié)點(普通PC服務器)增長過多時,負載均衡器將成為整個系統(tǒng)的瓶頸 因為所有的請求包和應答包的流向都經(jīng)過負載均衡器。當服務器節(jié)點過多時 大量的數(shù)據(jù)包都交匯在負載均衡器那,速度就會變慢! 二、IP隧道模式(VS-TUN) 原理:首先要知道,互聯(lián)網(wǎng)上的大多Internet服務的請求包很短小,而應答包通常很大 那么隧道模式就是,把客戶端發(fā)來的數(shù)據(jù)包,封裝一個新的IP頭標記(僅目的IP)發(fā)給RS RS收到后,先把數(shù)據(jù)包的頭解開,還原數(shù)據(jù)包,處理后,直接返回給客戶端,不需要再經(jīng)過 負載均衡器。注意,由于RS需要對負載均衡器發(fā)過來的數(shù)據(jù)包進行還原,所以說必須支持 IPTUNNEL協(xié)議,所以,在RS的內(nèi)核中,必須編譯支持IPTUNNEL這個選項 優(yōu)點:負載均衡器只負責將請求包分發(fā)給后端節(jié)點服務器,而RS將應答包直接發(fā)給用戶 所以,減少了負載均衡器的大量數(shù)據(jù)流動,負載均衡器不再是系統(tǒng)的瓶頸,就能處理很巨大的請求量 這種方式,一臺負載均衡器能夠為很多RS進行分發(fā)。而且跑在公網(wǎng)上就能進行不同地域的分發(fā)。 缺點:隧道模式的RS節(jié)點需要合法IP,這種方式需要所有的服務器支持”IP Tunneling” (IP Encapsulation)協(xié)議,服務器可能只局限在部分Linux系統(tǒng)上 三、直接路由模式(VS-DR) 原理:負載均衡器和RS都使用同一個IP對外服務但只有DR對ARP請求進行響應 所有RS對本身這個IP的ARP請求保持靜默也就是說,網(wǎng)關(guān)會把對這個服務IP的請求全部定向給DR 而DR收到數(shù)據(jù)包后根據(jù)調(diào)度算法,找出對應的RS,把目的MAC地址改為RS的MAC(因為IP一致) 并將請求分發(fā)給這臺RS這時RS收到這個數(shù)據(jù)包,處理完成之后,由于IP一致,可以直接將數(shù)據(jù)返給客戶 則等于直接從客戶端收到這個數(shù)據(jù)包無異,處理后直接返回給客戶端 由于負載均衡器要對二層包頭進行改換,所以負載均衡器和RS之間必須在一個廣播域 也可以簡單的理解為在同一臺交換機上 優(yōu)點:和TUN(隧道模式)一樣,負載均衡器也只是分發(fā)請求,應答包通過單獨的路由方法返回給客戶端 與VS-TUN相比,VS-DR這種實現(xiàn)方式不需要隧道結(jié)構(gòu),因此可以使用大多數(shù)操作系統(tǒng)做為物理服務器。 缺點:(不能說缺點,只能說是不足)要求負載均衡器的網(wǎng)卡必須與物理網(wǎng)卡在一個物理段上。 ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

16、mysql的innodb如何定位鎖問題,mysql如何減少主從復制延遲? mysql的innodb如何定位鎖問題: 在使用 show engine innodb status檢查引擎狀態(tài)時,發(fā)現(xiàn)了死鎖問題 在5.5中,information_schema 庫中增加了三個關(guān)于鎖的表(MEMORY引擎) innodb_trx ## 當前運行的所有事務 innodb_locks ## 當前出現(xiàn)的鎖 innodb_lock_waits ## 鎖等待的對應關(guān)系 mysql如何減少主從復制延遲: 如果延遲比較大,就先確認以下幾個因素: 從庫硬件比主庫差,導致復制延遲

主從復制單線程,如果主庫寫并發(fā)太大,來不及傳送到從庫

就會導致延遲。更高版本的mysql可以支持多線程復制 慢SQL語句過多

網(wǎng)絡延遲

master負載 主庫讀寫壓力大,導致復制延遲,架構(gòu)的前端要加buffer及緩存層 slave負載 一般的做法是,使用多臺slave來分攤讀請求,再從這些slave中取一臺專用的服務器 只作為備份用,不進行其他任何操作.另外, 2個可以減少延遲的參數(shù): –slave-net-timeout=seconds 單位為秒 默認設置為 3600秒 #參數(shù)含義:當slave從主數(shù)據(jù)庫讀取log數(shù)據(jù)失敗后,等待多久重新建立連接并獲取數(shù)據(jù) –master-connect-retry=seconds 單位為秒 默認設置為 60秒 #參數(shù)含義:當重新建立主從連接時,如果連接建立失敗,間隔多久后重試 通常配置以上2個參數(shù)可以減少網(wǎng)絡問題導致的主從數(shù)據(jù)同步延遲 MySQL數(shù)據(jù)庫主從同步延遲解決方案 最簡單的減少slave同步延時的方案就是在架構(gòu)上做優(yōu)化,盡量讓主庫的DDL快速執(zhí)行 還有就是主庫是寫,對數(shù)據(jù)安全性較高,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之類的設置,而slave則不需要這么高的數(shù)據(jù)安全,完全可以講sync_binlog設置為0或者關(guān)閉binlog innodb_flushlog也可以設置為0來提高sql的執(zhí)行效率。另外就是使用比主庫更好的硬件設備作為slave —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 17、如何重置mysql root密碼? 一、 在已知MYSQL數(shù)據(jù)庫的ROOT用戶密碼的情況下,修改密碼的方法: 1、 在SHELL環(huán)境下,使用mysqladmin命令設置: mysqladmin –u root –p password “新密碼” 回車后要求輸入舊密碼 2、 在mysql>環(huán)境中,使用update命令,直接更新mysql庫user表的數(shù)據(jù): Update mysql.user set password=password(‘新密碼’) where user=’root’; flush privileges; 注意:mysql語句要以分號”;”結(jié)束 3、 在mysql>環(huán)境中,使用grant命令,修改root用戶的授權(quán)權(quán)限。 grant all on . to root@’localhost’ identified by ‘新密碼’; 二、 如查忘記了mysql數(shù)據(jù)庫的ROOT用戶的密碼,又如何做呢?方法如下: 1、 關(guān)閉當前運行的mysqld服務程序:service mysqld stop(要先將mysqld添加為系統(tǒng)服務) 2、 使用mysqld_safe腳本以安全模式(不加載授權(quán)表)啟動mysqld 服務 /usr/local/mysql/bin/mysqld_safe –skip-grant-table & 3、 使用空密碼的root用戶登錄數(shù)據(jù)庫,重新設置ROOT用戶的密碼 #mysql -u root Mysql> Update mysql.user set password=password(‘新密碼’) where user=’root’; Mysql> flush privileges; —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 18、lvs/nginx/haproxy優(yōu)缺點 Nginx的優(yōu)點是: 1、工作在網(wǎng)絡的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結(jié)構(gòu) 它的正則規(guī)則比HAProxy更為強大和靈活,這也是它目前廣泛流行的主要原因之一 Nginx單憑這點可利用的場合就遠多于LVS了。 2、Nginx對網(wǎng)絡穩(wěn)定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優(yōu)勢之一 相反LVS對網(wǎng)絡穩(wěn)定性依賴比較大,這點本人深有體會; 3、Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日志打印出來 LVS的配置、測試就要花比較長的時間了,LVS對網(wǎng)絡依賴比較大。 4、可以承擔高負載壓力且穩(wěn)定,在硬件不差的情況下一般能支撐幾萬次的并發(fā)量,負載度比LVS相對小些。 5、Nginx可以通過端口檢測到服務器內(nèi)部的故障,比如根據(jù)服務器處理網(wǎng)頁返回的狀態(tài)碼、超時等等,并且會把返回錯誤的請求重新提交到另一個節(jié)點,不過其中缺點就是不支持url來檢測。比如用戶正在上傳一個文件,而處理該上傳的節(jié)點剛好在上傳過程中出現(xiàn)故障,Nginx會把上傳切到另一臺服務器重新處理,而LVS就直接斷掉了 如果是上傳一個很大的文件或者很重要的文件的話,用戶可能會因此而不滿。 6、Nginx不僅僅是一款優(yōu)秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器 LNMP也是近幾年非常流行的web架構(gòu),在高流量的環(huán)境中穩(wěn)定性也很好。 7、Nginx現(xiàn)在作為Web反向加速緩存越來越成熟了,速度比傳統(tǒng)的Squid服務器更快,可考慮用其作為反向代理加速器 8、Nginx可作為中層反向代理使用,這一層面Nginx基本上無對手,唯一可以對比Nginx的就只有l(wèi)ighttpd了 不過lighttpd目前還沒有做到Nginx完全的功能,配置也不那么清晰易讀,社區(qū)資料也遠遠沒Nginx活躍 9、Nginx也可作為靜態(tài)網(wǎng)頁和圖片服務器,這方面的性能也無對手。還有Nginx社區(qū)非常活躍,第三方模塊也很多 Nginx的缺點是: 1、Nginx僅能支持http、https和Email協(xié)議,這樣就在適用范圍上面小些,這個是它的缺點 2、對后端服務器的健康檢查,只支持通過端口來檢測,不支持通過url來檢測 不支持Session的直接保持,但能通過ip_hash來解決 LVS:使用Linux內(nèi)核集群實現(xiàn)一個高性能、高可用的負載均衡服務器 它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability) LVS的優(yōu)點是: 1、抗負載能力強、是工作在網(wǎng)絡4層之上僅作分發(fā)之用,沒有流量的產(chǎn)生 這個特點也決定了它在負載均衡軟件里的性能最強的,對內(nèi)存和cpu資源消耗比較低 2、配置性比較低,這是一個缺點也是一個優(yōu)點,因為沒有可太多配置的東西 所以并不需要太多接觸,大大減少了人為出錯的幾率 3、工作穩(wěn)定,因為其本身抗負載能力很強,自身有完整的雙機熱備方案 如LVS+Keepalived,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived 4、無流量,LVS只分發(fā)請求,而流量并不從它本身出去,這點保證了均衡器IO的性能不會收到大流量的影響。 5、應用范圍較廣,因為LVS工作在4層,所以它幾乎可對所有應用做負載均衡,包括http、數(shù)據(jù)庫、在線聊天室等 LVS的缺點是: 1、軟件本身不支持正則表達式處理,不能做動靜分離 而現(xiàn)在許多網(wǎng)站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優(yōu)勢所在 2、如果是網(wǎng)站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較復雜了 特別后面有Windows Server的機器的話,如果實施及配置還有維護過程就比較復雜了 相對而言,Nginx/HAProxy+Keepalived就簡單多了。 HAProxy的特點是: 1、HAProxy也是支持虛擬主機的。 2、HAProxy的優(yōu)點能夠補充Nginx的一些缺點,比如支持Session的保持,Cookie的引導 同時支持通過獲取指定的url來檢測后端服務器的狀態(tài) 3、HAProxy跟LVS類似,本身就只是一款負載均衡軟件 單純從效率上來講HAProxy會比Nginx有更出色的負載均衡速度,在并發(fā)處理上也是優(yōu)于Nginx的 4、HAProxy支持TCP協(xié)議的負載均衡轉(zhuǎn)發(fā),可以對MySQL讀進行負載均衡 對后端的MySQL節(jié)點進行檢測和負載均衡,大家可以用LVS+Keepalived對MySQL主從做負載均衡 5、HAProxy負載均衡策略非常多,HAProxy的負載均衡算法現(xiàn)在具體有如下8種: ①roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的; ② static-rr,表示根據(jù)權(quán)重,建議關(guān)注; ③leastconn,表示最少連接者先處理,建議關(guān)注; ④ source,表示根據(jù)請求源IP,這個跟Nginx的IP_hash機制類似 我們用其作為解決session問題的一種方法,建議關(guān)注; ⑤ri,表示根據(jù)請求的URI; ⑥r(nóng)l_param,表示根據(jù)請求的URl參數(shù)’balance url_param’ requires an URL parameter name; ⑦hdr(name),表示根據(jù)HTTP請求頭來鎖定每一次HTTP請求; ⑧rdp-cookie(name),表示根據(jù)據(jù)cookie(name)來鎖定并哈希每一次TCP請求。文章來源地址http://www.zghlxwxcb.cn/news/detail-409310.html

到了這里,關(guān)于Tomcat面試題+http面試題+Nginx面試題+常見面試題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • 程序員面試系列,kafka常見面試題

    原文鏈接 Kafka是什么?它的主要作用是什么? 什么是Kafka的主題(Topic)和分區(qū)(Partition)? Kafka中的消息是如何被生產(chǎn)者發(fā)送和消費者接收的? Kafka中的分區(qū)有什么作用?為什么分區(qū)是Kafka的基本并行單位? 什么是Kafka生產(chǎn)者和消費者?如何創(chuàng)建和配置它們? Kafka中的消息保

    2024年02月15日
    瀏覽(14)
  • 程序員面試系列,docker常見面試題

    原文鏈接 什么是Docker?它的主要作用是什么? Docker和虛擬機之間有什么區(qū)別? Docker的主要組件有哪些? Docker鏡像和容器的區(qū)別是什么? 如何構(gòu)建Docker鏡像?請簡要描述構(gòu)建過程。 如何創(chuàng)建和啟動一個Docker容器? 如何在Docker容器內(nèi)運行后臺任務? Docker的網(wǎng)絡模式有哪些?

    2024年02月15日
    瀏覽(11)
  • java面試常問,zookeeper常見面試題

    java面試常問,zookeeper常見面試題

    什么是 Spring Boot? 為什么要用 Spring Boot? Spring Boot 的核心配置文件有哪幾個?它們的區(qū)別是什么? Spring Boot 的配置文件有哪幾種格式?它們有什么區(qū)別? Spring Boot 的核心注解是哪個?它主要由哪幾個注解組成的? 開啟 Spring Boot 特性有哪幾種方式? Spring Boot 需要獨立的容器

    2024年03月15日
    瀏覽(26)
  • 程序員面試系列,k8s常見面試題

    原文鏈接 Kubernetes(通常簡稱為K8s)是一個開源的容器編排平臺,用于自動化部署、擴展和管理容器化應用程序。它最初由谷歌開發(fā),并于2014年捐贈給了云原生計算基金會(CNCF)。Kubernetes 提供了一個強大的容器化應用程序管理系統(tǒng),使開發(fā)人員和運維團隊能夠更輕松地構(gòu)建

    2024年02月06日
    瀏覽(27)
  • 【Java】常見面試題:HTTP/HTTPS、Servlet、Cookie、Linux和JVM

    【Java】常見面試題:HTTP/HTTPS、Servlet、Cookie、Linux和JVM

    努力經(jīng)營當下 直至未來明朗! “抓包工具”:是個特殊的軟件,相當于一個“代理程序”,瀏覽器給服務器的請求就會經(jīng)過這個代理程序(響應也是經(jīng)過該代理程序的),進一步的就能分析出請求和響應的結(jié)果如何。 fiddler可以抓取http請求,也可以開啟抓取https請求。 HTTP

    2024年02月12日
    瀏覽(29)
  • 入職微軟一月后的感悟,談談面試經(jīng)歷及入職體驗,web前端常見面試題

    入職微軟一月后的感悟,談談面試經(jīng)歷及入職體驗,web前端常見面試題

    在某一天,我在某 App 上被一個微軟的陌生人勾搭,簡單地電面后一拍即合,我向他投遞了簡歷。 正式的面試一共有四輪,三輪技術(shù)面 + 一輪 AA 面(大老板),每輪持續(xù)時間一個小時左右。 除了最后一面聊了聊人生、理想、邏輯推理等非技術(shù)內(nèi)容。其他三面基本上是項目算

    2024年04月26日
    瀏覽(29)
  • 常見面試題之HashMap

    常見面試題之HashMap

    1.1 二叉樹概述 二叉樹,顧名思義,每個節(jié)點最多有兩個“叉”,也就是兩個子節(jié)點,分別是左子節(jié)點和右子節(jié)點。不過,二叉樹并不要求每個節(jié)點都有兩個子節(jié)點,有的節(jié)點只有左子節(jié)點,有的節(jié)點只有右子節(jié)點。 二叉樹每個節(jié)點的左子樹和右子樹也分別滿足二叉樹的定義

    2024年02月16日
    瀏覽(17)
  • Redis的常見面試題

    Redis的常見面試題

    目錄 前言 Redis支持哪些數(shù)據(jù)類型 五種核心類型? Zset為什么用跳表不用紅黑樹?? Redis常見的應用場景?? ?如何檢測Redis的連通性? 如何設置key的過期時間?? Redis為什么是單線程模型?? Redis里的IO多路復用是什么?? RDB的持久化機制有哪些?? AOF的重寫機制是怎么樣的?

    2024年02月22日
    瀏覽(23)
  • RocketMQ 常見面試題(三)

    消息丟失主要發(fā)生在下面三個地方: 消息生產(chǎn)者將消息發(fā)送到RocketMQ Broker的這個過程可能出現(xiàn)消息丟失。 RocketMQ Broker接收到生產(chǎn)者發(fā)送的消息存儲的過程消息可能丟失。 消費者處理失敗,但是將錯誤進行捕捉,導致消息出現(xiàn)虛假的消費成功。實際上沒有消費,但是在MQ看來

    2024年02月11日
    瀏覽(44)
  • 常見面試題之框架篇

    常見面試題之框架篇

    不是線程安全的,是這樣的。 當多用戶同時請求一個服務時,容器會給每一個請求分配一個線程,這是多個線程會并發(fā)執(zhí)行該請求對應的業(yè)務邏輯(成員方法),如果該處理邏輯中有對該單列狀態(tài)的修改(體現(xiàn)為該單例的成員屬性),則必須考慮線程同步問題。 Spring 框架并

    2024年02月10日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包