兰蔻御用运维总结之一
生活随笔
收集整理的這篇文章主要介紹了
兰蔻御用运维总结之一
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2010年的1月11號(hào)之后的日子對(duì)我而言,是一個(gè)艱苦奮斗的歷程。我把這次的運(yùn)維經(jīng)歷稱之為:蘭蔻御用一戰(zhàn)。剛開始我就知道蘭蔻一役,需要總結(jié),反思的會(huì)很多。可是怎么也不會(huì)想到這次總結(jié)竟然是一場(chǎng)暴風(fēng)驟雨。 接下來的篇章,我首先是談需求與技術(shù),談蘭蔻的客戶要求以及與之對(duì)應(yīng)的運(yùn)維結(jié)構(gòu),然后談歸納總結(jié),反思,感悟以及我的導(dǎo)師對(duì)我及我兩個(gè)大學(xué)同學(xué)的評(píng)價(jià)。 首先講述客戶需求: 在談客戶需求之前,我想談一下感觸:就是工期比較緊張的情況下,一旦需求確定,就不要輕易修改,因?yàn)檫@樣才能保證項(xiàng)目的按時(shí)完成,不然就會(huì)出現(xiàn)軟件開發(fā)工程師不停的修改程序,運(yùn)維工程師不斷地調(diào)整服務(wù)器部署,項(xiàng)目經(jīng)理疲于應(yīng)付,承受來自客戶和項(xiàng)目組成員兩方面的壓力。那這個(gè)項(xiàng)目就離見馬克思不遠(yuǎn)了。 需求郵件內(nèi)容如下: 1月11日開始推廣蘭蔻年度回饋活動(dòng)的計(jì)劃,請(qǐng)根據(jù)以下數(shù)據(jù)推算出大概的“愛蘭蔻”"禮品隨你挑“活動(dòng)的流量,并對(duì)目前兩臺(tái)服務(wù)器做相關(guān)的壓力測(cè)試。
壓力測(cè)試建議使用的工具:Microsoft Web Application Stress Tool
請(qǐng)于12月31日前做好相關(guān)的壓力測(cè)試,看看是否目前兩臺(tái)服務(wù)器在以下的資源推廣的情況下,能否承受相應(yīng)的流量。是否需要增加服務(wù)器。
???? 1月25日 發(fā)送量: 53萬
這是郵件關(guān)于需求部分的原內(nèi)容,我直接Copy下來。對(duì)這封郵件進(jìn)行一次解釋: 郵件中提到的家有蘭蔻這是一期的活動(dòng),活動(dòng)的內(nèi)容有:上傳一張化妝桌上的蘭蔻的圖片,圖片大小從幾十k到10M以下,在網(wǎng)站的頁面上展現(xiàn)的是縮略圖,點(diǎn)擊縮略圖會(huì)看到經(jīng)過壓制的符合一定比例的圖片,而不是原圖。用戶上傳圖片后,可以在附屬欄中填寫好朋友的郵件地址,請(qǐng)好朋友到此網(wǎng)站點(diǎn)擊他的圖片從而進(jìn)行拉票活動(dòng)。在此活動(dòng)進(jìn)行到第10天(包括第十天),蘭蔻會(huì)根據(jù)圖片的排名,在前20名的用戶得到蘭蔻的禮品。原拓?fù)鋱D如下:簡(jiǎn)單介紹一下軟硬件配置:兩臺(tái)DellR610(Intel5504*2/4G/146*3/1000M網(wǎng)卡*4),FW是cisco5504(并發(fā)連接數(shù):25000 用戶數(shù)無限制,網(wǎng)絡(luò)端口:8個(gè)快速以太網(wǎng)端口、1個(gè)SSC擴(kuò)展插槽,網(wǎng)絡(luò)吞吐量(Mbps):150),介紹系統(tǒng)軟件:操作系統(tǒng)Windows 標(biāo)準(zhǔn)版R2,web服務(wù)器Tomcat6.0.20,DBServer:MSSQL2008. 介紹一下JVM優(yōu)化: JVM優(yōu)化:
JVM的server版和client版的區(qū)別:
JVM動(dòng)態(tài)庫有client和server兩個(gè)版本,分別針對(duì)桌面應(yīng)用和服務(wù)器應(yīng)用做了相應(yīng)的優(yōu)化,client版本加載速度比較快,server版本加載速度比較慢但是運(yùn)行速度比較快。
操作手法:
把%JAVA_HOME%\jar\bin中的server的文件夾拷貝到%JAVA_HOME%同一級(jí)目錄的jre中的bin目錄下,然后修改C:\Program Files\Java\jre6\lib\i386目錄中的jvm.cfg,把-server KNOWN 放在-client KNOWN前面,然后保存。現(xiàn)在可以在dos窗口中寫入命令:java -version來查看是否是server版本:
C:\Documents and Settings\actop>java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode) 介紹一下web服務(wù)器的參數(shù)配置: Server.xml: <Connector port="80" address="192.168.0.2" protocol="org.apache.coyote.http11.Http11NioProtocol"?
???????????????? maxHttpHeaderSize="8192"? URIEncoding="UTF-8" useBodyEncodingForURI="true"
???????????????? maxThreads="2000" minSpareThreads="75" maxSpareThreads="300"?
???????????????? enableLookups="false" redirectPort="8443" acceptCount="2000"
???????????????? compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"??
???????????????? connectionTimeout="50000" disableUploadTimeout="true"/>? catalina.bat: set JAVA_OPTS=-server -XX:+UseConcMarkSweepGC -Djava.rmi.server.hostname=XX.XX.XX.XX(your IP address) -Djava.awt.headless=true -Xms1400m -Xmx1400m -XX:NewSize=48m -XX:MaxNewSize=128m -XX:PermSize=128m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true
set CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
set CATALINA_OPTS=%CATALINA_OPTS% -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true 對(duì)以上參數(shù)做如下解釋: 首先我們對(duì)tomcat6.0.20的新特性進(jìn)行介紹: 首先講協(xié)議部分:參見網(wǎng)上博文: =========================================================================================================== [轉(zhuǎn)]Tomcat 6 支持 NIO -- Tomcat的四種基于HTTP協(xié)議的Connector性能比較
Tomcat 6 支持 NIO -- Tomcat的四種基于HTTP協(xié)議的Connector性能比較 Tomcat從5.5版本開始,支持以下四種Connector的配置分別為: <Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443"/>
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000"?? redirectPort="8443"/>
<Connector executor="tomcatThreadPool"? port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector executor="tomcatThreadPool" port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />
我們姑且把上面四種Connector按照順序命名為 NIO, HTTP, POOL, NIOP
為了不讓其他因素影響測(cè)試結(jié)果,我們只對(duì)一個(gè)很簡(jiǎn)單的jsp頁面進(jìn)行測(cè)試,這個(gè)頁面僅僅是輸出一個(gè)Hello World。假設(shè)地址是 http://tomcat1/test.jsp
我們依次對(duì)四種Connector進(jìn)行測(cè)試,測(cè)試的客戶端在另外一臺(tái)機(jī)器上用ab命令來完成,測(cè)試命令為: ab -c 900 -n 2000 http://tomcat1/test.jsp,最終的測(cè)試結(jié)果如下表所示(單位:平均每秒處理的請(qǐng)求數(shù)):
NIO??? HTTP??? POOL??? NIOP
281???? 65???? 208???? 365
666???? 66???? 110???? 398
692???? 65???? 66???? 263
256???? 63???? 94???? 459
440???? 67???? 145???? 363
由這五組數(shù)據(jù)不難看出,HTTP的性能是很穩(wěn)定,但是也是最差的,而這種方式就是Tomcat的默認(rèn)配置。NIO方式波動(dòng)很大,但沒有低于280 的,NIOP是在NIO的基礎(chǔ)上加入線程池,可能是程序處理更復(fù)雜了,因此性能不見得比NIO強(qiáng);而POOL方式則波動(dòng)很大,測(cè)試期間和HTTP方式一樣,不時(shí)有停滯。
由于linux的內(nèi)核默認(rèn)限制了最大打開文件數(shù)目是1024,因此此次并發(fā)數(shù)控制在900。
盡管這一個(gè)結(jié)果在實(shí)際的網(wǎng)站中因?yàn)楦鞣矫嬉蛩貙?dǎo)致,可能差別沒這么大,例如受限于數(shù)據(jù)庫的性能等等的問題。但對(duì)我們?cè)诓渴鹁W(wǎng)站應(yīng)用時(shí)還是具有參考價(jià)值的。 =========================================================================================================== Connector:客戶端和service之間的連接器。 protocol指定了該端口偵聽的協(xié)議類型,maxHttpHeaderSize:Http的Header的最大限制
URIEncoding:url傳參時(shí)的編碼格式
useBodyEncodingForURI:根據(jù)相應(yīng)該請(qǐng)求頁面request.CharacterEncoding參數(shù)對(duì)數(shù)據(jù)進(jìn)行重新編碼
maxThreads:Tomcat可創(chuàng)建的最大的線程數(shù)
minSpareThreads:初始化創(chuàng)建的線程數(shù)
maxSpareThreads:一旦創(chuàng)建的線程超過這個(gè)數(shù),Tomcat就將關(guān)閉不再需要的Socket線程
enableLookups:使用允許DNS查詢,通常情況下設(shè)置為false,設(shè)置為false就直接返回ip地址
acceptCount:當(dāng)所有可以使用的處理請(qǐng)求的線程樹都被使用時(shí),可以放到請(qǐng)求隊(duì)列中的請(qǐng)求數(shù),超過這個(gè)數(shù)的請(qǐng)求將不予處理。其實(shí),該屬性與ServerSocket(int port,int backlog)中的backlog參數(shù)意義相同,具體可參考ServerSocket的JDK API
connectionTimeout:網(wǎng)絡(luò)連接超時(shí),單位毫秒。設(shè)置為0表示永不超時(shí)
compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 在客戶端請(qǐng)求網(wǎng)頁后,從服務(wù)器端將網(wǎng)頁文件壓縮,再下載到客戶端,由客戶端的瀏覽器負(fù)責(zé)解壓縮并瀏覽。相對(duì)于普通的瀏覽過程HTML ,CSS,Javascript , Text ,它可以節(jié)省40%左右的流量。更為重要的是,它可以對(duì)動(dòng)態(tài)生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等輸出的網(wǎng)頁也能進(jìn)行壓縮,壓縮效率驚人
1) compression="on" 打開壓縮功能
2) compressionMinSize="2048" 啟用壓縮的輸出內(nèi)容大小,這里面默認(rèn)為2KB
3) noCompressionUserAgents="gozilla, traviata" 對(duì)于以下的瀏覽器,不啟用壓縮
4) compressableMimeType="text/html,text/xml" 壓縮類型 disableUploadTimeout設(shè)置是否上傳超時(shí)。 開始講解catalina.bat中的參數(shù)設(shè)置: -Xms:JVM初始化堆大小
-Xmx:JVM堆最大值
MaxPermSize為永久對(duì)象(如jdbc驅(qū)動(dòng),各種隨jvm啟動(dòng)時(shí)加載的jar包)占用內(nèi)存數(shù)。
Xms 與 Xmx常規(guī)情況下應(yīng)該設(shè)置成同樣大小,否則會(huì)影響jvm性能。一般最大不超過2G。
壓力測(cè)試建議使用的工具:Microsoft Web Application Stress Tool
請(qǐng)于12月31日前做好相關(guān)的壓力測(cè)試,看看是否目前兩臺(tái)服務(wù)器在以下的資源推廣的情況下,能否承受相應(yīng)的流量。是否需要增加服務(wù)器。
- 短信發(fā)送(2次)
???? 1月25日 發(fā)送量: 53萬
- EDM發(fā)送(1次)
這是郵件關(guān)于需求部分的原內(nèi)容,我直接Copy下來。對(duì)這封郵件進(jìn)行一次解釋: 郵件中提到的家有蘭蔻這是一期的活動(dòng),活動(dòng)的內(nèi)容有:上傳一張化妝桌上的蘭蔻的圖片,圖片大小從幾十k到10M以下,在網(wǎng)站的頁面上展現(xiàn)的是縮略圖,點(diǎn)擊縮略圖會(huì)看到經(jīng)過壓制的符合一定比例的圖片,而不是原圖。用戶上傳圖片后,可以在附屬欄中填寫好朋友的郵件地址,請(qǐng)好朋友到此網(wǎng)站點(diǎn)擊他的圖片從而進(jìn)行拉票活動(dòng)。在此活動(dòng)進(jìn)行到第10天(包括第十天),蘭蔻會(huì)根據(jù)圖片的排名,在前20名的用戶得到蘭蔻的禮品。原拓?fù)鋱D如下:簡(jiǎn)單介紹一下軟硬件配置:兩臺(tái)DellR610(Intel5504*2/4G/146*3/1000M網(wǎng)卡*4),FW是cisco5504(并發(fā)連接數(shù):25000 用戶數(shù)無限制,網(wǎng)絡(luò)端口:8個(gè)快速以太網(wǎng)端口、1個(gè)SSC擴(kuò)展插槽,網(wǎng)絡(luò)吞吐量(Mbps):150),介紹系統(tǒng)軟件:操作系統(tǒng)Windows 標(biāo)準(zhǔn)版R2,web服務(wù)器Tomcat6.0.20,DBServer:MSSQL2008. 介紹一下JVM優(yōu)化: JVM優(yōu)化:
JVM的server版和client版的區(qū)別:
JVM動(dòng)態(tài)庫有client和server兩個(gè)版本,分別針對(duì)桌面應(yīng)用和服務(wù)器應(yīng)用做了相應(yīng)的優(yōu)化,client版本加載速度比較快,server版本加載速度比較慢但是運(yùn)行速度比較快。
操作手法:
把%JAVA_HOME%\jar\bin中的server的文件夾拷貝到%JAVA_HOME%同一級(jí)目錄的jre中的bin目錄下,然后修改C:\Program Files\Java\jre6\lib\i386目錄中的jvm.cfg,把-server KNOWN 放在-client KNOWN前面,然后保存。現(xiàn)在可以在dos窗口中寫入命令:java -version來查看是否是server版本:
C:\Documents and Settings\actop>java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode) 介紹一下web服務(wù)器的參數(shù)配置: Server.xml: <Connector port="80" address="192.168.0.2" protocol="org.apache.coyote.http11.Http11NioProtocol"?
???????????????? maxHttpHeaderSize="8192"? URIEncoding="UTF-8" useBodyEncodingForURI="true"
???????????????? maxThreads="2000" minSpareThreads="75" maxSpareThreads="300"?
???????????????? enableLookups="false" redirectPort="8443" acceptCount="2000"
???????????????? compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"??
???????????????? connectionTimeout="50000" disableUploadTimeout="true"/>? catalina.bat: set JAVA_OPTS=-server -XX:+UseConcMarkSweepGC -Djava.rmi.server.hostname=XX.XX.XX.XX(your IP address) -Djava.awt.headless=true -Xms1400m -Xmx1400m -XX:NewSize=48m -XX:MaxNewSize=128m -XX:PermSize=128m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true
set CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
set CATALINA_OPTS=%CATALINA_OPTS% -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true 對(duì)以上參數(shù)做如下解釋: 首先我們對(duì)tomcat6.0.20的新特性進(jìn)行介紹: 首先講協(xié)議部分:參見網(wǎng)上博文: =========================================================================================================== [轉(zhuǎn)]Tomcat 6 支持 NIO -- Tomcat的四種基于HTTP協(xié)議的Connector性能比較
Tomcat 6 支持 NIO -- Tomcat的四種基于HTTP協(xié)議的Connector性能比較 Tomcat從5.5版本開始,支持以下四種Connector的配置分別為: <Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443"/>
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000"?? redirectPort="8443"/>
<Connector executor="tomcatThreadPool"? port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector executor="tomcatThreadPool" port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />
我們姑且把上面四種Connector按照順序命名為 NIO, HTTP, POOL, NIOP
為了不讓其他因素影響測(cè)試結(jié)果,我們只對(duì)一個(gè)很簡(jiǎn)單的jsp頁面進(jìn)行測(cè)試,這個(gè)頁面僅僅是輸出一個(gè)Hello World。假設(shè)地址是 http://tomcat1/test.jsp
我們依次對(duì)四種Connector進(jìn)行測(cè)試,測(cè)試的客戶端在另外一臺(tái)機(jī)器上用ab命令來完成,測(cè)試命令為: ab -c 900 -n 2000 http://tomcat1/test.jsp,最終的測(cè)試結(jié)果如下表所示(單位:平均每秒處理的請(qǐng)求數(shù)):
NIO??? HTTP??? POOL??? NIOP
281???? 65???? 208???? 365
666???? 66???? 110???? 398
692???? 65???? 66???? 263
256???? 63???? 94???? 459
440???? 67???? 145???? 363
由這五組數(shù)據(jù)不難看出,HTTP的性能是很穩(wěn)定,但是也是最差的,而這種方式就是Tomcat的默認(rèn)配置。NIO方式波動(dòng)很大,但沒有低于280 的,NIOP是在NIO的基礎(chǔ)上加入線程池,可能是程序處理更復(fù)雜了,因此性能不見得比NIO強(qiáng);而POOL方式則波動(dòng)很大,測(cè)試期間和HTTP方式一樣,不時(shí)有停滯。
由于linux的內(nèi)核默認(rèn)限制了最大打開文件數(shù)目是1024,因此此次并發(fā)數(shù)控制在900。
盡管這一個(gè)結(jié)果在實(shí)際的網(wǎng)站中因?yàn)楦鞣矫嬉蛩貙?dǎo)致,可能差別沒這么大,例如受限于數(shù)據(jù)庫的性能等等的問題。但對(duì)我們?cè)诓渴鹁W(wǎng)站應(yīng)用時(shí)還是具有參考價(jià)值的。 =========================================================================================================== Connector:客戶端和service之間的連接器。 protocol指定了該端口偵聽的協(xié)議類型,maxHttpHeaderSize:Http的Header的最大限制
URIEncoding:url傳參時(shí)的編碼格式
useBodyEncodingForURI:根據(jù)相應(yīng)該請(qǐng)求頁面request.CharacterEncoding參數(shù)對(duì)數(shù)據(jù)進(jìn)行重新編碼
maxThreads:Tomcat可創(chuàng)建的最大的線程數(shù)
minSpareThreads:初始化創(chuàng)建的線程數(shù)
maxSpareThreads:一旦創(chuàng)建的線程超過這個(gè)數(shù),Tomcat就將關(guān)閉不再需要的Socket線程
enableLookups:使用允許DNS查詢,通常情況下設(shè)置為false,設(shè)置為false就直接返回ip地址
acceptCount:當(dāng)所有可以使用的處理請(qǐng)求的線程樹都被使用時(shí),可以放到請(qǐng)求隊(duì)列中的請(qǐng)求數(shù),超過這個(gè)數(shù)的請(qǐng)求將不予處理。其實(shí),該屬性與ServerSocket(int port,int backlog)中的backlog參數(shù)意義相同,具體可參考ServerSocket的JDK API
connectionTimeout:網(wǎng)絡(luò)連接超時(shí),單位毫秒。設(shè)置為0表示永不超時(shí)
compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 在客戶端請(qǐng)求網(wǎng)頁后,從服務(wù)器端將網(wǎng)頁文件壓縮,再下載到客戶端,由客戶端的瀏覽器負(fù)責(zé)解壓縮并瀏覽。相對(duì)于普通的瀏覽過程HTML ,CSS,Javascript , Text ,它可以節(jié)省40%左右的流量。更為重要的是,它可以對(duì)動(dòng)態(tài)生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等輸出的網(wǎng)頁也能進(jìn)行壓縮,壓縮效率驚人
1) compression="on" 打開壓縮功能
2) compressionMinSize="2048" 啟用壓縮的輸出內(nèi)容大小,這里面默認(rèn)為2KB
3) noCompressionUserAgents="gozilla, traviata" 對(duì)于以下的瀏覽器,不啟用壓縮
4) compressableMimeType="text/html,text/xml" 壓縮類型 disableUploadTimeout設(shè)置是否上傳超時(shí)。 開始講解catalina.bat中的參數(shù)設(shè)置: -Xms:JVM初始化堆大小
-Xmx:JVM堆最大值
MaxPermSize為永久對(duì)象(如jdbc驅(qū)動(dòng),各種隨jvm啟動(dòng)時(shí)加載的jar包)占用內(nèi)存數(shù)。
Xms 與 Xmx常規(guī)情況下應(yīng)該設(shè)置成同樣大小,否則會(huì)影響jvm性能。一般最大不超過2G。
轉(zhuǎn)載于:https://blog.51cto.com/guoli0813/273230
總結(jié)
以上是生活随笔為你收集整理的兰蔻御用运维总结之一的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人质困境:多个人的囚徒困境(博弈论的诡计
- 下一篇: 开源arm项目学习