zoukankan      html  css  js  c++  java
  • 当前服务器的并发连接数查看

    最近在测试项目,项目环境是centos 5.6下,nginx,mysql,php环境的项目,数据库的数据量较大,每个表都是近亿级别的数据,多表轮询查询。

    linux的最大并发允许的链接: 
    查看当前服务器的并发连接数命令: 
    查看使用了多少连接数: 
    cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count 
    新版本centos用这个: 
    cat /proc/sys/net/netfilter/nf_conntrack_count

    查看总数多少: 
    cat /proc/sys/net/ipv4/ip_conntrack_max 
    新版本用这个: 
    cat /proc/sys/net/netfilter/nf_conntrack_max

    临时设置增加并发数多少: 
    echo “524288” > /proc/sys/net/ipv4/ip_conntrack_max 
    新版本centos用这个: 
    echo “524288” > /proc/sys/net/netfilter/nf_conntrack_max

    最终: 
    /etc/sysctl.conf中加入:net.ipv4.ip_conntract_max =102400 
    新版本centos用这个: 
    /etc/sysctl.conf中加入:net.nf_conntract_max =102400 
    重启配置 
    /sbin/sysctl -p

    linux的并发过程中,time_wait的数量太大,引起的链接挂起等待,需要在服务器增加以下配置:

    编辑文件/etc/sysctl.conf,加入以下内容:

    net.ipv4.tcp_syncookies = 1 
    net.ipv4.tcp_tw_reuse = 1 
    net.ipv4.tcp_tw_recycle = 1 
    net.ipv4.tcp_fin_timeout = 30 
    然后执行 /sbin/sysctl -p 让参数生效。 
    net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭; 
    net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭; 
    net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。 
    net.ipv4.tcp_fin_timeout 修改系默认的 TIMEOUT 时间

    数据库方面优化:使用简单的代码进行查询,建立了索引,同时查询条件相对简单化。数据库mysql的最大连接数设置成了3000,但是压力测试阶段,发现其实最大并发连接数达不到这么高。

    php端优化: 
    由于接口是webservice,压力测试阶段总是并发链接上不去,但是cpu和各项服务器性能参数都很低,增加libxml_disable_entity_loader(false); 在页面开始,问题解决,可以大并发访问。

    Php.ini的修改:

    ; The timeout for serving a single request after which the worker process will 
    ; be killed. This option should be used when the ‘max_execution_time’ ini option 
    ; does not stop script execution for some reason. A value of ‘0’ means ‘off’. 
    ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) 
    ; Default Value: 0 
    request_terminate_timeout = 0s

    该项置0。

    优化前,并发在20RPS。 
    以上是对这次的优化,优化后,该接口并发达到300左右RPS,响应时间在0.3秒内。如果还要继续优化,后面需要考虑对应的第三方缓存,减少数据库级别的查询才能更好解决问题。

    参考文章:http://www.itwendao.com/article/detail/92135.html

  • 相关阅读:
    MFC下使用Mysql
    Curl的移植编译以及注意事项
    MFC 封装类为静态链接库
    MFC 任务托盘显示气泡
    MFC 获取本机IP、网络ip和物理地址
    MFC下获取系统内存和当前进程的内存使用情况
    C++ windows客户端支持SSL双向认证
    jdk+tomcat+mysql一键安装脚本
    mysql修改数据库密码
    MFC 任务托盘经常消失问题
  • 原文地址:https://www.cnblogs.com/weifeng1463/p/6805676.html
Copyright © 2011-2022 走看看