漏桶演算法
⑴ 關於Mysql高並發處理機制是如何實現
mysql的最大連接數默認是100, 這個數值對於並發連接很多的資料庫應用是遠遠不夠的,當連接請求大於默認連接數後,就會出現無法連接資料庫的錯誤,因此我們需要把它適當調大一些。
調節方法為:
1.linux伺服器中:改my.cnf中的值就行了
2.Windows伺服器中(我用的):
在文件「my.ini」中找到段 [mysqld],在其中添加一行
max_connections=200 ### 200可以更改為想設置成的值.
然後重啟"mysql"服務。
/mysqladmin所在路徑/mysqladmin -uroot -p variables
輸入root資料庫賬號的密碼後可看到
| max_connections | 1000 |
其他需注意的:
在編程時,由於用mysql語句調用資料庫時,在每次之執行語句前,會做一個臨時的變數用來打開資料庫,所以你在使用mysql語句的時候,記得在每次調用完mysql之後就關閉mysql臨時變數。
另外對於訪問量大的,可以考慮直接寫到文本中,根據預測的訪問量,先定義假若是100個文件文件名依次為1.txt,2.txt...100.txt。需要的時候,再對所有文本文件中的數據進行分析,再導入資料庫。
⑵ 深入淺出mysql和高性能mysql哪本好
限流演算法目前程序開發過程常用的限流演算法有兩個:漏桶演算法和令牌桶演算法。
漏桶演算法
漏桶演算法的原理比較簡單,請求進入到漏桶中,漏桶以一定的速率漏水。當請求過多時,水直接溢出。可以看出,漏桶演算法可以強制限制數據的傳輸速度。如圖所示,把請求比作是水滴,水先滴到桶里,通過漏洞並以限定的速度出水,當水來得過猛而出水不夠快時就會導致水直接溢出,即拒絕服務。
圖片來自網路
漏桶演算法和令牌桶演算法的選擇
兩者的主要區別漏桶演算法能夠強行限制處理數據的速率,不論系統是否空閑。而令牌桶演算法能夠在限制數據的平均處理速率的同時還允許某種程度的突發流量。如何理解上面的含義呢?漏桶演算法,比如系統吞吐量是 120/s,業務請求 130/s,使用漏斗限流 100/s,起到限流的作用,多餘的請求將產生等待或者丟棄。對於令牌桶演算法,每秒產生 100 個令牌,系統容量 200 個令牌。正常情況下,業務請求 100/s 時,請求能被正常被處理。當有突發流量過來比如 200 個請求時,因為系統容量有 200 個令牌可以同一時刻處理掉這 200 個請求。如果是漏桶演算法,則只能處理 100 個請求,其他的請求等待或者被丟棄。
⑶ GTS的通用流量整形
流量整形(traffic shaping)典型作用是限制流出某一網路的某一連接的流量與突發,使這類報文以比較均勻的速度向外發送。流量整形通常使用緩沖區和令牌桶來完成,當報文的發送速度過快時,首先在緩沖區進行緩存,在令牌桶的控制下再均勻地發送這些被緩沖的文。
流量整形的核心演算法有以下兩種,具體採用的技術為GTS(Generic Traffic Shaping),通用流量整形
漏桶演算法(Leaky Bucket)
漏桶演算法是網路世界中流量整形(Traffic Shaping)或速率限制(Rate Limiting)時經常使用的一種演算法,它的主要目的是控制數據注入到網路的速率,平滑網路上的突發流量。漏桶演算法提供了一種機制,通過它,突發流量可以被整形以便為網路提供一個穩定的流量。
令牌桶演算法(Token Bucket)
有時人們將漏桶演算法與令牌桶演算法錯誤地混淆在一起。而實際上,這兩種演算法具有截然不同的特性並且為截然不同的目的而使用。它們之間最主要的差別在於:漏桶演算法能夠強行限制數據的傳輸速率,而令牌桶演算法能夠在限制數據的平均傳輸速率的同時還允許某種程度的突發傳輸。
在某些情況下,漏桶演算法不能夠有效地使用網路資源。因為漏桶的漏出速率是固定的參數,所以即使網路中不存在資源沖突(沒有發生擁塞),漏桶演算法也不能使某一個單獨的流突發到埠速率。因此,漏桶演算法對於存在突發特性的流量來說缺乏效率。而令牌桶演算法則能夠滿足這些具有突發特性的流量。通常,漏桶演算法與令牌桶演算法可以結合起來為網路流量提供更大的控制。
GTS
GTS可以對不規則或不符合預定流量特性的流量進行整形,使得網路上下游之間的帶寬匹配。GTS與CAR一樣均採用了令牌桶技術來控制流量,但主要區別在於:利用CAR進行報文流量控制時對不符合流量特性的報文進行丟棄,而GTS對於不符合流量特性的報文則是進行緩沖減少了報文的丟棄,同時滿足報文的流量特性。
GTS可以對介面上指定的報文流或所有報文進行整形當報文到來的時候,首先對報文進行分類如果報文不需要進行GTS處理,就繼續發送不經過令牌桶的處理;如果報文需要進行 GTS處理,則與令牌桶中的令牌進行比較。
令牌桶按用戶設定的速度向桶中放置令牌,如果令牌桶中有足夠的令牌可以用來發送報文,則報文直接被繼續發送下去,同時令牌桶中的令牌量按報文的長度做相應的減少,當令牌桶中的令牌少到報文不能再發送時,報文將被緩存入GTS隊列中。
當GTS隊列中有報文的時候,GTS按一定的周期從隊列中取出報文進行發送。 每次發送都會與令牌桶中的令牌數作比較。直到令牌桶中的令牌數減少到隊列中的報文不能 再發送或是隊列中的報文全部發送完畢為止。
⑷ 漏桶演算法的漏桶演算法和令牌桶演算法的區別
漏桶演算法與令牌桶演算法在表面看起來類似,很容易將兩者混淆。但事實上,這兩者具有截然不同的特性,且為不同的目的而使用。漏桶演算法與令牌桶演算法的區別在於:
l 漏桶演算法能夠強行限制數據的傳輸速率。
l 令牌桶演算法能夠在限制數據的平均傳輸速率的同時還允許某種程度的突發傳輸。
需要說明的是:在某些情況下,漏桶演算法不能夠有效地使用網路資源。因為漏桶的漏出速率是固定的,所以即使網路中沒有發生擁塞,漏桶演算法也不能使某一個單獨的數據流達到埠速率。因此,漏桶演算法對於存在突發特性的流量來說缺乏效率。而令牌桶演算法則能夠滿足這些具有突發特性的流量。通常,漏桶演算法與令牌桶演算法結合起來為網路流量提供更高效的控制。
⑸ 漏桶演算法的優點
*信源可以容易地保證它的通信量符合標准;
*網路可以容易地驗證通信量是否符合規范;
*網路可以保證嚴格的延遲界限,避免一切由緩沖區溢出引起的丟失;
*由於服務質量根據嚴格的界限說明,用戶能夠驗證網路是否提供了請求的服務質量。
⑹ 流量整形的流量整形的核心演算法
流量整形的核心演算法有以下兩種,具體採用的技術為GTS(Generic Traffic Shaping),通用流量整形: 漏桶演算法(Leaky Bucket)
漏桶演算法是網路世界中流量整形(Traffic Shaping)或速率限制(Rate Limiting)時經常使用的一種演算法,它的主要目的是控制數據注入到網路的速率,平滑網路上的突發流量。漏桶演算法提供了一種機制,通過它,突發流量可以被整形以便為網路提供一個穩定的流量。 令牌桶演算法(Token Bucket)
有時人們將漏桶演算法與令牌桶演算法錯誤地混淆在一起。而實際上,這兩種演算法具有截然不同的特性並且為截然不同的目的而使用。它們之間最主要的差別在於:漏桶演算法能夠強行限制數據的傳輸速率,而令牌桶演算法能夠在限制數據的平均傳輸速率的同時還允許某種程度的突發傳輸。
在某些情況下,漏桶演算法不能夠有效地使用網路資源。因為漏桶的漏出速率是固定的參數,所以即使網路中不存在資源沖突(沒有發生擁塞),漏桶演算法也不能使某一個單獨的流突發到埠速率。因此,漏桶演算法對於存在突發特性的流量來說缺乏效率。而令牌桶演算法則能夠滿足這些具有突發特性的流量。通常,漏桶演算法與令牌桶演算法可以結合起來為網路流量提供更大的控制。
⑺ 什麼是漏桶演算法和令牌桶演算法
什麼是令牌桶
在我們討論突發數據量之前,我們首先要理解令牌桶的概念。令牌桶本身沒有丟棄
和優先順序策略,
令牌桶是這樣工作的:
1. 令牌以一定的速率放入桶中。
2. 每個令牌允許源發送一定數量的比特。
3. 發送一個包,流量調節器就要從桶中刪除與包大小相等的令牌數。
4. 如果沒有足夠的令牌發送包,這個包就會等待直到有足夠的令牌(在整形
器的情況下)或者包被丟棄,也有可能被標記更低的DSCP(在策略者的情況下)。
5. 桶有特定的容量,如果桶已經滿了,新加入的令牌就會被丟棄。因此,在
任何時候,源發送到網路上的最大突發數據量與桶的大小成比例。令牌桶允許突發,
但是不能超過限制。
Cisco IOS 流量策略(Traffic Policers)
IOS支持兩種流量策略:
1. 傳統的Cisco流量策略:CAR承諾接入速率,使用命令
Router(config-if)#rate-limit {input | output} CIR (bps)
Bc(burst-normal) Be(burst-max) conform-action action exceed-action action
2. 新型的Cisco流量策略:基於類的策略(Class-based policer),使用模
塊化Qos CLI(MQC)語法。可以使用MQC命令建立流量策略並把策略應用到介面。
一個流量策略包括一個流量類(traffic class)和一個或多個Qos特性。Policy
命令用來執行流量策略特性,它指定了一個流量類所需要的最大速率,超過這個速
率Qos系統會立刻執行一個操作,標準的操作是丟棄或重置包頭的DSCP欄位。Policy
命令的語法是:
police cir<bps> Bc<bc> Be<be> conform<conform-action> exceed
<exceed-action> violate<violate-action>
理解Bc和Be
對於超額的數據包,流量策略並不會把它們緩存稍候轉發,只有整形器(shaper)
會這樣做。流量策略只執行一個發送或不發送的策略。因為不能緩存數據包,所以
在發生擁塞時,所能做的最好的方法就是通過配置適當的超額突發數據量Be來不那
么過分的丟棄數據包。這一點對理解流量策略使用Bc和Be來保證達到CIR是非常
重要的。
超額參數模仿路由器的通用緩存規則。The rule recommends configuring buffering
equal to the round-trip time bitrate to accommodate the outstanding TCP
windows of all connections in times of congestion.
突發參數 目的 推薦公式
普通突發 · 執行標準的令牌桶 · 設置最大數量的令牌(盡管如
果Be>Bc的話可以借到令牌). · 決定令牌桶有多大,因為如果桶已經滿了那麼令
牌將被丟棄而不會再加入到桶中。 CIR [bps] * (1 byte)/(8 bits) * 1.5
seconds Note: 1.5 seconds is the typical round trip time.
超額突發 · 為令牌桶提供超額突發能力 · 如果Bc = Be那麼不
支持超額突發 · 當Bc = Be,流量調節器就不能借令牌,當令牌不夠時只能丟棄數
據包 兩倍的Bc
對TCP流量的測試表明,Bc 和Be的數值應該近似等於配置的平均速率在兩秒鍾內
的流量。如果你想限制流量在1Mb,應該把Bc 設置在1-2Mb,Be在2-4Mb。
舉個例子,如果我們想把輸出速率限制在1.5Mbps,我們可以做一下步驟:
1. 把承諾速率從比特轉換成位元組,因為突發數據量的單位為位元組。
1500000 bits / 8 bits = 187500 bytes
2. 使用標準的1.5秒往返時間(round-trip time)計算Bc
187500 bytes * 1.5秒 = 281250 bytes
3. 兩倍的Bc為Be
281250 bytes * 2 = 562500 bytes
使用命令
rate-limit input 1500000 281250 562500 conform-action {action}
exceed-action {action}
超額突發數據量
當數據包到達時可用的令牌數目小於包的大小,就可以使用超額突發數據量。包會
請求借用令牌。可以通過配置大於Bc的Be的數值來為令牌桶提供超額突發能力。
可以通過下面兩個例子來理解Be。
第一個例子說明怎樣配置CAR策略來允許所有的IP流量。管理員在T3線路上提供
了便宜的20Mbps的子速率服務。用戶只花費子速率帶寬的金額,也可以按需要增加
帶寬。CAR限制了用戶可用的流量速率,用戶只能使用規定的速率加上承諾的突發
數據量。可以適當的設置Be=32000。
interface hssi 0/0/0
rate-limit output 20000000 24000 32000 conform-action transmit
exceed-action drop
下一個例子,用戶只能發送24000位元組的突發數據量,所有超過限制的數據包都要
被丟棄,因為設置Bc=Be,數據包流不能通過超額突發能力來借用令牌。
interface Hssi0/0/0
rate-limit output 20000000 24000 24000 conform-action transmit
exceed-action drop
正確設置突發數據量的重要性
策略以位元組為單位指定了突發數據量,基於類的策略(class-based policer)支持
最小的突發數據量為1000位元組,包括第二層包頭。
突發數據量的目的是逐漸的丟棄數據包,就像RED那樣,並且避免尾丟棄。設置足
夠高的突發數據量對保證良好的吞吐量是非常重要的。
設置突發數據量時,考慮一下內容:
1. 如果突發數據量設置的過低,數據到達的速率將遠遠低於配置的速率。
2. 懲罰暫時突發對TCP流的吞吐量來說是相當不利的,具體情況請察看RFC
2001 and Random Early Detection (RED) gateways for Congestion Avoidance。
設置突發數據量來允許路由器容納暫時突發。
3. 對離開介面的數據包的處理基於包的大小和桶中剩餘的令牌數。
4. 在基於類的策略中,流量測量器不論介面是否擁塞都是激活的。每個包都
會經過令牌桶測量系統來決定是否符合配置的參數。
5. 如果數據突發量非常大而且非常突然,那麼配置較高的超額突發數據量可
以保證超額令牌桶中存放較多的令牌。而且可以調整介面的MTU等於或大於突發數
據量大小。
允許的突發數據量數值
最初,包括IOS12.0,rate-limit命令支持承諾和超額的突發數據量的范圍是:
Router1(config-if)#rate-limit input 18000000 ?
<8000-2000000> Normal burst bytes
Router1(config-if)#rate-limit input 18000000 2000000 ?
<8000-8000000> Maximum burst bytes
Router1(config-if)#rate-limit input 18000000 2000000
IOS12.1增加了突發數據量的最大值:
7500-107(config)#interface atm 1/0/0
7500-107(config-if)#rate-limit output ?
<8000-2000000000> Bits per second
access-group Match access list
qos-group Match qos-group ID<b
⑻ 令牌桶演算法的簡介
在網路中傳輸數據時,為了防止網路擁塞,需限制流出網路的流量,使流量以比較均勻的速度向外發送。令牌桶演算法就實現了這個功能,可控制發送到網路上數據的數目,並允許突發數據的發送。
令牌桶演算法是網路流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一種演算法。典型情況下,令牌桶演算法用來控制發送到網路上的數據的數目,並允許突發數據的發送。
大小固定的令牌桶可自行以恆定的速率源源不斷地產生令牌。如果令牌不被消耗,或者被消耗的速度小於產生的速度,令牌就會不斷地增多,直到把桶填滿。後面再產生的令牌就會從桶中溢出。最後桶中可以保存的最大令牌數永遠不會超過桶的大小。
傳送到令牌桶的數據包需要消耗令牌。不同大小的數據包,消耗的令牌數量不一樣。
令牌桶這種控制機制基於令牌桶中是否存在令牌來指示什麼時候可以發送流量。令牌桶中的每一個令牌都代表一個位元組。如果令牌桶中存在令牌,則允許發送流量;而如果令牌桶中不存在令牌,則不允許發送流量。因此,如果突發門限被合理地配置並且令牌桶中有足夠的令牌,那麼流量就可以以峰值速率發送。
令牌桶演算法的基本過程如下:
假如用戶配置的平均發送速率為r,則每隔1/r秒一個令牌被加入到桶中;
假設桶最多可以存發b個令牌。如果令牌到達時令牌桶已經滿了,那麼這個令牌會被丟棄;
當一個n個位元組的數據包到達時,就從令牌桶中刪除n個令牌,並且數據包被發送到網路;
如果令牌桶中少於n個令牌,那麼不會刪除令牌,並且認為這個數據包在流量限制之外;
演算法允許最長b個位元組的突發,但從長期運行結果看,數據包的速率被限製成常量r。對於在流量限制外的數據包可以以不同的方式處理:
它們可以被丟棄;
它們可以排放在隊列中以便當令牌桶中累積了足夠多的令牌時再傳輸;
它們可以繼續發送,但需要做特殊標記,網路過載的時候將這些特殊標記的包丟棄。
注意:令牌桶演算法不能與另外一種常見演算法「漏桶演算法(Leaky Bucket)」相混淆。這兩種演算法的主要區別在於「漏桶演算法」能夠強行限制數據的傳輸速率,而「令牌桶演算法」在能夠限制數據的平均傳輸速率外,還允許某種程度的突發傳輸。在「令牌桶演算法」中,只要令牌桶中存在令牌,那麼就允許突發地傳輸數據直到達到用戶配置的門限,因此它適合於具有突發特性的流量。
⑼ 計算機操作系統中的漏桶,令牌桶演算法
我也不明白