用 nginx 做负载均衡出现并发很低的问题

用 nginx 做负载均衡出现并发很低的问题

用 nginx 做负载均衡出现问题:
nginx 配置
    worker_processes  8;
    events {
       worker_connections  10240;
    }

    upstream ad.demo.cn {
        server 192.168.1.100:81 weight=1;
        server 192.168.1.100:82 weight=1;
        server 192.168.1.100:83 weight=1;
        server 192.168.1.100:84 weight=1;
        server 192.168.1.100:85 weight=1;
        server 192.168.1.100:86 weight=1;
        server 192.168.1.100:88 weight=1;
        server 192.168.1.100:89 weight=1;
    }

nginx:0.6.32

硬件配置:
Intel(R) Xeon(R) CPU E5410  @ 2.33GHz x2
8G 内存
146G SAS 磁盘 RAID1
千兆网络

OS:
CentOS 5.2 x64

192.168.1.100:81 - 192.168.1.100:89 是跑自己做的程序(用libevent做的),跑在linux下面,和nginx放在同一台服务器上,因为是单进程程序,所以用nginx做负载均衡。


用另一台同配置的服务器运行webbench进行200客户并发测试:
测试自己做的程序,cpu占用率在50%左右,每分钟响应80万的链接
[root@urladserver1 src]# ./webbench -c200 http://192.168.1.100:81/
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://192.168.1.100:81/
200 clients, running 30 sec.

Speed=839910 pages/min, 5921337 bytes/sec.
Requests: 419955 susceed, 0 failed.

但是测试nginx时不正常,服务器cpu占用率是1%左右,每分钟响应1000左右的链接
若测试nginx时,客户并发是1个时,也是正常的,每分钟能响应80万的链接

请问大大们,问题出在哪里?

有没有可能是系统的socket资源不足?
或者试试在nginx日志里加上$upstream_response_time等等看看后端的响应如何?


QUOTE:
原帖由 minuteman 于 2008-11-27 19:16 发表
有没有可能是系统的socket资源不足?
或者试试在nginx日志里加上$upstream_response_time等等看看后端的响应如何?

感谢回答,我试试看!
不知道你是否是长连接的应用,nginx向后端是一个请求发起一次连接的,所以如果本来是长连接多次请求的业务,用nginx可能有些划不来。
单纯的负载均衡,也许也可以试试haproxy,最新的版本支持轮询、连接数、uri、源IP等多种负载均衡方式


QUOTE:
原帖由 minuteman 于 2008-11-28 13:43 发表
不知道你是否是长连接的应用,nginx向后端是一个请求发起一次连接的,所以如果本来是长连接多次请求的业务,用nginx可能有些划不来。
单纯的负载均衡,也许也可以试试haproxy,最新的版本支持轮询、连接数、ur ...

我的程序是短连接。过几天空点再试试看
worker_connections  10240;


这里再改大
楼主上面测试的链接为什么是后端的应用程序呢?而不是Nginx监听的端口?
负载均衡还是用haproxy。