一、企業常見的中間件產品有哪些?java
商業:nginx企業版,jobss
開源:nginx社區版,tomcat,apachenginx
二、Tomcat軟件早期名字及其主要做用?web
Tomcat的前身爲Catalina、Catalina是一個輕量級的Servlet容器.
tomcat是一款小型的web應用服務器,在併發不是特別高的中小型企業被廣泛應用。算法
三、什麼是JDK?JDK中都包含哪些運維經常使用命令工具?數據庫
JDK是用於Java語言開發工具包
經常使用命令:java -version(用於查看java版本號)
jmap -histo java進程id (查看java進程中的全部實例、實例的個數)apache
四、簡述部署Tomcat軟件的思路?瀏覽器
首先導入JDK以及Tomcat軟件包,導入完成後將JDK以及Tomcat解壓到root目錄下並將JDK解壓包、而後移動到/usr/local/java下Tomcat解壓包導入到/usr/local/tomcat下,而後修改/etc/profile文件在末尾添加JAVA_HOME=/usr/local/java;PATH=$PATH:$JAVA_HOME/bin。最後用source重啓/etc/profile文件;
再用java -version查看JAVA版本號,刪除原始的JAVA版本號,再重啓/etc/profile文件而且啓動腳本就完成了Tomcat的安裝,能夠利用瀏覽器查看是否安裝完成,在輸入框輸入ip地址:8080,有tomcat頁面就表明安裝完成緩存
五、Tomcat軟件項目發佈目錄及庫文件存放目錄?tomcat
項目發佈目錄在/usr/local/tomcat/webapps下
庫文件存放在/usr/local/tomcat/lib下安全
六、Tomcat主配置文件server.xml的做用?
server.xml中主要由三部分組成,<Server><Server><Connector><Connector><Engine><Host><Context>
Server包裹其餘兩部分能夠看作是整個容器
server.xml做爲主配置文件是整個服務的核心,其中包括四類:
頂層元素:<Server>和<Service>
鏈接器:<Connector>
容器:<Engine><Host><Context>
內嵌組件:能夠內嵌到容器中的組件。實際上,Server、Service、Connector、Engine、Host和Context是最重要的最核心的Tomcat組件,其餘組件均可以歸爲內嵌組件。
七、Tomcat配置組件host/context做用?參數appBase/autoDeploy/reloadable的做用?
Host虛擬主機的做用,是運行多個Web應用(一個Context表明一個Web應用),並負責安裝、展開、啓動和結束每一個Web應用。
Connector的主要功能,是接收鏈接請求,建立Request和Response對象用於和請求端交換數據;而後分配線程讓Engine來處理這個請求,並把產生的Request和Response對象傳給Engine
reloadable有兩個值,false和true,當值爲false時,Tomcat服務會關閉監控,爲true時會開啓
autoDeploy
appBase
八、描述Tomcat處理客戶請求的流程?
當客戶輸入域名經過8080端口發送請求時,會被Connector監聽,Connector主要是用於端口監聽,
九、Tomcat鏈接數據庫的文件名爲?
在server.xml 文件裏面的context配置Resource
十、Tomcat支持的虛擬主機類型有?
基於域名和端口
域名的就是在host的name屬性添加,端口的須要複製一個service
十一、簡述Tomcat多實例的做用並解釋如下部署方式?
單實例單應用:單實例單應用就是開啓tomcat的一個實例進程,在server.xml的host配置裏面
指定一個網站路徑。
單實例多應用:開啓一個tomcat實例,可是配置多個host虛擬主機,能夠一個實例配置部署多個網站
多實例單應用:就是開啓多個tomcat實例,可是host項目路徑和jdbc文件都指向一個網站目錄。
多實例多應用:就是每一個實例對應一套網站。
十二、描述Tomcat多實例部署流程?
1.在/usr/local/建立實例目錄,好比tomcat_sess/tomcat1和tomcat_sess/tomcat2
2.而後把解壓好的tomcat的conf文件拷貝到tomcat1和tomcat2,並在下面建立bin目錄
3.而後再建立開啓關閉tomcat實例的腳本,給他們加上執行權限
4.再修改conf下面的配置文件:server.xml,把裏面的端口都改成和多個實例不一樣,
不然出現端口占用。
1三、Tomcat管理頁面都包含哪些關鍵信息?
jvm內存使用狀態:已使用,未使用,總內存
最大線程數,當前線程數,
最大處理時間,處理時間,請求計數。
端口,tomcatio模式
1四、描述Tomcat監控方式並描述Tomcat遠程監控功能的開啓方式?
到/tomcat/bin/catalina.sh 文件添加打開端口的配置
而後能夠到Windows已經解壓jdk安裝包目錄下,打開jconsole.exe
再輸入要監控的ip和配置文件的端口號
1五、Tomcat安全方面優化方式(13種)
端口隱藏,禁用端口管理端,降權啓動,文件列表訪問控制,版本信息隱藏,訪問控制,啓停腳本權限回收,頁面超時時間,頁面壓縮,ssl加密,設置最小內存、最大內存
1六、描述什麼同步、異步、阻塞、非阻塞?
同步:好比一個請求過來時,服務器處理完這個請求才會處理下一個請求。
異步:好比過來一個請求,服務器處理這個請求沒獲得結果以前還能夠處理別的事情。
阻塞:不能獲得結果以前,當前線程會掛起。
非阻塞:不能獲得結果以前,當前線程不會被阻塞,且並行執行其餘操做。
1七、描述Tomcat的BIO、NIO、AIO模式的特色及適用場景?
java BIO:同步阻塞,當用戶有一個請求過來時,javaBIO機制調用一個線程來鏈接請求,這個線程會一直存在就算用戶斷開了鏈接也會佔用服務器資源,從而形成線程過多對資源消耗過大。
適用與較小型的架構,不能支撐併發太高的應用。
java NIO:同步非阻塞,當用戶的請求過來時,NIO機制會把請求放入到多路複用器裏面,若是裏面的請求須要用到io操做,就分配
適用於輕型的高併發場景,好比聊天郵件服務,它是基於緩衝來設置非阻塞nio操做。
java AIO:異步非阻塞,服務器實現模式是一個有效的線程,服務器會把請求給IO給OS系統,而後系統再通知服務器啓動一個有效的IO線程。
適用於web高併發場景,是當用戶請求過來時,操做系統會通知服務器建立一個有效的鏈接請求。
1八、描述Tomat線程池的做用及優化選項?
線程池的做用是減輕用戶訪問量大的時候而建立大量線程消耗過多資源和io。
可使用maxthreads參數 建立最大線程數
minsparethreads參數 建立最小線程數量
prestartminsparethreads 參數 是否在啓動就建立minsparethreads個線程。
該配置項在connector默認的端口8080配置
1九、描述Tomat鏈接器的做用及優化選項?
鏈接器就是tomcat請求入口,connector監聽8080端口的請求。
能夠配置參數,好比禁用DNS,指定字符集,指定post請求最大值,
指定最大鏈接數,禁用較長超時鏈接。
20、描述Tomcat的熱部署及熱加載?
熱加載:tomcat會指定專門的目錄監控他們有沒有發生改變,若是發生改變就從新加載。
熱部署:整個項目從新部署,全部session緩存會被釋放,至關於重啓機器。
2一、描述JVM的新生代、老年代、永久代?
jvm新生代:新生成的對象都是放在新生代裏面,新生代的做用是儘量回收那些生命週期短的對象。
jvm老年代:主要保持那些生命週期長的對象,但不必定不會被GC回收。
jvm永久代:裏面的對象永遠不會被回收,通常保存的是class,和方法。
2二、描述Tomcat針對JVM優化參數有哪些及其含義?
tomcat性能取決於jvm內存大小,而合理的內存參數優化可使得tomcat性能提升。
在tomcat/bin/catalina.sh 配置文件下面可使用Xms設置jvm最小內存Xmx設置最大內存。
可使用XX:NewSize 設置年輕代大小 XX:MaxNewSize設置年取代最大大小。
可使用XX:PermSize設置永久代大小 XX:MaxPermSize 設置最大永久代大小。
2三、描述什麼session、什麼是cookies?
Session是由應用服務器維持的一個服務器端的存儲空間(內存中),用戶在鏈接服務器時,會由服務器生成一個惟一的SessionID,
客戶端使用該Session ID 爲標識符來存取服務器端的Session存儲空間。而Session ID則保存到客戶端,使用瀏覽器Cookie保存的。
Cookie,有時也用其複數形式 Cookies,指某些網站爲了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數據(一般通過加密)
2四、描述Tomcat集羣中常見的session解決方案?
解決方案一:Session綁定:
Session綁定能夠利用負載均衡的源地址Hash(ip_hash)算法實現
解決方案二:Session複製
Session複製是小型架構使用較多的一種服務器集羣Session管理機制。應用服務器開啓Web容器的Session複製功能,在集羣中的幾臺服務器之間同步Session對象,使每臺服務器上都保存了全部用戶的Session信息,這種方案實現簡單,從本機讀取Session信息也很快速,但只能應用在集羣規模比較小的環境下
解決方案三:Session服務器之Memcached
安裝Memcached
解決方案四:Session服務器之Redis
安裝Redis
2五、描述Memcached及Redis軟件的區別?Redis與Memcached的區別內存利用率:使用簡單的key-value(鍵值對)存儲的話,Memcached的內存利用率更高,而若是Redis採用hash結構來作key-value存儲,因爲其組合式的壓縮,其內存利用率會高於Memcached。 性能對比:因爲Redis只使用單核,而Memcached可使用多核,因此平均每個核上Redis在存儲小數據時比Memcached性能更高。而在100k以上的數據中,Memcached性能要高於Redis,雖然Redis最近也在存儲大數據的性能上進行優化,可是比起Memcached,仍是稍有遜色。 Redis支持數據的持久化,能夠將內存中的數據保持在磁盤中,重啓的時候能夠再次加載進行使用 Redis支持數據的備份,即master-slave模式的數據備份。 Redis不只僅支持簡單的key-Value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲