zoukankan      html  css  js  c++  java
  • Benchmark感受

     

    最近项目产品开始考虑提供64位的版本,之前32位的LoadTest没有参与,文档也没有找到,只好重头开始,2周下来碰到不少问题。

    这边主要谈下感受,这里主要是linux系统,web服务是apache(windows+iis的以后再讨论)

    1. 硬件

    主要就是机器,这次选取的机器都是一样配置的,DELL的T3400


    2.ulimit

    Linux系统下执行ulimit -a

    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 63369
    max locked memory       (kbytes, -l) unlimited
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 65535
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 2048
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 30000
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited


    我们可以看到这些信息,具体什么含义请google,将所有机器的设置都修改成一样的,具体配置还是根据你的产品。

    sudo vi /etc/security/limits.conf
    sudo vi /etc/security/limits.d/90-nproc.conf  (new for Fedora 13 and Redhat 6),如果发现ulimit -s老是不成功,看看有没有这个文件
    sudo reboot


    我个人修改了stack size,默认应该是10M的,我修改成2M;

    另一个是max user processes,默认的太小是1024,需要加大,否则后面配置apache的mpm设置老是提示

    [alert] (11)Resource temporarily unavailable: apr_thread_create: unable to create worker thread

    3. Apache

    版本要一致,从官网下载编译安装,选择MPM Worker模式(apache2.0之后新特性,请自行Google) 

    查看版本

    ./httpd -v
    Server version: Apache/2.2.22 (Unix)
    Server built:   Mar 27 2012 14:03:52

    查看模式

    ./httpd -l
    Compiled in modules:
     core.c
     mod_log_config.c
     mod_expires.c
     mod_headers.c
     worker.c
     http_core.c
     mod_rewrite.c
     mod_so.c

    配置conf/extra/http-mpm.config

    <IfModule mpm_worker_module>
        ServerLimit 4
        StartServers 4
        ThreadLimit 512
        ThreadsPerChild 512
        MaxClients 2048
        MinSpareThreads 2048
        MaxSpareThreads 0
        MaxRequestsPerChild 0

    </IfModule> 

    里面的值请根据机器配置调整,每个设置含义请自行Google

    Apache启动后,先检查logs/error.log,看看里面有没有错误

    比如[error] server is within MinSpareThreads of MaxClients, consider raising the MaxClients setting

    4. 服务

    尽量减少其他进程的干扰,除了系统进程,只启动产品所用到的服务。


    5.产品架构

    熟悉自己的产品,使用了哪些技术,有哪些优势哪些薄弱的地方,瓶颈可能在哪些地方,优先测试

    6. 负载均衡

    单台机器负载 峰值:平均

    多台机器负载 冗余,最终上线部署

    (题外话:以前有人询问性能问题,我的回答是能用硬件解决的先考虑增加硬件,之后再来软件优化。可能有些人没有理解,

    展开说下,我相信某个项目或产品在项目初期肯定充分比较过选择什么技术使用哪种框架,如果没有我只能无语,那么出现性能问题就是用户数达到某个数量级,

    远远超出当初的规划,这个时候最快的做法就是增加硬件解决当前问题,之后软件优化或重构;过去做的5年规划可能赶不上公司3年的发展,而软件的优化往往牵一发而动全身,

    增加硬件做负载均衡却是成本最低的。有人可能会说硬件很贵的,可能你考虑的是买新机器,可以考虑买二手服务器么或是自己组装,newegg早期使用的就是二手服务器,

    google曾经用卡车去买来了大量废弃的内存条,很多服务器也是自己组装的,http://tech.sina.com.cn/i/2012-01-06/10336609256_3.shtml


    7. 性能测试工具

    Windows下第一想到的是LoadRunner,Linux下免费的当然是Jmeter,熟悉工具也是必要的,

    比如Jmeter的remote test,http://jmeter.apache.org/usermanual/remote-test.html

    8. 尝试使用多线程,增加JVM

    现在的服务器基本都是多核的,过去硬件性能可能会影响或限制线程数目,随着硬件性能增强,可以增大例如Jmeter/Apache的线程数量。

    java jvm 参数 -Xms -Xmx -Xmn -Xss 调优总结(http://hi.baidu.com/sdausea/blog/item/c599ef13fcd3a7dbf6039e12.html)


    9. 32位/64位

    现在服务器系统基本都有64位的了,内存也是白菜价,个人电脑上个8G也很轻松,CPU也支持64位架构,项目采用64位会逐步普遍,但是千万不要认为64位的应用性能会更好,不一定的,

    64位应用更占硬盘更吃内存,另外64位可能还会有兼容性的问题,不过64位应该是个趋势。


    暂时想到的是这些。 

    OscarXie.net

    关注质量与体验——电子商务与自动化测试
    http://www.cnblogs.com/oscarxie/

  • 相关阅读:
    数组_leetcode283
    数组_leetcode438
    数组_leetcode215
    数组_leetcode167
    数组_leetcode209
    数组_leetcode88
    数组_leetcode80
    数组_leetcode76
    数组_leetcode75
    数组_leetcode27
  • 原文地址:https://www.cnblogs.com/oscarxie/p/2425874.html
Copyright © 2011-2022 走看看