`

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();

    }

}
 

 

分享到:
评论

相关推荐

    Nextjs-keep-alive-demo.rar

    Nextjs-keep-alive 实现,vue中有这个专门的keep-alive插件,但是react没有,更别提nextjs了,这是现成的项目demo。 next9,10,11,12,13,14 及以上都可以用。直接使用或者移植到你的项目,非常方便。集成了发送...

    利用Keep-Alive处理Socket网络异常断开的方法

    1. **触发条件**:当TCP连接在一定时间内(默认为2小时)没有数据传输时,会自动触发Keep-Alive机制。 2. **探测报文**:TCP协议会发送一个特殊的Keep-Alive数据包给对方,这个数据包使用的是上一次发送的数据的...

    vue中keep-alive,include的缓存问题

    在Vue.js框架中,`keep-alive`是一个非常实用的内置组件,它能够对组件状态进行缓存,防止在切换路由时进行重复的渲染,提高性能。然而,在使用`keep-alive`组件的`include`属性时,可能会出现一些缓存问题。`...

    HTTP协议Keep-Alive模式详解

    HTTP 协议 Keep-Alive 模式详解 Keep-Alive 模式是 HTTP 协议中的一种机制,它使客户端到服务器端的连接保持有效,从而避免了每个请求和应答都新建一个连接,并立即断开连接。下面是关于 Keep-Alive 模式的详细...

    彻底揭秘keep-alive原理(小结)

    keep-alive用法:动态组件&vue-router keep-alive源码解析 keep-alive组件及其包裹组件的钩子 keep-alive组件及其包裹组件的渲染 二、keep-alive介绍与应用 2.1 keep-alive是什么 keep-alive是一个抽象组件:它...

    springboot-keepalive设置测试

    总结来说,"springboot-keepalive设置测试"涉及到的关键知识点包括:Spring Boot的HTTP连接池配置,特别是与keepalive相关的`keep-alive-timeout`属性;使用Jodd HttpClient进行HTTP客户端测试,以及理解HTTP长连接...

    vue keep-alive请求数据的方法示例

    在路由配置文件中,可以设置 keep-alive 属性为 true,這樣就可以缓存组件的状态,减少不必要的组件重渲染,提高应用程序的性能。 结论 在 Vue 中,Keep-Alive 是一个非常有用的机制,可以缓存组件的状态,减少...

    vue.js内置组件之keep-alive组件使用

    `keep-alive`是Vue.js框架中的一个内置组件,用于实现组件的缓存功能,避免在切换组件时销毁和重新创建实例,从而提高性能并保持组件的状态。在使用`keep-alive`时,它会包裹动态组件,并在不活动时缓存组件实例。 ...

    vue使用keep-alive切换页面,2种方法实现页面保持滚动位置.zip

    为了解决这个问题,Vue提供了一个名为`keep-alive`的组件,它可以缓存组件的状态,使得在页面切换后仍然能保留之前的滚动位置。下面我们将详细探讨两种使用`keep-alive`在Vue中实现页面保持滚动位置的方法。 首先,...

    keep-alive.7z

    例如,`<keep-alive include="componentA, componentB">` 只会缓存名为`componentA`和`componentB`的组件。 2. `exclude`:与`include`相反,用于排除不需要缓存的组件。 3. `max`:限制可缓存的最大组件数量,当...

    umi-plugin-keep-alive:用于基于React激活的umijs

    umi-plugin-keep-alive 中文说明 | 此 <KeepAlive> 功能基于 在线示例 umi 多 tabs 示例: 使用方法 安装 npm install umi-plugin-keep-alive --save # or yarn add umi-plugin-keep-alive 从 umi 中导出 KeepAlive...

    keep-alive的介绍及使用

    如果需要频繁切换路由,这个时候就可以考虑用keep-alive了,来达到避免数据的重复请求的目的 keep-alive用来缓存组件,避免多次加载相应的组件,减少性能消耗。 简单一点来说就是从页面A链接到其他页面后回退到页面A...

    深入理解与使用keep-alive(配合router-view缓存整个路由页面)

    这时,`<keep-alive>`组件就显得尤为重要。本文将详细介绍如何配合`router-view`使用`<keep-alive>`来缓存整个路由页面。 首先,`<keep-alive>`是一个抽象组件,它的主要作用是将被包含的组件保留在内存中,避免在...

    vue中keep-alive内置组件缓存的实例代码

    将要缓存的组件使用 keep-alive 包裹住即可。 keep-alive优点的介绍: 1. 切换组件时,当前组件不会触发销毁的生命周期钩子。也就是说不会销毁了。 2. 切换回来时,也不会重新创建。(既然都没有被销毁,哪里来的...

    vue中进入详情页记住滚动位置的方法(keep-alive)

    本文将介绍如何通过使用Vue的内置组件keep-alive来实现进入详情页时记住滚动位置的方法。 首先,了解keep-alive组件的基本作用是必要的。keep-alive是Vue提供的一个抽象组件,它用来缓存不活动的组件实例,而不是...

    keep-alive不能缓存多层级路由菜单问题解决

    在Vue.js应用中,`keep-alive`组件用于缓存组件状态,以便在导航到其他页面后仍能保留之前的状态,从而提高用户体验。然而,在处理多层级路由菜单时,可能会遇到`keep-alive`无法正确缓存的问题。这个问题通常发生在...

    vue组件 keep-alive 和 transition 使用详解

    1.keep-alive 能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 相似, 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件...

    Vue中keep-alive组件的深入理解

    Vue.js 是一款流行的前端框架,它的`keep-alive`组件是一个非常实用的功能,用于缓存组件实例,防止在路由切换时销毁和重新创建组件,从而保持组件的状态。本文将深入探讨`keep-alive`组件的工作原理及其在实际开发...

    解决vue keep-alive 数据更新的问题

    这就是为什么使用`<keep-alive>`后,页面数据无法更新的问题所在。 为了解决这个问题,我们需要将数据获取的逻辑迁移到`activated`钩子中。因为`activated`在组件被缓存并重新激活时会触发,这确保了每次组件被显示...

    vue中keep-alive的用法及问题描述

    1.keep-alive的作用以及好处 在做电商有关的项目中,当我们第一次进入列表页需要请求一下数据,当我从列表页进入详情页,详情页不缓存也需要请求下数据,然后返回列表页,这时候我们使用keep-alive来缓存组件,防止...

Global site tag (gtag.js) - Google Analytics