Nginx與HAProxy的區別
對於做軟負載,我們都知道主流的方案有LVS、Haproxy、Nginx!那麽對於Haproxy和Nginx,我們如何選擇呢?回答這個問題之前,我根據個人使用經驗來講下它們的特點!
Haproxy特點
- 支持TCP與Http協議,工作在網絡4層和7層
- 支持Session共享、Cookies引導
- 支持通過URL健康檢測
- 支持8種負載均衡策略
- 支持心跳檢測
Nginx特點
- 支持Http協議,工作在網絡7層
- 支持通過端口健康檢測
- 支持強大的正則匹配規則
- 支持WebSocket協議
- 支持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的區別