對於做軟負載,我們都知道主流的方案有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核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核,假設你的伺服器是8核, worker_connections =
65535(可以自訂的,但最大不能超過最大檔案描述子數,因為1個連接相當於使用了1個檔案描述子)
Linux上Haproxy理論上最大連接數
#最大連接數= maxconn( global | defaults | listen )更多Nginx相關技術文章,請造訪Nginx使用教學欄位進行學習!
以上是nginx和haproxy的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!