当前位置:  互联网>综合
本页文章导读:
    ▪nginx性能优化      nginx性能优化 最近在测试服务器压力的时候,发现使用tornado的服务benchmark上不去,顶多1500左右,nginx即使开了8个进程,在响应请求的时候有一个work进程的cpu超高,达到100%的情况。 对于cpu.........
    ▪Partition List      题目: Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the nodes in each of the two partitions. For example, Given 1-&g.........
    ▪Decode Ways      题目: A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 Given an encoded message containing digits, determine the total number of ways to decode it. For example.........

[1]nginx性能优化
    来源: 互联网  发布时间: 2013-10-24
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

作者:siddontang 发表于2013-5-26 20:47:42 原文链接
阅读:49 评论:0 查看评论

    
[2]Partition List
    来源: 互联网  发布时间: 2013-10-24

题目:

Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.

You should preserve the original relative order of the nodes in each of the two partitions.

For example,
Given 1->4->3->2->5->2 and x = 3,
return 1->2->2->4->3->5.

分析:要注意head1==head2这种问题。

代码如下:

        ListNode *partition(ListNode *head, int x) {
        if(head==NULL)return head;
        ListNode *head1=head;
        if(head->val>=x)
        {
            while(head1->next!=NULL&&head1->next->val>=x)
            {
                head1=head1->next;
            }
            if(head1->next==NULL)
            {
                return head;
            }
            else
            {
                ListNode *tmp=head1->next;
                head1->next=head1->next->next;
                tmp->next=head;
                head=tmp;
            }
        }
        ListNode *head2=head;
        while(head1->next!=NULL)
        {
            while(head1->next!=NULL&&head1->next->val>=x)
            {
                head1=head1->next;
            }
            if(head1->next==NULL)
            {
                return head;
            }
            if(head1==head2)
            {
                head1=head1->next;
                head2=head2->next;
            }
            else
            {
                ListNode *tmp=head1->next;
                head1->next=head1->next->next;
                tmp->next=head2->next;
                head2->next=tmp;
                head2=tmp;
            }
        }  
        return head;
    }


作者:chunxia75qin 发表于2013-5-28 10:56:32 原文链接
阅读:57 评论:0 查看评论

    
[3]Decode Ways
    来源: 互联网  发布时间: 2013-10-24

题目:

A message containing letters from A-Z is being encoded to numbers using the following mapping:

'A' -> 1
'B' -> 2
...
'Z' -> 26

Given an encoded message containing digits, determine the total number of ways to decode it.

For example,
Given encoded message "12",it could be decoded as "AB" (1 2) or "L" (12).

The number of ways decoding "12" is 2.

分析:可以用贪心的思想,而且当前数字只与前面的数字有关。

代码如下:

int numDecodings(string s) {
        int n=s.size();
        if(n==0)return 0;
        int *result=new int[n+1];
        memset(result,0,(n+1)*sizeof(int));
        result[0]=1;
        for(int i=1;i<=n;i++)
        {
            if(s[i-1]!='0')
            {
                result[i]+=result[i-1];
            }
            if(i>=2&&s[i-1]-'0'+10*(s[i-2]-'0')<=26&&s[i-1]-'0'+10*(s[i-2]-'0')>=10)
            {
                result[i]+=result[i-2];
            }
        }
        return result[n];
    }


作者:chunxia75qin 发表于2013-5-28 14:54:21 原文链接
阅读:56 评论:0 查看评论

    
最新技术文章:
▪用户及权限基础 2---- Linux权限    ▪用户及权限基础 3---- Linux扩展权限    ▪git 简明教程(1) --创建及提交
▪背包 代码    ▪json对象的封装与解析    ▪01背包,完全背包,多重背包 ,模板代码
▪apache安装详解    ▪HDU 4668 Finding string (解析字符串 + KMP)    ▪《TCP-IP详解 卷1:协议》学习笔记(二)
▪《TCP-IP详解 卷1:协议》学习笔记(持续更新...    ▪windows下使用swig    ▪gensim试用
▪Linux Shell脚本编程--nc命令使用详解    ▪solr对跨服务器表联合查询的配置    ▪递归和非递归实现链表反转
▪Linux磁盘及文件系统管理 1---- 磁盘基本概念    ▪Cholesky Decomposition    ▪HTTP协议学习
▪用C语言写CGI入门教程    ▪用hdfs存储海量的视频数据的设计思路    ▪java多线程下载的实现示例
▪【原创】eAccelerator 一个锁bug问题跟踪    ▪hadoop学习之ZooKeeper    ▪使用cuzysdk web API 实现购物导航类网站
▪二维数组中的最长递减子序列    ▪内嵌W5100的网络模块WIZ812MJ--数据手册    ▪xss 跨站脚本攻击
▪RobotFramework+Selenium2环境搭建与入门实例    ▪什么是API    ▪用PersonalRank实现基于图的推荐算法
▪Logtype    ▪关于端口号你知道多少!    ▪Linux基本操作 1-----命令行BASH的基本操作
▪CI8.7--硬币组合问题    ▪Ruby on Rails 学习(五)    ▪如何使用W5300实现ADSL连接(二)
▪不允许启动新事务,因为有其他线程正在该会...    ▪getting start with storm 翻译 第六章 part-3    ▪递归求排列和组合(无重复和有重复)
▪工具类之二:RegexpUtils    ▪Coding Interview 8.2    ▪Coding Interview 8.5
▪素因子分解 Prime factorization    ▪C# DllImport的用法    ▪图的相关算法
▪Softmax算法:逻辑回归的扩展    ▪最小生成树---Kruskal算法---挑战程序设计竞赛...    ▪J2EE struts2 登录验证
▪任意两点间的最短路径---floyd_warshall算法    ▪Sqoop实现关系型数据库到hive的数据传输    ▪FFMPEG采集摄像头数据并切片为iPhone的HTTP Stream...
▪Ubuntu 13.04 – Install Jetty 9    ▪TCP/IP笔记之多播与广播    ▪keytool+tomcat配置HTTPS双向证书认证
▪安装phantomjs    ▪Page Redirect Speed Test    ▪windows media player 中播放pls的方法
▪sre_constants.error: unbalanced parenthesis    ▪http headers    ▪Google MapReduce中文版
▪The TCP three-way handshake (connect)/four wave (closed)    ▪网站反爬虫    ▪Log4j实现对Java日志的配置全攻略
▪Bit Map解析    ▪Notepad 快捷键 大全    ▪Eclipse 快捷键技巧 + 重构
▪win7 打开防火墙端口    ▪Linux Shell脚本入门--awk命令详解    ▪Linux Shell脚本入门--Uniq命令
▪Linux(Android NDK)如何避免僵死进程    ▪http Content-Type一览表    ▪Redis实战之征服 Redis + Jedis + Spring (二)
▪Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源...    ▪利用SQOOP将ORACLE到HDFS    ▪django输出 hello world
▪python re    ▪unity3D与网页的交互    ▪内存共享基本演示
▪python join    ▪不再为无限级树结构烦恼,且看此篇    ▪python实现变参
▪打开文件数限制功能不断地制造问题    ▪Arduino Due, Maple and Teensy3.0 的 W5200性能测试    ▪Selenium实例----12306网站测试
▪基于协同过滤的推荐引擎    ▪C4.5决策树    ▪C#HTTP代理的实现之注册表实现
▪nosql和关系型数据库比较?    ▪如何快速比较这两个字符串是否相等?    ▪hdoj 1863 畅通工程 最小生成树---prime算法
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3