1、怎么知道一个系统支持多少个用户同时在线?并发有多少?
2、怎么知道一个系统处理能力是多少?
3、怎样能提高上面的数据?
4、谢谢!

解决方案 »

  1.   

    1. 这个和太多东西有关了,程序的框架、使用服务器、硬件配置、数据库并发连接、太多了。 有相应的压力测试软件 , 可以自己测。 (一般压到2500并发就差不多了)2.丫的,我们开发时的测试服务器是8核CPU的 惠普品牌机。 你说正式的环境处理能力是怎么样?3.良好的设计。良好的编码。4.不用谢。
      

  2.   

    至于如何提高性能,在代码上进行逐一优化,但代码提升的性能毕竟有限。当代码已经无法再进行优化的时候,应考虑从硬件入手。我们曾有个项目用了 5 台服务器,每台是 4 个 4 核 CPU,12GB 内存,两台给数据库集群用了,三台给这个项目的 7 个工程用了。但这个项目由于受到 JMS 队列的限制,以及大量的 HTTP/WebServices/Socket 调用,目前的处理能力在每秒能处理 20 个左右的请求。
      

  3.   

    2、怎么知道一个系统处理能力是多少?
    --------------------------------------我一般都是自己写代码测试,比如使用 JDK 的线程池,从 50 个开始进行调用,完成之后看看存到数据表里数据记录的时间字段,挑个时间段,就可以估算每秒能处理多少个了。
      

  4.   


    我指的是javaWeb中的并发压力测试,静态页面 框架时使用Tomcat都能轻松压到1000, 我实在想不明白 你说的20个并发指的是什么 ?  即使数据库从面连接池连接数也不止20个。
      

  5.   

    居然是Dell的 , 我记得是HP 来着。
      

  6.   


    你压是压到了 1000 个,但是 tomcat 并不是并行地处理这 1000 个请求!Tomcat 默认处理请求线程池的大小只有 150 个,除非手工改掉过。否则将还有 750 个请求线程处于队列的等待中,这样并不表示这个 tomcat 能处理 1000 个并发。我们那个不是 Java Web 应用,不过用的也是 Tomcat 只是作为 Web Service 的容器,每秒 20 个是整个业务流程处理的能力。那天在写代码做压力测试的时候发觉,由于其中的代码有很多的长事务,也就是说把 HTTP 请求、其他 WS 调用,甚至是 Socket 调用都纳入数据库事务的代码之中,导致并发测试时数据库连接池中的连接耗尽,后来把这些调用放入事务之外,在调用之前提交一次事务,调用完成之后再获得连接进行处理。因为其中一些 外部的 HTTP/WS/Socket 调用时间能长达两三秒钟,在改动之前导致一个连接需要占用 3 秒左右,也就是说 100 个连接,只能供 33 个请求之用,呵呵。后来改完之后就不再发生这种问题了,在大量并发时,使用
    netstat -anp | grep 1521 | grep TCP | wc -l
    查看与数据库端的连接数量基本上保持在 20 左右。
    结论:不应在数据库事务中处理耗时的操作,比如:网络IO、远程调用什么的。另外,对于多个工程共同连接一个数据库的项目来说,应在连接池中设置连接在 N 秒之后没有被使用时就主动回收掉,如果不回收的话,在大并发来的时候,连接池中的连接涨到二三十个并且不回收的话,之后可能会一直占用这些连接,将会导致数据库服务器需要管理大量的客户端连接,如果设置不妥的话,还会造成数据库服务端的连接耗尽,使其他工程申请不到新的连接。因此,建议设置一下空闲时间值,比如 c3p0 配置一下 c3p0.maxIdleTime 的值,我配置成 300,也就是说 300 秒后没使用的话就主动断开回收这个连接。对于连接池来说,应设置个最小连接数,以及初始化的连接数,这些都能提高一定的数据库操作性能。
      

  7.   

    我们的那些机器也是 DELL 的,呵呵[test@web01 ~]$ grep -e processor -e 'model name' /proc/cpuinfo
    processor       : 0
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 1
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 2
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 3
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 4
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 5
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 6
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 7
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 8
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 9
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 10
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 11
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 12
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 13
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 14
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    processor       : 15
    model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
    [test@web01 ~]$ grep -e Mem /proc/meminfo
    MemTotal:     12463196 kB
    MemFree:       3983564 kB