今天Java服务器端并发和压力测试结果。

局域网内测试

机器:P42.8G   内存1G.

语言:Java   客户端连接:flash。

测试方法:客户端连接进来,根据CompanyID的不同,把连接进来的客户端的信息解析后发送到此企业的客服。

测试结果:

package Visit;

import java.net.*;
import org.apache.log4j.*;

public class MainThread
    extends Thread {
  private Socket socket;
  public MainThread() {
  }

  static Logger lg = Logger.getLogger(MainThread.class.getName());

  /**
   * 线程方法
   */
  public void run() {
    while (true) {
      if (!VisitServer.Links.isEmpty()) {
        socket = (Socket) VisitServer.Links.firstElement();
        Online c = new Online(socket,
                              String.valueOf(socket.getRemoteSocketAddress()),
                              "V", 0, "");
        VisitServer.Onlines.addElement(c);
        c.start();
        VisitServer.Links.removeElementAt(0);
      }
      else {
        try {
          Thread.sleep(100);
        }
        catch (Exception e) {
          lg.info("主后台处理线程MainThread在处理用户进入线程处理时出现错误:" + e.getMessage());
        }
      }
    }
  }
}

main方法里调用上面的方法()

  /**
     * 开启运行主线程
     */
    MainThread mt = new MainThread();
    mt.start();

 

上面这个MainThread是程序开始时运行的一个线程。这个线程就是用来判断Links这个队列,如果这个队列中有新的Socket连接进来的话,这个线程就负责开启一个新的线程来处理这个Socket连接。但是现在同时有6000多个(有时6106,有时5818等,但不达到7000.)Socket同时连接在线(同时处于连接状态,没有断)的时候,这个线程就停了。即使Links有新的Socket进入队列。这个也不执行了。当这个时候,我设置了断点。主线程还是正常继续执行(当然挺慢),这个MainThread 线程还是不执行。

_________________________________________________________

补充一下:

Linkst和Onlines都是Vector类型的变量。

  static Vector Onlines = new Vector(100, 10); //在线用户
  static Vector Links = new Vector(100, 10); //所有的连接

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值