1. 程式人生 > >Tomcat 預設支援的處理請求的併發數量

Tomcat 預設支援的處理請求的併發數量

這裡參閱了網路上一段著名的對Servlet執行緒安全性進行測試的程式碼(http://zwchen.iteye.com/blog/91088)。執行之後,我們可以看一下這個例子的輸出:

package p.test.servlet.threadSecurity;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(asyncSupported = true, urlPatterns = { "/threadSafeTestServlet" })
public class ThreadSafeTestServlet extends HttpServlet {

	private static final long serialVersionUID = -5360278358684235455L;
	// 定義一個例項變數,並非一個執行緒安全的變數
	private int counter = 0;

	public void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}

	public void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// 輸出當前Servlet的資訊以及當前執行緒的資訊
		System.out.println(this + ":" + Thread.currentThread()
				+ " Startttttttttttttttttttttt");
		// 迴圈,並增加例項變數counter的值
		for (int i = 0; i < 5; i++) {
			System.out.println(this + ":" + Thread.currentThread()
					+ "Counter = " + counter);
			try {
				Thread.sleep(20000);
				counter++;
			} catch (InterruptedException exc) {
			}
		}

		System.out.println(this + ":" + Thread.currentThread()
				+ " Enddddddddddddddddddddddddd");

//		resp.getWriter().println(
//				this + ":" + Thread.currentThread()
//						+ " Enddddddddddddddddddddddddd");
//		resp.getWriter().println("Done");
//		resp.getWriter().flush();
//		resp.getWriter().close();

	}
}


[email protected]:Thread[http-8081-Processor23,5,main] 
Counter = 60 
Counter = 61 
Counter = 62 
Counter = 65 
Counter = 68 
Counter = 71 
Counter = 74 
Counter = 77 
Counter = 80 
Counter = 83 


[email protected]:Thread[http-8081-Processor22,5,main] 
Counter = 61 
Counter = 63 
Counter = 66 
Counter = 69 
Counter = 72 
Counter = 75 
Counter = 78 
Counter = 81 
Counter = 84 
Counter = 87 


[email protected]:Thread[http-8081-Processor24,5,main] 
Counter = 61 
Counter = 64 
Counter = 67 
Counter = 70 
Counter = 73 
Counter = 76 
Counter = 79 
Counter = 82 
Counter = 85 
Counter = 88

Tomcat 3.0, 預設的狀態下,沒有大量請求時,併發數好像是 50,

更大量的請求到來時,預設的併發數好像可以自動增加到 300,

但在這裡,像這樣如果命名一個 類變數 counter,肯定不是執行緒安全的,

相關推薦

Tomcat 預設支援處理請求併發數量

這裡參閱了網路上一段著名的對Servlet執行緒安全性進行測試的程式碼(http://zwchen.iteye.com/blog/91088)。執行之後,我們可以看一下這個例子的輸出: package p.test.servlet.threadSecurity; imp

tomcat web伺服器之請求併發能力

Tomcat是Apache 軟體基金會(Apache Software Foundation)的Jakarta 專案中的一個核心專案,目前比較流行的Web 應用伺服器。 當一個程序有 500 個執行

Tomcat如何使用執行緒池處理遠端併發請求

# Tomcat如何使用執行緒池處理遠端併發請求 通過了解學習tomcat如何處理併發請求,瞭解到執行緒池,鎖,佇列,unsafe類,下面的主要程式碼來自 java-jre: `sun.misc.Unsafe` `java.util.concurrent.ThreadPoolExecutor` `java

讓Windows Server 2008 + IIS 7+ ASP.NET 支援10萬併發請求--手動解決方案(轉載)

今天下午17點左右,部落格園部落格站點出現這樣的錯誤資訊: Error Summary: HTTP Error 503.2 - Service Unavailable The [email protected] setting is being exceeded. 

iOS開發系列--並行開發(處理多個網路請求併發的情況)

概覽 大家都知道,在開發過程中應該儘可能減少使用者等待時間,讓程式儘可能快的完成運算。可是無論是哪種語言開發的程式最終往往轉換成組合語言進而解釋成機器碼來執行。但是機器碼是按順序執行的,一個複雜的多步操作只能一步步按順序逐個執行。改變這種狀況可以從兩個角度出發:對於單核處理

nginx比apache處理靜態檔案速度快,但是nginx處理大量併發的php請求時,容易出現502錯誤,頻率大概是多少

首先要明確一點的是502是怎麼出現的,為什麼會出現502呢?一般而言,出現502的錯誤是因為php-cgi連線數不夠導致的。舉個例子:php-cgi開10個程序,前端發20個請求,每個請求的指令碼都sleep100s,那麼必然有至多10個請求會出現502錯誤。因此,出現502是因為php程序不夠用了,和ngi

nginx子請求併發處理

子請求並非http協議標準的實現,可以說是nginx所特有的設計, 為什麼需要子請求呢? 一般認為這主要是為了提高nginx內部對單個客戶端請求處理的併發能力。如果客戶端的某個主請求訪問了多個資源(例如通過ssi功能包含了a.html,  b.hmtl、c.html三個資源)

【雜談】Spring Boot 預設支援併發

Spring Boot應用支援的最大併發量是多少? Spring Boot 能支援的最大併發量主要看其對Tomcat的設定,可以在配置檔案中對其進行更改。當在配置檔案中敲出max後提示值就是它的預設值。 我們可以看到預設設定中,Tomcat的最大執行緒數是200,最大連線數是10000。 併發量指的

執行緒池處理併發請求

背景 本系統(支付系統)會在每個月特定時間(如賬單日某個時間)接收上游系統發起的大量請求並進行處理,並在處理完成後返回結果給上游系統。而本系統接收到請求進行處理的過程是呼叫第三方(支付公司)進行處理並獲取結果。 系統原實現方案沒有采用任何控制請求併發數的措施,接

jetty處理請求路徑與tomcat的不同,圖片出不來

資料庫中存的路徑是/upload/2014/07/10/1404956103602.jpg 訪問時根據專案路徑拼出來的絕對路徑是http://localhost:8080/cms-0.0.1//upload/2014/07/10/1404956103602.jpg 此路徑在

瀏覽器併發處理請求個數一覽表

   以前總在想一個功能請求多有什麼影響,因為之前用httpwatch看到的很多請求是並行的。剛看了一個資料才知道,原來各種瀏覽器,各版本都有並行處理請求的個數。如果一個功能請求數太多,肯定會影響速度。    版本     HTTP1.0    HTTP1.1

PHP中利用redis實現訊息佇列處理併發請求

將請求存入redis 為了模擬多個使用者的請求,使用一個for迴圈替代 //redis資料入隊操作 $redis = new Redis(); $redis->connect('127.0.0.1',6379); for($i=0;$i<50;$i++){

Tomcat處理請求流程

Connector元件的Acceptor監聽客戶端套接字連線並接收Socket。 將連線交給執行緒池Executor處理,開始執行請求響應任務。 Processor元件讀取訊息報文,解析請求行、請求體、請求頭,封裝成Request物件。 Mapper元件根據請求行的URL值和請求頭的Ho

PHP中利用redis實現訊息佇列處理併發請求--簡潔程式碼實現效果

將請求存入redis 為了模擬多個使用者的請求,使用一個for迴圈替代 //redis資料入隊操作 $redis = new Redis(); $redis->connect('127.0.

讓Windows Server 2008 + IIS 7+ ASP.NET 支援10萬併發請求

由於之前使用的是預設配置,伺服器最多隻能處理5000個同時請求,今天下午由於某種情況造成同時請求超過5000,從而出現了上面的錯誤。 為了避免這樣的錯誤,我們根據相關文件調整了設定,讓伺服器從設定上支援10萬個併發請求。 具體設定如下: 1. 調整IIS 7應用程式池佇列長度 由原來的預設1000改為

Nginx限制IP併發連線數及每秒處理請求

為了防止伺服器被惡意採集或ddos攻擊給搞死, 所以給限個速。 這裡主要使用Nginx的ngx_http_limit_req_module和ngx_http_limit_conn_module來控制訪問量. 這兩個模組在Nginx中已內建, 在nginx.conf檔案

curl批處理實現,多請求併發

在面試過程中遇到一個問題,加入一個一個網站訪問一次需要兩秒,我們如何實現在2秒左右請求三次? 面試官想問的就是如何使用curl併發處理請求 關於curl_multi_init() 一般來說,想到要用curl_multi_init()時,目的是要同時請求多個url,而

Tomcat處理請求的過程

https://www.cnblogs.com/crazylqy/p/4706223.html 1– Tomcat Server處理一個http請求的過程 假設來自客戶的請求為: http://localhost:8080/wsota/wsota_index.j

Tomcat處理請求過程和重要引數詳解

Tomcat處理使用者連線請求模式 BIO:阻塞模型 NIO:非阻塞模型 APR:高效能,可擴充套件的模式,Tomcat8版本預設模式 在使用tomcat時,經常會遇到連線數、執行緒數之類的配置問題,要真正理解這些概念,必須先了解Tomcat的聯結器(Connector)。在

Tomcat原始碼學習--servlet請求處理

當前tomcat 8.5.20中已經不再使用bio模型,預設支援NIO實現的org.apache.coyote.http11.Http11NioProtocol,當前tomcat支援的io模型如下: 在Tomcat啟動時會啟用一個埠來監聽請求,並且會啟動多個執行緒來處理相關的