Nginx控制連線數

最近管的一台網頁一直被大量連線,由於是用nginx當反向,映射進去裡面的apache,這樣一來外面撐住,裡面apache比較弱就稱不住了,所以同事剛好建議要不要重外面就先擋,後來看了一下資料,官網的建議以下的設定來達到漏桶算法(Leaky Bucket)

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

    ...

    server {

        ...

        location /search/ {
            limit_req zone=one burst=5;
        }


簡單說明就是同一IP取用每秒只允許一條連線執行。不過這個方式連進來會有點慢,圖是一個個出來,所以查了一下,可以加「nodelay」來加速,但這樣似乎會會喪失請連線排程的用意了。 所以目前我是將「rate=1r/s;」的部分拉高,變成「rate=100r/s;」,這樣跑起來不會太慢,也不會一口氣產生太多連線。

參考資料:
  1. http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
  2. http://wangchengtai.blog.hexun.com.tw/50460018_d.html
  3. http://blog.csdn.net/remotesupport/article/details/6016245
  4. http://storysky.blog.51cto.com/628458/642970

留言

熱門文章