servlet從地址欄獲取參數(shù) idea報(bào)500的錯(cuò)誤是怎么回事?
idea報(bào)500的錯(cuò)誤是怎么回事?500是:服務(wù)器端出現(xiàn)錯(cuò)誤,再次出現(xiàn)這種報(bào)錯(cuò)說(shuō)明代碼有問(wèn)題,服務(wù)器編譯文件;很可能是方法名、文件名等等寫(xiě)錯(cuò)了。擴(kuò)大內(nèi)容:404提示錯(cuò)誤:那就證明服務(wù)器能找到文件,代碼
idea報(bào)500的錯(cuò)誤是怎么回事?
500是:服務(wù)器端出現(xiàn)錯(cuò)誤,再次出現(xiàn)這種報(bào)錯(cuò)說(shuō)明代碼有問(wèn)題,服務(wù)器編譯文件;很可能是方法名、文件名等等寫(xiě)錯(cuò)了。
擴(kuò)大內(nèi)容:
404提示錯(cuò)誤:那就證明服務(wù)器能找到文件,代碼中的文件路徑有問(wèn)題。
405出現(xiàn)錯(cuò)誤:只能說(shuō)明訪問(wèn)文件的錯(cuò)了,.例如有的servlet文件沒(méi)有辦法由jsp或servlet,再轉(zhuǎn)發(fā)或傳送過(guò)去,沒(méi)法然后在瀏覽器用localhost地址再打開(kāi)。
tomcat7默認(rèn)參數(shù)?
Socket參數(shù)選項(xiàng):
1、TCP_NODELAY:可以表示立即郵箱里數(shù)據(jù)。
2、but_RESUSEADDR:表示愿意重用Socket所帳號(hào)綁定的本地地址
3、but_TIMEOUT:表示接受數(shù)據(jù)時(shí)的連接超時(shí)時(shí)間。
4、yeah_LINGER:表示當(dāng)負(fù)責(zé)執(zhí)行count();方法時(shí)候,有無(wú)表述關(guān)了底層的socket。(Reset報(bào)文)
setSoLinger(true,0):想執(zhí)行該方法,那就不能執(zhí)行Socket的locked方法,該方法也會(huì)立玄直接返回,但底層的Socket也會(huì)馬上關(guān)掉,所有未發(fā)送完的其余數(shù)據(jù)被丟棄
setSoLinger(true,3600):這樣想執(zhí)行Socket的locked方法,該方法絕對(duì)不會(huì)立刻回,而進(jìn)入造成堵塞狀態(tài),同樣,底層的Socket也會(huì)數(shù)次發(fā)送余下的數(shù)據(jù),唯有不滿足下面的兩個(gè)條件之一,closed方法才會(huì)前往:
(1):底層的Socket也正在發(fā)送完所有的殘余數(shù)據(jù)
(2):但他底層的Socket還還沒(méi)有發(fā)送中完所有的殘余數(shù)據(jù),但早就阻塞住了3600秒,locked()方法的會(huì)堵塞時(shí)間遠(yuǎn)遠(yuǎn)超過(guò)3600秒,也會(huì)返回,余下未發(fā)送的數(shù)據(jù)被丟棄。
_tw_reuse1來(lái)表示啟動(dòng)予以重任。愿意將TIME-WAITsockets然后再主要用于新的TCP直接連接,默認(rèn)為0,表示關(guān)了;
_tw_recycle1意思是自動(dòng)打開(kāi)TCP直接連接中TIME-WAITsockets的急速回收,默認(rèn)為0,它表示關(guān)了。
5、but_SNFBUF:它表示正在發(fā)送數(shù)據(jù)的緩沖大小
6、yeah_RCVBUF:可以表示進(jìn)行數(shù)據(jù)的緩沖區(qū)的大小
7、so_KEEPALIVE:它表示長(zhǎng)時(shí)間處于空閑狀態(tài)的SOCEKT,是否需要自動(dòng)出現(xiàn)把他/她關(guān)了
8、OOBINLINE:來(lái)表示如何確定接受發(fā)送一個(gè)字節(jié)的TCP萬(wàn)分火急數(shù)據(jù)
默認(rèn)參數(shù)
注:Connector大多在HOME_TOMCAT/conf/servser.xml文件內(nèi)
#正常了參數(shù)
Connectorport8080protocolHTTP/1.1
connectionTimeout20000 edirectPort8443/
配置參數(shù)調(diào)試
#優(yōu)化系統(tǒng)參數(shù)
Connector port8080protocolHTTP/1.1maxThreads1000minSpareThreads100acceptCount1000maxConnections1000connectionTimeout20000maxHttpHeaderSize8192 cpNoDelaytruecompressiononcompressionMinSize2048disableUploadTimeouttrue edirectPort8443enableLookupsfalse%uRIEncodingUTF-8/
參數(shù)求答
1)port
注:代表上帝Tomcat端口號(hào),設(shè)置成8080。
2)protocol
注:協(xié)議類(lèi)型,可選類(lèi)型有4種,BIO(會(huì)堵塞型IO),NIO,NIO2和APR。
#BIOBIO(BlockingI/O)阻塞式I/O不能操作,傳統(tǒng)的JavaI/O不能操作(即包教材習(xí)題解答子包)。Tomcat在默認(rèn)情況下,是以bio模式運(yùn)行的,bio模式是三種運(yùn)行模式中性能最多的一種。BIO配置區(qū)分設(shè)置即可解決。
BIO更更適合去處理簡(jiǎn)單點(diǎn)流程,如程序全面處理較快這個(gè)可以立即趕往結(jié)果。簡(jiǎn)單的項(xiàng)目及應(yīng)用可以需要BIO。
#NIO IO(NewI/O)是JavaSE1.4及情報(bào)營(yíng)版本能提供的一種新的I/O操作(即包及其子包)。Javanio是一個(gè)基于緩沖區(qū)、非阻塞I/O操作的JavaAPI它具備比悠久的傳統(tǒng)I/O操作(bio)更合適的并發(fā)運(yùn)行性能。
NIO更適合我后臺(tái)必須耗時(shí)能夠完成只是請(qǐng)求的操作,如程序交給了請(qǐng)求后是需要也很工程巨大的處理這已請(qǐng)求,所以才沒(méi)能立即返回結(jié)果,這樣如果沒(méi)有區(qū)分BIO都會(huì)占內(nèi)存一個(gè)連接,而在用NIO后就可以將此連接上轉(zhuǎn)讓手續(xù)給其他請(qǐng)求,直至程序如何處理成功直接返回為止。
#APRAPR(Apache Portable Runtime/Apache可移植運(yùn)行時(shí)),是ApacheHTTP服務(wù)器的支持庫(kù)。你也可以簡(jiǎn)單啊地理解為:Tomcat將以JNI的形式動(dòng)態(tài)鏈接庫(kù)ApacheHTTP服務(wù)器的核心動(dòng)態(tài)鏈接庫(kù)來(lái)處理文件讀取或網(wǎng)絡(luò)傳輸能操作,從而極大地提高Tomcat對(duì)動(dòng)態(tài)和靜態(tài)文件的處理性能。
APR也可以極大實(shí)力提升Tomcat對(duì)支持靜態(tài)文件的處理性能,同樣如果你建議使用了HTTPS傳輸?shù)脑?,也可以修為提升SSL的處理性能。
#修改
//BIO
protocolHTTP/1.1
//NIO
protocol
//NIO2
protocol
//APR
protocol
3)maxThreads(線程池的大小默認(rèn)200)
注:連接器創(chuàng)建家族全面處理跪請(qǐng)線程的大數(shù)目,去處理同事只是請(qǐng)求的大的數(shù)目,默認(rèn)值為200。
如果一個(gè)執(zhí)行器與此連接器關(guān)聯(lián),則遺漏掉此屬性,而且該屬性將被選擇性的遺忘,所以該連接器將使用執(zhí)行器而不是一個(gè)內(nèi)部線程池來(lái)執(zhí)行任務(wù)。maxThreads是一個(gè)最重要的配置屬性,maxThreads配置的合理不然后會(huì)影響了Tomcat的去相關(guān)性能。maxThreads并不是配置的越大越好,當(dāng)然了你就算是配置成999999又是是沒(méi)有得用,因?yàn)檫@個(gè)比較大值是受操作系統(tǒng)及查找硬件所制約的,但是的最值的確一定是最優(yōu)值,因?yàn)槲覀兝^續(xù)追尋的應(yīng)該要是最優(yōu)值而并非比較大值。
QPS(Query Per Second):每秒鐘查詢(xún)率QPS是對(duì)一個(gè)某一特定的查詢(xún)服務(wù)器在相關(guān)規(guī)定時(shí)間內(nèi)所一次性處理流量多少的衡量標(biāo)準(zhǔn)。我們老愛(ài)建議使用QPS值來(lái)衡量能力一個(gè)服務(wù)器的性能。
QPS并發(fā)數(shù)/平均響應(yīng)時(shí)間
并發(fā)數(shù)QPS*平均響應(yīng)時(shí)間
一個(gè)系統(tǒng)吞吐量常見(jiàn)由QPS、并發(fā)數(shù)兩個(gè)因素決定,3套系統(tǒng)的這兩個(gè)值都是一個(gè)相對(duì)極限值,在應(yīng)用場(chǎng)景訪問(wèn)壓力下,如果某一項(xiàng)都沒(méi)有達(dá)到電腦系統(tǒng)最高值,系統(tǒng)的吞吐量就上不去的,要是壓力不再減小,系統(tǒng)的吞吐量倒是會(huì)下降,原因是系統(tǒng)高負(fù)荷工作,上下文切換、內(nèi)存等等其它消耗導(dǎo)致系統(tǒng)性能下降。所謂吞吐量這里也可以理解為最大速度能如何處理各位的次數(shù)。
所以才選擇一個(gè)比較合理的maxThreads值,反正并并非那就不容易的事。因?yàn)檫^(guò)多的線程只會(huì)照成,更多的內(nèi)存開(kāi)銷(xiāo),更多的CPU開(kāi)銷(xiāo),不過(guò)對(duì)提升到QPS確絲毫幫助;可以找到最適合線程數(shù)后實(shí)際簡(jiǎn)單的設(shè)置,可以不讓web系統(tǒng)更加穩(wěn)定,能夠得到最高,最穩(wěn)定點(diǎn)的QPS輸出。
#某些最佳的位置maxThreads的最適合值
(1)按照線上系統(tǒng)不停在用和用戶(hù)的不時(shí)增長(zhǎng)來(lái)參與性能測(cè)試,觀察QPS,響應(yīng)時(shí)間,這種會(huì)在爆發(fā)式增長(zhǎng)時(shí)系統(tǒng)奔潰,如雙12等。
(2)據(jù)公式計(jì)算,服務(wù)器端最佳的方法線程數(shù)量((線程在等待時(shí)間線程cpu時(shí)間)/線程cpu時(shí)間)*cpu數(shù)量,這種經(jīng)常會(huì)會(huì)被誤導(dǎo),因?yàn)槟承┫到y(tǒng)一次性處理環(huán)節(jié)可能會(huì)會(huì)需要的時(shí)間都很長(zhǎng),使影響大公式的結(jié)果。
(3)單、多用戶(hù)壓力測(cè)試,欄里點(diǎn)CPU的消耗,后再直接乘以2百分比,再通過(guò)壓測(cè),就像這個(gè)值的附近估計(jì)那就是最佳線程數(shù)量,這種理想場(chǎng)景比較好區(qū)分,實(shí)際中情況會(huì)比這個(gè)緊張的多。
(4)依據(jù)系統(tǒng)的自身情況根據(jù)情況,如硬件限制,系統(tǒng)限制,程序處理能力限制等。
(5)定時(shí)查看修改為不同的maxThreads值,看服務(wù)器服務(wù)控制器結(jié)果及用戶(hù)反應(yīng)。
#QPS和線程數(shù)的關(guān)系
(1)在最佳的位置線程數(shù)量之前,QPS和線程是一起遞減的關(guān)系,線程數(shù)量到了最佳線程之后,QPS持平,還在迅速下降,甚至略微下降,同樣或者時(shí)間緩慢迅速下降。
(2)同一個(gè)系統(tǒng)而言,意見(jiàn)的線程數(shù)就會(huì)(最佳的方法線程數(shù)一定而也不是配置的線程數(shù)就會(huì)),QPS越高。
#QPS和響應(yīng)時(shí)間的關(guān)系
(1)相對(duì)于像是的web系統(tǒng),響應(yīng)時(shí)間像是有CPU負(fù)責(zé)執(zhí)行時(shí)間IO靜靜的等待時(shí)間排成。
(2)CPU的執(zhí)行時(shí)間會(huì)減少,對(duì)QPS有實(shí)質(zhì)的提升,IO時(shí)間的減少,對(duì)QPS提升不明顯。如果要想肯定提升到QPS,360優(yōu)化系統(tǒng)的時(shí)候要再展開(kāi)系統(tǒng)優(yōu)化CPU消耗大戶(hù)。
4)minSpareThreads
注:線程的最大時(shí)運(yùn)行數(shù)目,這些一直持續(xù)運(yùn)行。如果不是未指定你,默認(rèn)值為10。
5)acceptCount(系統(tǒng)默認(rèn)為100,隊(duì)列,backlog:半隊(duì)列的大?。?/p>
注:的最隊(duì)列長(zhǎng)度。像是與maxThreads不同,默認(rèn)為100。
當(dāng)所有可能的請(qǐng)求處理線程都在使用時(shí)傳遍再連接請(qǐng)求的的最隊(duì)列長(zhǎng)度。如果不是未委托,默認(rèn)值為100。就像是系統(tǒng)設(shè)置的跟maxThreads一樣或一半,此值系統(tǒng)設(shè)置的過(guò)大會(huì)倒致排隊(duì)的請(qǐng)求連接失敗而未被一次性處理。因此這個(gè)值肯定是比較多依據(jù)什么應(yīng)用方法的訪問(wèn)峰值與平均值來(lái)仔細(xì)考慮配置。
6)maxConnections(NIO與NIO2的默認(rèn)值為10000,accept的Socket的大?。?/p>
注:在任何計(jì)算變量的時(shí)間內(nèi),服務(wù)器將進(jìn)行和如何處理的比較大連接到數(shù)。當(dāng)這個(gè)數(shù)字早就都沒(méi)有達(dá)到時(shí),服務(wù)器將認(rèn)可但不處理,在等待及時(shí)直接連接。NIO與NIO2的默認(rèn)值為10000,APR默認(rèn)值為8192。
7)connectionTimeout(設(shè)置到(connectionTimeout))
注:當(dāng)只是請(qǐng)求巳經(jīng)被得到,但未被處理,也就是靜靜的等待中的已超時(shí)時(shí)間。單位為10毫秒,默認(rèn)值為60000。通常情況下設(shè)置為30000。
8)maxHttpHeaderSize
注:幫忙和響應(yīng)的HTTP頭的的最大小,以字節(jié)為單位重新指定。要是還沒(méi)有指定,這個(gè)屬性被系統(tǒng)設(shè)置為8192(8KB)。
9)tcpNoDelay
注:如果沒(méi)有為true,服務(wù)器socket會(huì)系統(tǒng)設(shè)置TCP_NO_DELAY選項(xiàng),在大多數(shù)情況下可以不想提高性能。缺省情況下設(shè)為true。
10)compression
注:是否重新設(shè)置gzip壓解,默認(rèn)為自動(dòng)關(guān)閉狀態(tài)。這個(gè)參數(shù)的可得到值為“off”(不不使用壓縮),“on”(高壓縮文本數(shù)據(jù)),“force”(在所有的情況下滿壓縮后)。
11)compressionMinSize
注:如果不是compressionon,則禁用此項(xiàng)。被高壓縮前數(shù)據(jù)的最小值,也就是超過(guò)這個(gè)值后才被壓解。要是沒(méi)有委托,這個(gè)屬性默認(rèn)為“2048”(2K),單位為unsigned。
12)disableUploadTimeout
注:這個(gè)標(biāo)志愿意tomcatContainer在一個(gè)servlet執(zhí)行的時(shí)候,使用一個(gè)有所不同的,更長(zhǎng)的連接到連接失敗。最終的結(jié)果是給servlet更長(zhǎng)的時(shí)間希望能夠完成其不能執(zhí)行,的或在數(shù)據(jù)上傳的時(shí)候更長(zhǎng)的超時(shí)時(shí)間。如果沒(méi)有重新指定,設(shè)為false。
13)enableLookups
注:關(guān)閉DNS反向網(wǎng)上查詢(xún)。
14)URIEncoding
注:URL編碼字符集。