程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> xx通CGI流量控制,xxcgi流量控制

xx通CGI流量控制,xxcgi流量控制

編輯:C++入門知識

xx通CGI流量控制,xxcgi流量控制


流量控制共分2步,首先在CGI框架對用戶的ip作限制,第二限制每個CGI的流量。   一、基於IP的流量控制 用共享內存(shm)的方式保存基於ip的訪問信息。 配置文件中 <variable name="ip_limit_default" limit_int="60" shm_key="1653" recal_int="300" max_count="600" > shm_key是共享內存的id,limit_int是用戶超過限制後的冷凍時間,recal_int是統計時間,max_count是統計時間內允許的最大請求次數。   httpd啟動後,首次被訪問的cgi進行shm的初始化,申請一段連續的空間並初始化為0. shm結構如下圖所示: 當一個請求到來時,根據用戶ip做hash,我們的算法很簡單,取ip地址最末一個字節,將ip散列到256個段(如上圖所示),再在每個段內根據key(ip地址)進行順序查找,查找時會統計所過結點的最小count。如果沒找到,首先用空結點,其次用24小時未更新過的結點,最後用訪問次數最少(即最小count的結點)。這樣總會返回一個結點。   每recal_int時間對count和time重置,如果count超過了max_count就對用戶冷凍limit_int時間,limit_int時間過後再將time和count重置。   這裡面所有的更新都是基於用戶請求的到來,系統不會根據time對shm結點做老化處理   二、基於CGI的流量控制 利用CKV的超時來統計CGI的流量。 在CKV建立兩個key, LockKey用於統計時間,LimitKey用於統計次數。 LockKey會根據設置的expire時間自動過期。 每個請求到來時,取Limitkey加1,未達上限就繼續訪問,達到上限時要檢查LockKey是否過期,如果過期則重置LimitKey並放行,未過期則限制訪問。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved