`

Keep-Alive测试程序 - 附件为HTTP1.1协议文档

 
阅读更多

参考书籍:httpClient4.1入门教程

 

测试环境:

server:apache-tomcat-7.0.30
client:HttpClient 4.2.1

测试结果:

1、HTTP1.1默认打开keep-Alive功能。客户端和服务器端均默认自动开启。
默认情况下:
a、单个连接request次数设置为200时仍然有效
b、超时时间设置20s时仍然有效。
2、setHeader("Keep-Alive", "5"); 超时时间通过此方式设置后未发现效果。
3、client段开启并发链接数在700左右时达到最大,提示无法开启新链接,可做为tomcat最大并发数的参考。

 

 

package jre.demo;

import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

class TimePrinter extends Thread {
    int pauseTime;
    String name;
    int count = 1000;
    
    HttpClient mClient = new DefaultHttpClient();
    HttpGet mHttpget = new HttpGet("http://10.100.157.172:8080/HelloTomcat/hello");
    
    public TimePrinter(int x, String n) {
        pauseTime = x;
        name = n;
    }

    public void run() {
        while (count > 0) {
            try {
                System.out.print("count is : " + count + "\n");
                request();
                count --;
                Thread.sleep(pauseTime);
            } catch (Exception e) {
                System.out.println(e);
            }
        }
    }
    
    public void request() {
        try {
            HttpResponse response;
//            mHttpget.setHeader("Keep-Alive", "5");
            mHttpget.setHeader("Connection", "Keep-Alive");
            
            response = mClient.execute(mHttpget);

            HttpEntity entity = response.getEntity();
            System.out.print(response.getStatusLine());
            
            if (entity != null) {
                System.out.print("content length is :" + entity.getContentLength() + "\n");
                System.out.print("content is :" + EntityUtils.toString(entity) + "\n");
            }
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            
        }
        
    }

    static public void main(String args[]) {
        Thread t= new Thread(new Runnable(){
            @Override
            public void run() {
                // TODO Auto-generated method stub
                while (true) {
                    TimePrinter tp = new TimePrinter(100, "Guy");
                    tp.start();
                }

        }});
        t.start();
//    
//        TimePrinter tp1 = new TimePrinter(100, "Fast Guy");
//
//        tp1.start();
//
//        TimePrinter tp2 = new TimePrinter(100, "Slow Guy");
//
//        tp2.start();
//        
//        TimePrinter tp3 = new TimePrinter(100, "Slow Guy1");
//
//        tp3.start();
//        
//        TimePrinter tp4 = new TimePrinter(100, "Slow Guy2");
//
//        tp4.start();
//        
//        TimePrinter tp5 = new TimePrinter(100, "Slow Guy3");
//
//        tp5.start();

    }

}
 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics