设为首页 收藏本站
查看: 1574|回复: 0

[经验分享] 用Nginx做负载均衡,表现很不稳定.解决中..

[复制链接]

尚未签到

发表于 2016-12-27 08:54:29 | 显示全部楼层 |阅读模式
最近用loadrunner测试一个php应用的并发(相当于论坛).
客户要求.每秒达到4000-5000并发请求.
提供了8台联想PC..4G内存,双核的CPU. 而且无光驱,又不能上外网.
其中4台用硬盘安装了双系统.CentOS.32位.网口100M.(板载网卡性能差,改用独立的)
4台装loadrunner测试.每台模拟1000用户,thinktime设成0.
1,先单机测试. nginx + php-fpm + mysql
  平均:1700hits/s, 800trans/s, CPU 80%多, 内存占用2G左右, 网络90%.
  应用加了Cache数据库命中率不高但仍然占了20%CPU. 按这个测试,也就差不多极限了.
2,接下来做负载均衡. 1台nginx proxy pass 到后面3台 如上面测试的配置.
  发现出现502错误,连接不稳定,负载不均衡. 网络流量也不稳定.直接刷页面也不慢.
  测试结果并没有3X,反而是0.5X,很是郁闷.
  修改多次php-fpm,nginx的workprocessor等等参数. 不见效.今日以遗憾告终.
3,回来后赶紧查资料.发现以下可能项,需要优化.
  1),nginx upstream的排错逻辑可能造成的问题.  (修改后有效)
  2),nginx proxy时,如果后端响应超时或失败会暂停请求10s(已印证)
  3),nginx 超时时间设置过长. (修改后有效)
  4),worker_rlimit_nofile配置要和系统内核配置一致,我的是65535.(修改有效)
  5),linux内核配置问题. 启动 nginx前执行ulimit -HSn 65535,
  计划1. 修改upstream的设置.
  计划2. 配置lvs.替代nginx做负载均衡.
记下来几个东西,明天配置看结果. 再修改此帖.

upstream bbs_server_pool {
server   192.168.1.15:80 weight=1 max_fails=0 fail_timeout=30s;(尝试下降低timeout,降低max_fails)
}
location / {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://bbs_server_pool;
proxy_redirect off;
proxy_set_header Host  $host;
proxy_set_header X-Forwarded-For  $remote_addr;
}
#让TIME_WAIT尽快回收,我也不知是多久,观察大概是一秒钟(我都已设置)
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle
echo "40001 61000" > /proc/sys/net/ipv4/ip_local_port_range


再增加一个优化
启用/tmp/php-cgi.sock,修改如下即可。
     fastcgi_pass  unix:/tmp/php-cgi.sock;
     # fastcgi_pass  127.0.0.1:9000;

php-fpm.conf的优化
1、启用/tmp/php-cgi.sock,查找并修改成如下代码即可。
  <value name=”listen_address”>/tmp/php-cgi.sock</value>
结论:
(1)proxy_next_upstream参数很有用,他可以避免很多 错误
(2)max_fails 参数在繁忙的大型系统中建议设置为3,如果没有几个后端服务器的话保持默认即可。不怕出错,可以设置成0,这样负载分配更均衡。
(3)proxy_read_timeout要根据自身程序而定,不要过大,也不 要太小。如果是php程序,请参照php.ini中的max_execution_time选项值,默认30s。
老梁的博客有很多测试和说明
http://blog.sina.com.cn/s/blog_66b600260100ijg7.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-319959-1-1.html 上篇帖子: 使用基于Nginx集群策略后置模式避免Session复制 下篇帖子: nginx禁止通过IP访问网站的配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表