亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前段時間公司有個應用做什么營銷活動,不知道咋回事,一個平常之后1-2萬人在線的應用,突然來了10多萬人,然后呢,系統就異常的慢,異常的慢,持續了很長時間,被客戶投訴的很慘。就說負責該應用的項目組,幾乎取消了當年的獎金。好慘。。。

于是乎,領導就以史為鑒,讓我等研究下,怎么才能在這種異常的流量中保證應用不死,我第一個想到的就是,應用不可能突然多出來很多服務能力,那就只有把多出來的流量攔掉唄,應用本身的機制很難做到對整個集群的管理,只能借助Nginx了。

研究了一下nginx的功能,發現對流量的限制本身就是nginx的功能之一,然后動手測試了一下,果然是可行的。

下載一個nginx(不要問我在哪下。。。),然后打開他的配置文件。

#定義每個IP的session空間大小,只能用在http段
limit_conn_zone $binary_remote_addr zone=one:20m;

實際上它的語法是

limit_conn_zone key zone=name:size; 
#key => $binary_remote_addr #二進制的IP地址
#key可以說是一個規則,就是對客服端連接的一個標識,比如上面用的是IP地址
#zone主要用于保存每個key對應的連接數
#name => addr #隨便取的一個名字,比如,你可以取成abc
#size => 20m #空間大小,這里是20兆,當這個定義的空間被耗盡的時候,nginx會返回503報錯
#大家可以自己算一下,20m的空間可以保存多少個key

#與limit_conn_zone類似,定義每個允許發起的請求速率

 limit_req_zone $binary_remote_addr zone=req_one:20m rate=1r/s; 

#定義每個IP發起的并發連接數,為了測試方便可以先改為1

 limit_conn one 10;

#緩存還沒來得及處理的請求,為了測試方便可以先改為1

 limit_req zone=req_one burst=100;

開啟Nginx的限流功能,主要是通過前四個參數實現

http {
 limit_conn_zone $binary_remote_addr zone=one:20m;
 limit_req_zone $binary_remote_addr zone=req_one:20m rate=1r/s; 
 limit_conn one 1;
 limit_req zone=req_one burst=1;
 #rewrite_log on;
 #error_log /var/log/nginxrewrite.log notice;
 client_body_buffer_size 256M;
 include mime.types;
 default_type Application/octet-stream;
 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
 '$status $body_bytes_sent "$http_referer" '
 '"$http_user_agent" "$http_x_forwarded_for" "$request_filename"';
 sendfile on;
 keepalive_timeout 65;
 include servers/*.conf;
}

做完這些,啟動nginx,簡單些一個http客戶端來測試一下,如果同時發起兩個請求。會提示503錯誤。

但是干完了這個,感覺單實例下的nginx總是不能讓人安心的,即使nginx不會出現故障,也不能排除其所在的服務器不會出現故障吧。

所以準備研究一下nginx怎么集群部署,但是查閱相關資料顯示nginx本身不具備集群功能,因為它本身就是為了給集群做負載均衡而實現的,真的要做,可以通過幾種方式。

1、利用DNS服務器負載均衡策略。及所以通過一個域名過來的請求,會先到dns服務器,然后dns再通過輪訓或者最小連接數等策略,分發至nginx服務器。這樣理論上只需要一個公網dns,一個公網ip,nginx服務可以部署在內網ip上。

利用nginx做流量限制及集群部署

大概是這樣吧

2、nginx+nginx。就是在前端部署一個nginx,在這個nginx上再負載均衡多個nginx,但是我嚴重懷疑這種方案的科學性,畢竟怎么保證最前面的nginx不死,又是一個問題。

利用nginx做流量限制及集群部署

感覺好傻

3、負載均衡硬件在前,nginx在后。這就是傳統的負載均衡模式,通過F5的分發,減輕服務壓力。

利用nginx做流量限制及集群部署

一般夠用了

非常奇怪,為什么nginx為什么本身不具備集群功能,經查閱相關資料顯示,單個nginx的負載在5w左右,這對于大部分應用應該是足夠的,實在不行就在前面搭dns或者用F5,足以解決大部分問題,我司的核心應用并發也才達到10w級別。如果達到阿里巴巴那種程度的話,可以參考阿里的解決方案,前端在請求時,已經拿到了一個ip列表,從前端已經開始分發了,而不是全部送到后端再進行分發。

至此,這個問題應該可以向領導交差了。

分享到:
標簽:nginx
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定