`
CharlesCui
  • 浏览: 427497 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Nginx做负载均衡相当不稳定!

阅读更多
开始我在虚拟机上做负载均衡,后端三台服务器,前端用Nginx,

配置大概如下:

引用
worker_processes  8;
worker_rlimit_nofile 102400;

error_log  /var/log/nginx/error.log error;
pid        /var/run/nginx.pid;

events {
    use epoll;
    worker_connections  102400;
}


结果跑出来的TPS图是很大的波浪线,一会高一会儿低,响应时快时慢。有时TPS能上到3000多,有时就几百,最后失去响应。

开始我以为是后端的三台应用服务器响应慢,于是对后端的每台应用单独压了一下,结果每台的TPS都很平稳的跑在1500左右。
打开ifstat工具可以看到网卡接收数据包一会儿有流量一会没有流量,难道是网卡问题?我单独压nginx的index页面可是相当平稳啊,网卡肯定没问题。
用netstat查看,一会儿有连接一会儿没连接,变态!

换apache做负载均衡试试,除了性能很差,速度很慢之外,没有响应时高时低的问题。
换台实体机做nginx负载均衡服务器,还是一样。靠,nginx是不是我不会玩啊,还是我玩的太变态了?

分享到:
评论
36 楼 elmar 2009-08-19  
问一个非常土的问题:所谓的并发数多少多少,是指服务器在某个时间点上的活跃连接吗?还是一段时间里的链接?
35 楼 andrew913 2009-08-08  
公司最近说要用Nginx替代apache了,哭。。。以前的apache模块白写了。

不过我觉的可以直接写一个内核的7层解析。

最近的一点想法在这个帖子里:
http://www.iteye.com/topic/443080
希望大牛过来帮我看看。

我没搞过负载均衡,乱想的,想做点这方面的毕业设计。

34 楼 墓里活人 2009-06-12  
交流电 与 直流电的 区别。
33 楼 bugx 2009-05-31  
nginx跑起来稳定性不用说了,我实际环境下跑的比以前apache还要好。

上面这些大牛对负载均衡的辩论,小弟受益匪浅啊
32 楼 zhuyx808 2009-03-15  
对这个不是很清楚,不过这篇文章说:
引用
在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx 0.7.30 + PHP 5.2.8 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。

http://blog.s135.com/post/366/
31 楼 richyzhang 2009-03-10  
joshzhu 写道
我看有必要扫一下盲。
1、负载均衡分为L4 switch(四层交换),即在OSI第4层工作,就是TCP层啦。此种Load Balance不理解应用协议(如HTTP/FTP/MySQL等等)。例子:
LVS,F5
2、另一种叫做L7 switch(七层交换),OSI的最高层,应用层。此时,该Load Balancer能理解应用协议。例子:
haproxy,MySQL Proxy
注意:上面的很多Load Balancer既可以做四层交换,也可以做七层交换。

如果单纯要做HTTP的负载均衡,用haproxy好了。性能很强。
另外,F5和Alteon这样的硬件LB是LVS等软件赶不上,这个不用问了。

很显然,楼主的这个问题是benchmark时,做benchmark的客户端先遇上了瓶颈(TIME_WAIT以及客户端无端口可用了都算是)。Benchmark的一个基本原则是,揍人的要强于被揍的。


一直只从服务端想楼主的问题,所以一直没明白他的解决方法怎么起作用的.现在清楚了,前面的方法是调高了揍人的能力.
30 楼 joshzhu 2009-03-09  
我看有必要扫一下盲。
1、负载均衡分为L4 switch(四层交换),即在OSI第4层工作,就是TCP层啦。此种Load Balance不理解应用协议(如HTTP/FTP/MySQL等等)。例子:
LVS,F5
2、另一种叫做L7 switch(七层交换),OSI的最高层,应用层。此时,该Load Balancer能理解应用协议。例子:
haproxy,MySQL Proxy
注意:上面的很多Load Balancer既可以做四层交换,也可以做七层交换。

如果单纯要做HTTP的负载均衡,用haproxy好了。性能很强。
另外,F5和Alteon这样的硬件LB是LVS等软件赶不上,这个不用问了。

很显然,楼主的这个问题是benchmark时,做benchmark的客户端先遇上了瓶颈(TIME_WAIT以及客户端无端口可用了都算是)。Benchmark的一个基本原则是,揍人的要强于被揍的。
29 楼 CharlesCui 2009-03-09  
兄弟们啊,原因我都找到了,帖子里面不是给出答案了么。。。。看我另一篇帖子啊,是tcp fin timeout的问题,而且还和linux下可以用套接字数量有关。

怎么看帖子那么不认真呢?是不是专门跑我这里灌水啊?
28 楼 suxy 2009-03-09  
我们用nginx作负载均衡,后面两个tomcat,压力测试用户的登录操作,并发3000个很稳定,最高4500,响应时间< 2s.

lz再找找原因吧.
27 楼 CharlesCui 2009-03-09  
给楼上鼓掌!
26 楼 ubotutwin 2009-03-09  
<p><span style="font-size: small;">CharlesCui说道:</span></p>
<p><span style="font-size: small;">       lvs&gt;硬均衡(f5),你肯定么?我不是sa所以我不专业,但我不知道你是不是做sa的,如果你肯定,就请帮忙深入点的解释一下,最好有数据。</span></p>
<p> </p>
<p><span style="font-size: small;">首先更正:进、出都需要拆包的应该是nat模式。</span></p>
<p> </p>
<p><span style="font-size: small;">       lvs&gt;硬均衡的前提是使用同样的硬件,比如同样的cpu和内存为前提的。至于其原理,并不是lvs</span></p>
<p><span style="font-size: small;">比硬均衡先进,而是lvs可以根据网络拓补使用针对性的包封装技术,比如隧道和dr都只拆进的不拆出的,而dr</span></p>
<p><span style="font-size: small;">和隧道比又少了二次封ip的开销(每个包很小但流量大了积少成多就明显了),但dr要在完整的统一网段,而隧道要地下的机器都有tun协议的支持。</span></p>
<p><span style="font-size: small;">当然还有很多其他的细节上的区别。</span></p>
<p><span style="font-size: small;">       而硬均衡为了屏蔽这些细节,做到:“对不同拓补形状的最好支持,对real server的最小要求”,肯定会多一些工作由均衡器自己做,这样就加大了</span></p>
<p><span style="font-size: small;">均衡器的负担。</span></p>
<p> </p>
<p><span style="font-size: small;">       最后要说的是,“lvs&gt;硬均衡”确实有点太绝对了,因为现在硬均衡已经多了很多配置,应该也可以让客户使用一种适合自身条件的模式了。但无论从</span></p>
<p><span style="font-size: small;">理论还是实际应用上来讲,完全相同的硬件配置和操作系统(os的速度影响不在我们讨论的范围),lvs可以做到linux集群的极限性能,而硬均衡能接近或</span></p>
<p><span style="font-size: small;">部分达到极限性能(因为客户的实际需要不同)。</span></p>
<p><span style="font-size: small;">       </span></p>
<p><span style="font-size: small;">       我本人在01到03年做过部署实施的工作,现在做开发了,但还是一直很喜欢硬件方面的东西的:),所以一直都有一些涉猎,也希望能和大家多多</span></p>
<p><span style="font-size: small;">讨论、互相学习吧,呵呵~~</span></p>
<p> </p>
25 楼 sdh5724 2009-03-08  
LVS性能高应该是有理论依据的, F5要走高层协议, 而LVS走IP包, 这是个差异。
24 楼 CharlesCui 2009-03-08  
<div class="quote_title">ubotutwin 写道</div>
<div class="quote_div">
<p>     <span style="font-size: small;">   直接 lvs不可以吗?过分迷信硬件均衡了吧~~。</span></p>
<p><span style="font-size: small;">      象f5这些硬均衡器用的都是相当于lvs里的隧道模式的均衡方式,优点是拓补环境兼容好,配置调试简便,但在同样的硬件配置情况下却是各种连接模式里速度最慢的(因为出、进都要拆包,均衡器压力较大)。</span></p>
<p><span style="font-size: small;">      至于你说的不能做高层协议(大部分应该是http、ftp什么的吧?)的均衡,那又有什么影响呢?那些所谓能走高层协议的技术或设备发的东西底层就不走tcp/ip了?</span></p>
<p><span style="font-size: small;">      以我的经验来讲,lvs、硬均衡、webserver均衡三者的优缺点是这样的(完全相同的硬件情况下):</span></p>
<p><span style="font-size: small;">      性能:lvs&gt;硬均衡&gt;webserver均衡</span></p>
<p><span style="font-size: small;">      使用方便维护简单:硬均衡&gt;webserver均衡&gt;lvs(用这个的基本没有买来的,都是自己配。日后维护、扩展等需要专业点的人)</span></p>
<p><span style="font-size: small;">      总体讲,有技术能力上lvs的,或者没钱的就上lvs。有钱(一般大一点的项目都不会在乎这几台设备的钱的)、求稳(买硬均衡有厂商的技术支持,可安枕)、或对自己的技术没有太大的把握的就上个硬均衡。至于webserver均衡一般都是小一点的项目吧~~</span></p>
</div>
<p>这哥们说的挺多,但不是这个帖子的主题,讨论lvs我有另外一个帖子,本帖子里面有链接。这个帖子要和大家讨论的问题是:用nginx为什么会有tps波浪线出现。不是说我非要用nginx,是我用了nginx发现了一个问题,所以就很想知道答案。O(∩_∩)O哈哈~</p>
<p> </p>
<p>lvs&gt;硬均衡(f5),你肯定么?我不是sa所以我不专业,但我不知道你是不是做sa的,如果你肯定,就请帮忙深入点的解释一下,最好有数据。</p>
23 楼 sdh5724 2009-03-08  
楼上说得的不错。 一般来说硬件均衡设备使用上比较方便, 也便于业务扩展。 在机器多的情况下, 业务复杂的情况下, 用硬件设备还是划得来的。 当然对于单一业务,我还是推荐LVS,节约费用。 LVS也没有想象的难, 如果有SA团队, 肯定有人能研究使用。
22 楼 ubotutwin 2009-03-08  
<p>     <span style="font-size: small;">   直接 lvs不可以吗?过分迷信硬件均衡了吧~~。</span></p>
<p><span style="font-size: small;">      象f5这些硬均衡器用的都是相当于lvs里的隧道模式的均衡方式,优点是拓补环境兼容好,配置调试简便,但在同样的硬件配置情况下却是各种连接模式里速度最慢的(因为出、进都要拆包,均衡器压力较大)。</span></p>
<p><span style="font-size: small;">      至于你说的不能做高层协议(大部分应该是http、ftp什么的吧?)的均衡,那又有什么影响呢?那些所谓能走高层协议的技术或设备发的东西底层就不走tcp/ip了?</span></p>
<p><span style="font-size: small;">      以我的经验来讲,lvs、硬均衡、webserver均衡三者的优缺点是这样的(完全相同的硬件情况下):</span></p>
<p><span style="font-size: small;">      性能:lvs&gt;硬均衡&gt;webserver均衡</span></p>
<p><span style="font-size: small;">      使用方便维护简单:硬均衡&gt;webserver均衡&gt;lvs(用这个的基本没有买来的,都是自己配。日后维护、扩展等需要专业点的人)</span></p>
<p><span style="font-size: small;">      总体讲,有技术能力上lvs的,或者没钱的就上lvs。有钱(一般大一点的项目都不会在乎这几台设备的钱的)、求稳(买硬均衡有厂商的技术支持,可安枕)、或对自己的技术没有太大的把握的就上个硬均衡。至于webserver均衡一般都是小一点的项目吧~~</span></p>
21 楼 CharlesCui 2009-03-08  
richyzhang 写道
nginx要是不稳定,这世上也没有靠得住的东西了.

nginx里面既然配了worker_rlimit_nofile 102400;
那么os最大允许打开的fileno数配成多少了?


无语,我上面说了找到问题的根源了,你看我给出的帖子的链接。

ulimit -n 这个参数我记得我配置的是无限大,或者一个很大很大的数,不用质疑这个。
20 楼 richyzhang 2009-03-08  
nginx要是不稳定,这世上也没有靠得住的东西了.

nginx里面既然配了worker_rlimit_nofile 102400;
那么os最大允许打开的fileno数配成多少了?
19 楼 whaosoft 2009-03-04  
呃 负载均衡 我一点不会弄~!~
18 楼 CharlesCui 2009-03-03  
17 楼 CharlesCui 2009-03-02  
不是代理程序的问题,是操作系统配置的问题。

相关推荐

    Web服务器Nginx实现开源负载均衡.doc

    Nginx 负载均衡优点及适用环境 Nginx 负载均衡实现比较简单,可配置性很强,可以按 URL 做负载均衡,默认对后端有健康检查的能力。后端机器少的情况下(少于 10 台)负载均衡能力表现好。其优点主要有:功能强大,...

    企业级web负载均衡完美架构

    在8GB以上内存的环境下,单台Apache+PHP5服务器在不连接数据库的情况下可以承受6000并发,且相当稳定。因此,架构升级应谨慎,避免全面淘汰旧系统,而是逐步优化,以达到“锦上添花”的效果。 在实施Nginx+...

    LVS负载均衡软件Keepalived高可用:keepalived-2.0.10

    通过其强大的健康检查、故障转移和负载均衡功能,我们可以确保Nginx、Haproxy、MySQL等服务在面临单点故障时依然保持稳定运行。对于IT运维人员来说,熟练掌握Keepalived的使用和配置,对于提升系统可靠性具有重要...

    nginx_upstream_hash-0.3.2.tar.gz

    总结来说,nginx_upstream_hash模块为nginx的负载均衡提供了更精细化的控制,通过合理的配置,可以在复杂环境中实现高效的请求分发,提高系统的稳定性和性能。0.3.2版本的发布,进一步优化了该模块的功能,使其在...

    nginx-1.2.6

    - **反向代理与负载均衡**:Nginx 可以作为反向代理服务器,将来自客户端的请求转发到后端服务器群,并支持基于各种策略的负载均衡。 - **静态文件服务**:Nginx 在处理静态文件方面表现出色,能够快速响应并提供...

    nginx-0.8.24.tar.gz

    它可以将来自客户端的请求转发到后端服务器,实现负载均衡,提高服务的可用性。通过配置文件,我们可以设置多种负载均衡策略,如轮询、最少连接、IP哈希等。 3. **静态文件处理** Nginx 对于静态文件的处理非常...

    Nginx面试专题及答案.pdf

    Nginx的一些特性包括作为反向代理服务器和L7负载均衡器,它还内置了Perl解释器,支持动态二进制升级,能够重写URL并拥有良好的PCRE(Perl兼容正则表达式)支持。与Apache相比,Nginx在处理静态文件、高并发连接以及...

    balance-3.42 超高速负载均衡程序

    总结来说,"balance-3.42"作为一款C语言编写的超高速负载均衡程序,以其高效、灵活和稳定的特点,成为大型网站搭建不可或缺的组件。它不仅提升了服务的响应速度,还增强了系统的可靠性和可扩展性,为企业级应用提供...

    nginx终极档案

    它不仅可以直接支持Rails和PHP程序,还能作为HTTP反向代理服务器、负载均衡服务器以及邮件代理服务器。通过Nginx,可以实现静态和动态内容的分离,提升网站的运行效率。 **1. Nginx特性** 1.1 高稳定性:Nginx采用...

    nginx windows版本

    - Nginx的一个核心功能是作为反向代理服务器,可以将客户端请求转发给后端的多个服务器,实现负载均衡。在配置文件中,你可以定义多个`server`块,每个`server`块可以配置不同的反向代理规则。 7. **静态文件处理*...

    LNMP 0.7 Nginx.zip

    作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。 作为邮件代理...

    fastdfs-nginx-module-master-version1.19.zip

    FastDFS是一款开源的、高性能的、轻量级的分布式文件系统,主要用于解决海量数据存储和负载均衡问题。而Nginx则是一款高性能的HTTP和反向代理服务器,广泛应用于Web服务器领域。当FastDFS与Nginx结合,可以实现高效...

    nginx1.23 for windows

    2. **反向代理**: Nginx可以作为前端代理,将用户请求转发给后台服务器,实现负载均衡或隐藏真实服务器。 3. **负载均衡**: 使用`upstream`模块,Nginx可以将请求分发到多个后端服务器,提高服务可用性。 4. **SSL...

    Nginx入门资料

    它在高并发的情况下性能优越,尤其适合于作为负载均衡器使用。作为Apache的竞争对手,Nginx在处理静态内容和高负载请求方面,相较于Apache有着显著的性能优势。 Nginx的特性主要包括: 1. 高性能和高稳定性,尤其在...

    nginx.pdf学习资料

    - 介绍如何快速搭建Nginx反向代理服务器,实现负载均衡等功能。 #### 六、Nginx源码及常见数据结构 - 探讨Nginx源代码中的一些核心数据结构,帮助理解其实现原理。 #### 七、自定义Nginx模块 - 讲解如何编写自己...

    tomcat8.5+mysql5.5+nginx1.16+ncurses-5.9.zip

    Nginx以其高效的并发连接处理能力而闻名,尤其适合用作负载均衡器和静态内容服务器。Nginx 1.16是1.x系列的一个稳定版本,它提供了许多特性,包括HTTP/2支持、WebSocket代理、缓存管理和访问控制等,有助于提高网站...

    Grokking+System+Design.pdf

    除了智能客户端和硬件负载均衡器,还可以通过软件实现负载均衡,例如使用Nginx、HAProxy等开源软件作为负载均衡器。这些解决方案虽然成本较低,但在处理大规模流量时,其性能和稳定性可能不如专业的硬件解决方案。 ...

    nginx php搭建环境

    nginx是一款轻量级、高性能的Web服务器,以其反向代理、负载均衡和HTTP缓存等功能而广受赞誉。它采用事件驱动的非阻塞I/O模型,能够处理大量的并发连接,特别适合高流量的网站。相比Apache,nginx在资源占用方面更为...

Global site tag (gtag.js) - Google Analytics