性能优化nginx性能优化

这段时间笔者几篇文章介绍了改性能优化的文章. 关联文章的地址

    

nginx性能优化

    最近在测试服务器压力的时候,发明应用tornado的服务benchmark上不去,顶多1500左右,nginx即使开了8个进程,在响应请求的时候有一个work进程的cpu超高,达到100%的情况。

    对于cpu超高的情况,当初我们都以为是2.6.18网卡中断只能在一个cpu上处理,导致cpu高,这虽然是一个原因,但是短期内升级全部系统是一个不太可能的事件。

    鉴于官方说tornado性能很高,所以总觉得我们在某些地方应用有问题,看了nginx以及tornado的源码,发明有几个地方我们真没注意。

    

  • listen backlog,nginx默认的backlog是511,而tornado则是100,对于这类设置,如果并发量太大,因为backlog缺乏会导致大量的丢包。

    将nginx以及tornado listen的时候backlog改大成20000,同时须要调整net.ipv4.tcp_max_syn_backlog,net.ipv4.tcp_timestamps,net.ipv4.tcp_tw_recycle等相关参数。

  • accept_mutex,将其设置为off,nginx默以为on,是为了accept的处理惊群效应,但是鉴于nginx只有8个进程,同时并发量大,每个进程都唤醒都能被处理,所以关闭。

    每日一道理
当浮华给予我们过多欺骗,现实中的虚假几乎让我们忘却了真的存在,是真情唤回了迷离的心,是真情带给了我们最纯、最真的感觉,它流露的是美的誓言,渗透的是永恒执著的真爱。

    做了上面简略的两个操作之后,ab benchmark发明nginx的cpu负载比拟均匀,同时不会涌现upstream request timeout以及cannot assign requested address等错误。

    同时,直接压tornado也第一次达到了4000的rps,通过nginx proxy到tornado则在3200左右。

    虽然只是修改了几个配置,性能就提升了很多,后续对于nginx,还有很多须要研讨的东西。

    版权声明:自由转载-非商用-非衍生-坚持署名 Creative Commons BY-NC-ND 3.0

文章结束给大家分享下程序员的一些笑话语录: 面试官:熟悉哪种语言
应聘者:JAVA
面试官:知道什么叫类么
应聘者:我这人实在,工作努力,不知道什么叫累
面试官:知道什么是包?
应聘者:我这人实在 平常不带包 也不用公司准备了
面试官:知道什么是接口吗?
应聘者:我这个人工作认真。从来不找借口偷懒
面试官:知道什么是继承么
应聘者:我是孤儿没什么可以继承的
面试官:知道什么叫对象么?
应聘者:知道,不过我工作努力,上进心强,暂时还没有打算找对象。
面试官:知道多态么?
应聘者:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!请问这和C#有什么关系??

--------------------------------- 原创文章 By
性能和优化
---------------------------------

原文地址:https://www.cnblogs.com/jiangu66/p/3102272.html