自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【博文推薦】微信營銷業(yè)務生產(chǎn)環(huán)境下的負載均衡配置

開發(fā) 項目管理
該業(yè)務系統(tǒng)主要用于微信營銷,顧客在微信上下單購買(搶)對應的商品,搶購成功后該商品(券)會自動生成條形碼保存在該用戶的注冊信息中。用戶憑券到實體店完成支付和取貨操作。因為涉及券核銷的問題(支付完成后即時核銷),因此該業(yè)務無法放在云端(核銷的數(shù)據(jù)和實體店銷售數(shù)據(jù)需即時交互),最終只能通過本地的方案來解決。

本博文出自51CTO博客waring_id博主,有任何問題請進入博主頁面互動討論!
博文地址:http://waringid.blog.51cto.com/65148/1606122

一、簡介

最近新上了一個營銷項目(和微信結合),后臺用的是Tomcat。開始上線的時候因為人數(shù)不多感覺沒太多問題,隨著正式環(huán)境的發(fā)布,開人有人反映服務器頁面無法打開,連入tomcat查看時發(fā)現(xiàn)連接數(shù)已滿且CPU也用到了極限,初始的架構如下圖所示,其使用1臺tomcat和一臺數(shù)據(jù)庫服務器。

wKiom1S9zSvD2uzEAAB3eHHsWEc575.jpg

wKiom1S9zXzjip8xAAPnpT7ToT4562.jpg

該業(yè)務系統(tǒng)主要用于微信營銷,顧客在微信上下單購買(搶)對應的商品,搶購成功后該商品(券)會自動生成條形碼保存在該用戶的注冊信息中。用戶憑券到實體店完成支付和取貨操作。因為涉及券核銷的問題(支付完成后即時核銷),因此該業(yè)務無法放在云端(核銷的數(shù)據(jù)和實體店銷售數(shù)據(jù)需即時交互),最終只能通過本地的方案來解決。

首先考慮到的是將網(wǎng)上的連接通過負載均衡的方式分散來減輕服務器的壓力,這方面可以使用nginx代理來實現(xiàn);其次需要解決的問題是session,對比了幾種方案發(fā)現(xiàn)nginx內(nèi)置的ip_hash策略可以解決該問題,最終網(wǎng)絡的架構變成了下圖所示,在該方案中增加了4臺服務器,其中一臺nginx負載轉發(fā),另外四臺為新增的tomcat服務。

wKioL1S9zmfDf8wUAAD6Q7j0vNk557.jpg

二、安裝Nginx

Nginx的安裝配置十分簡單,我這里實際用的是tengine版本,具體的安裝方法可以參考” nginx配置指南之一”。這里需要注意的是它的編譯參數(shù),記得它的配置文件和日志文件的存放位置。

wKioL1S9zurRnmscAADQz6NjgzY877.jpg

三、優(yōu)化系統(tǒng)資源

文件限制

Linux系統(tǒng)中文件的打開個數(shù)及單用戶最多擁有的進程數(shù)是有限制的,可以通過“ulimit -n”或“ulimit -u”來查看,詳細的設置可以參考“ORACLE 11G在Linux下的標準安裝方法(上)”。先修改/etc/security/limit.conf中的限制,如下圖所示。

wKioL1S9z-3wngCYAACwV866fhU301.jpg

內(nèi)核優(yōu)化

內(nèi)核中涉及的TCP相關的選項在大并發(fā)連接的情況下也需要做相應的調整否則可以出“TCP: time wait bucket table overflow” 的錯誤提示。具體修改/etc/sysctl.conf文件,如有特殊要求請結合實際情況修改。具體如下所示:

wKiom1S9z1WCg2aWAAEi_bz2I6E101.jpg

tcp_max_tw_buckets    系統(tǒng)在同時所處理的最大 timewait sockets 數(shù)目。如果超過此數(shù)的話﹐time-waitsocket 會被立即刪除并且顯示警告信息。

ip_local_port_range    用于向外連接的端口范圍。

netdev_max_backlog    每個網(wǎng)絡接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時,允許送到隊列的數(shù)據(jù)包的最大數(shù)目,對重負載服務器而言,該值需要調高一點。

tcp_max_orphans    處理不屬于任何進程的套接字數(shù)量,不屬于任程進程的進程就是“孤兒(orphans)進程”,在快速、大量的連接中這種進程會很多因此要適當?shù)脑O置該參數(shù),也可以用來防御簡單的DoS攻擊。

tcp_max_syn_backlog    用于記錄尚未收到客戶端確認信息的連接請求的最大值。

四、優(yōu)化Nginx

epoll為linux下的必須模型,適用于2.6以后的內(nèi)核版本,如下圖所示:

wKiom1S9z8vQfdNFAABZ6i7eduk205.jpg

優(yōu)化代理配置

需要注意的是“proxy_max_temp_file_size”,它主要用來設置臨時文件的最大值。當被請求的文件內(nèi)容大于代理緩存的大小時,該文件會被存儲到這個臨時文件,但是如果被請求文件的內(nèi)容大于這個值的時候,那么將會從上游的服務器(被代理的服務器)上直接同步傳遞,而不再使用代理緩存。該指令的默認值為1GB,如果設置為0,那么意味著禁止使用臨時文件。

wKiom1S9z-XC4ompAACAuQvtLZY466.jpg

五、配置Nginx

Nginx配置如下所示,其中upstreambackend配置的是后端的tomcat應用,ip_hash表示啟用該策略,用戶的目的是為了解決后端session不一致的問題(在nginx前端還有CDN或是局域網(wǎng)的環(huán)境中須慎用)。

wKioL1S90OiBkNaSAALQDiCdOQg016.jpg

wKiom1S90BWgrAR4AAEUirCW6Y8883.jpg

server段配置的是轉發(fā)的路徑和端口,需要注意“proxy_set_header Host $host:8162;”的寫法。如果該變量后沒有加8162端口則實際的轉發(fā)會導致頁面無法正常顯示。其后的兩條語句可以參考nginx日志的記錄內(nèi)容,主要用來記錄外網(wǎng)實際的訪問請求。

wKiom1S90ECCJzaOAAFHeu47xdQ141.jpg

log_format字段用來生成指定的日志格式文件,相應的變量對應日志文件中的訪問記錄,可以對照下圖來查看。

wKioL1S90SDSc0ljAAQlowGMR30647.jpg

六、Nginx安全限制

隨著業(yè)務的增加,網(wǎng)絡連接的流量越來越大,合理的控制訪問請求及連接數(shù)非常重要,否則仍會出現(xiàn)失去響應的情況。

七、增加IP限制功能

最簡單也最容易實現(xiàn)的的方式是Nginx自帶的IP訪問控制,由模塊ngx_http_limit_conn_module和來ngx_http_limit_req_module實現(xiàn),通過它們可以實現(xiàn)對IP地址連接數(shù)及服務器訪問請求數(shù)的控制。

要限制連接,必須先有一個容器對連接進行計數(shù),在http段加入如下代碼:"zone=" 給它一個名字,可以隨便叫,這個名字要跟下面的limit_conn 一致,$binary_remote_addr = 用二進制來儲存客戶端的地址,1m 可以儲存 32000 個并發(fā)會話。

限制請求數(shù)的方式和限制連接數(shù)類似,其中“rate=10r/s”表示一秒中處理的請求為10個,如果需要限制為每分鐘不超過30個則表示為“rate=30r/m”;一個具體的設定如下所示:

  1. http {   
  2. limit_req_zone$binary_remote_addr zone=one:10m rate=10r/s;   
  3. limit_conn_zone$binary_remote_addr zone=two:10m;   
  4.      } 

在server段中加入以下內(nèi)容,其中“burst=5”表示同時允許超過頻率限制的請求數(shù)不多于5個;“limit_conn two 15”表示對于同一IP的連接數(shù)限制為15個。

  1. limit_req zone=one burst=5;   
  2. limit_conn two 15; 

后續(xù)WAF模塊的添加以及nginx相關的監(jiān)控待整理。PS:請關注官方博客。

責任編輯:林師授 來源: 51CTO
相關推薦

2015-04-15 10:53:12

負載均衡

2015-03-16 10:26:59

2014-10-24 10:20:22

負載均衡web服務器

2013-09-13 13:35:41

微淘微信微博

2015-05-15 10:04:28

localhost

2015-06-04 11:17:12

2015-02-04 10:56:24

瞻博網(wǎng)絡營銷管家

2021-04-21 14:56:28

負載均衡高并發(fā)優(yōu)化技術架構

2015-04-30 10:32:16

2015-09-24 18:08:50

微博架構架構演進架構

2014-07-29 16:19:14

微寶石微信營銷營銷時代

2015-07-23 13:20:56

windows azu混合云微軟

2015-06-15 13:06:23

項目項目經(jīng)驗

2010-05-07 12:27:53

nginx負載均衡

2010-03-16 15:16:26

服務器負載均衡服務器CPU利用率

2018-05-10 10:53:47

分布式架構負載均衡Web

2010-04-22 12:49:34

負載均衡功能配置

2015-06-17 09:34:09

軟件定義存儲 云存儲

2015-07-01 10:25:07

Docker開源項目容器

2010-04-26 10:41:13

多重連接負載均衡
點贊
收藏

51CTO技術棧公眾號