2016 - 2024

感恩一路有你

linux上怎么看是否有nginx进程 haproxy和nginx的区别?

浏览量:1469 时间:2023-05-04 11:32:50 作者:采采

haproxy和nginx的区别?

Nginx和Haproxy其实定位不一样。Nginx定位为服务器,Haproxy定位为负载均衡器。

Nginx可以通过各种插件模块支持负载均衡的功能,性能也不比haproxy弱多少,所以总有人拿这两样东西做比较。其实Apache也可以通过相关模块做负载均衡器,但是性能差很多,所以没人用。当然,Nginx s LB功能现在是它的主要功能。

我看到大家对haproxy的多进程有很多误解。特别是这里,haproxy早就支持多进程模型,但它不是Nginx的Worker Master结构,而是一个平等的多进程结构,它还支持重用端口选项。所以Nginx和Haproxy在多核利用上没有本质区别。

1.8以后,haproxy增加了多线程模式,现在推荐这个模式,在一些平台上可以更好的利用多核。Nginx一直没有多线程模型。而且社区似乎不打算支持它。

Nginx其实是基于服务器的功能,这是Haproxy没有的。Haproxy很难像普通Web服务器一样回复一个普通的HTTP请求,不大规模修改源代码是不可能做到的。Haproxy是围绕转发模型设计的,整个过程都是围绕着如何快速转发一个请求或者回复给另一端。It 这不像服务器接受请求然后回复。

但是Nginx作为一个纯LB,尤其是针对Web负载均衡器的,并没有haproxy那么细致。Haproxy支持广泛的ACL对象。在许多情况下,复杂的功能可以在没有脚本的帮助下完成,而Nginx 的稍微复杂的负载平衡功能需要用脚本来完成,所以性能会差很多。

从功能上看,Nginx其实比Haproxy的功能更多(当然不是全部免费),因为它的开发社区和定位方向比Haproxy更大更广。Nginx上还有很多解决方案。比如WAF和haproxy都没有更好的原生解决方案。还有就是最近对Service Mesh的支持,haproxy很难跟上。

但是基本功能,包括HTTP2、TLS 1.3、脚本、SSL/TLS卸载、ocsp、SNI预加载real haproxy的最新版本支持了很久,甚至比Nginx还要早(HTTP2晚,但现在也支持了)。另外硬件SSL卸载支持其实主要是OpenSSL的引擎支持,所以这个和大家差不多,只要兼容最新的OpenSSL就没有问题。

haproxy的优势其实是转发性能略高。因为Haproxy追求的是零拷贝的正向过程,所以代码倾向于这方面的优化。然而,这个优势现在被TLS/SSL的广泛应用抹杀了。相比0 copy节省的时间,加解密的性能占了绝大部分,所以haproxy在目前粗放的SSL环境下基本没有优势。除非你想用纯HTTP,也想用基于HTTP头的复杂负载均衡功能,那么Haproxy是个不错的选择,否则如果只是LB,LVS性能其实更高,毕竟人在内核。

从代码层面来看,Nginx s的结构化代码和模块化比Haproxy好很多。Haproxy代码的模块化一直是个大问题。内部结构不够模块化,二次开发难度大。最近才改进到1.9,但是还是有很多内部的招数hack和混淆旗。与Nginx s的彻底模块化,通过开发自己的模块,很容易改变或实现相关功能,这是haproxy所不具备的。

从开发社区来说,Nginx比Haproxy好太多了。虽然社区历史更久,但Haproxy一直都是无动于衷的。由于原作者的严格控制,一直以来贡献者很少,也没有模块开发功能,所以并没有吸引多少开发者。问题是版本更新慢,支持的新功能也慢。HTTP2的开发完全依赖原作者,所以支持进度严重滞后。

这篇文章好像成了对haproxy的吐槽,但我觉得我还是有些了解的,因为我在工作中接触这两个东西太多了,也在深度开发。目前,如果haproxy可以 不招募更多的贡献者更公开和完全修改架构,以支持模块开发,它可以 不能和NGINX比。

另外,Haproxy的优势在于免费版的功能比Nginx更实惠。对于小而差的网站来说,这确实是一个好处。

nginx worker进程多少个合适?

我的回答:类似nginx worker的工作派生进程的数量一般等于CPU的核心总数或核心数的两倍。例如,两个4核CPU处理器,那么核的总数是8。

在中设置worker _ processs8一般进程设置为CPU核数的1-2倍。

haproxy Haproxy Nginx 功能 模块

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。