1. 程式人生 > >Nginx與HAProxy的區別

Nginx與HAProxy的區別

targe http協議 web default conn 文件 反向 lin cache

對於做軟負載,我們都知道主流的方案有LVS、Haproxy、Nginx!那麽對於Haproxy和Nginx,我們如何選擇呢?回答這個問題之前,我根據個人使用經驗來講下它們的特點!

Haproxy特點

  1. 支持TCP與Http協議,工作在網絡4層和7層
  2. 支持Session共享、Cookies引導
  3. 支持通過URL健康檢測
  4. 支持8種負載均衡策略
  5. 支持心跳檢測

Nginx特點

  1. 支持Http協議,工作在網絡7層
  2. 支持通過端口健康檢測
  3. 支持強大的正則匹配規則
  4. 支持WebSocket協議
  5. 支持Http Cache

說明:對於Http協議,Haproxy處理效率比Nginx高。所以,沒有特殊要求的時候或者一般場景,建議使用Haproxy來做Http協議負載!但如果是Web,那麽建議使用Nginx!總之,大家可以結合各自使用場景的特點來進行合理地選擇!

上次有人問我:Nginx或Haproxy的連接數能否突破“65535”這個“魔咒”?其實大家有這樣的疑問,是因為對Nginx或Haproxy工作原理不了解導致的!

下面以Linux服務器為例,講解下二者理論上最大連接數:

Linux上Nginx理論上最大連接數

正向代理:最大連接數 = work_processes * worker_connections
反向代理:最大連接數 = work_processes * worker_connections / 4
備註:worker_connections指單個進程能夠處理的最大連接數,假設你的服務器是8核,worker_connections =

65535(可以自定義的,但最大不能超過最大文件描述符數,因為1個連接相當於使用了1個文件描述符)

在上述2種情況下最大連接數(理論值)分別是: 8 * 65535 和 8 * 65535 /4

Linux上Haproxy理論上最大連接數

最大連接數 = maxconn( global | defaults | listen )

參考:

http://blog.csdn.net/hexieshangwang/article/details/49359259(以上內容轉自此篇文章)

https://www.zhihu.com/question/34489042

http://blog.csdn.net/lushuai93/article/details/50819503

Nginx與HAProxy的區別