精华内容
下载资源
问答
  • WEB服务器-长连接与短连接

    千次阅读 多人点赞 2019-04-24 23:51:29
    长连接与短链接 什么是长连接、短连接? 在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含...

    WEB静态服务器

    长连接与短链接

    什么是长连接、短连接?

    • 在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

    • 而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:

    	Connection:keep-alive
    
    • 在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

    • HTTP协议的长连接和短连接,实质上就是TCP协议的长连接和短连接。

    • TCP 长连接和短连接,TCP在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立通过三次握手,释放则需要四次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的。

    TCP通信的整个过程,如下图

    public_07_1.png

    TCP短连接

    模拟一种TCP短连接的情况:

    1.client 向 server 发起连接请求
    2.server 接到请求,双方建立连接
    3.client 向 server 发送消息
    4.server 回应 client
    5.一次读写完成,此时双方任何一个都可以发起 close 操作
    

    在步骤5中,一般都是 client 先发起 close 操作。当然也不排除有特殊的情况。

    从上面的描述看,短连接一般只会在 client/server 间传递一次读写操作!

    TCP长连接

    再模拟一种长连接的情况:

    1.client 向 server 发起连接
    2.server 接到请求,双方建立连接
    3.client 向 server 发送消息
    4.server 回应 client
    5.一次读写完成,连接不关闭
    6.后续读写操作...
    7.长时间操作之后client发起关闭请求
    

    TCP长/短连接操作过程

    • 短连接的操作步骤是:

      • 建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接
        public_07_2.png
    • 长连接的操作步骤是:

      • 建立连接——数据传输…(保持连接)…数据传输——关闭连接

    public_07_2.png

    TCP长/短连接的优点和缺点

    • 长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接。

    • client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,如关闭一些长时间没有读写事件发生的连接,这样可以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免某个蛋疼的客户端连累后端服务。

    • 短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。

    • 但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。

    TCP长/短连接的应用场景

    • 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。
      每个TCP连接都需要三次握手,这需要时间,如果每个操作都是先连接,
      再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,
      再次处理时直接发送数据包就OK了,不用建立TCP连接。
      例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,
      而且频繁的socket 创建也是对资源的浪费。

    • 而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,
      而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,
      如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,
      那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。

    展开全文
  • C#运行的程序电脑不需要安装Oracle客户端,只需要将webservice接口部署在已经安装有客户端的机子上,即可实现操作Oracle 9i数据库!
  • 会话ID:7a6255467463434e949fd5a1ab4fa550,用户ID:13302812936:66:1:向节点SWZJ.NSXY.QT.CXNSRNDPJG,IP地址为:http://80.80.80.80/qyxygt3api/services/gt3Service?wsdl发起Webservice调用服务,配置的初始连接数...

    日志如下:
    日志显示卡在建立连接开销
    2020-08-30 21:24:04,319 INFO [BaseCommunicationProtocalFactory] 会话ID:7a6255467463434e949fd5a1ab4fa550,用户ID:13302812936:66:1:向节点SWZJ.NSXY.QT.CXNSRNDPJG,IP地址为:http://80.80.80.80/qyxygt3api/services/gt3Service?wsdl发起Webservice调用服务,配置的初始连接数为:300
    2020-08-30 21:24:14,374 INFO [WebServiceClientCache] 会话ID:7a6255467463434e949fd5a1ab4fa550,用户ID:13302812936:66:1:http://80.80.80.80/qyxygt3api/services/gt3Service?wsdl建立连接开销ms:10055
    整个会话的交易耗时:
    2020-08-30 21:23:33,034 INFO [InternalAccessHandler] 会话ID:7a6255467463434e949fd5a1ab4fa550,用户ID:13302812936:58:2:交易流水号:7a6255467463434e949fd5a1ab4fa550,服务:SWZJ.HXZG.FP.CSHPZHDSQ,整个交易耗时ms:10154

    此次请求大多数的时间消耗在建立连接上。
    排除环境和路由的原因:
    环境上的路由仅指向webservice的地址,不会去建立连接,建立的连接还是走的webservice协议的网络连接。因此和连接没有关系。

    建立连接可能会经历以下步骤:
    服务器1==》DNS解析 == 》负载均衡 ==》防火墙 ==》服务器2

    根据问题发生的时间,此次问题仅在周六周日出现,怀疑是在防火墙上由策略限制了长连接。
    根据以往经验,由于网络架构可能会造成网络解析慢,导致卡顿。

    目前解决办法:
    在esb服务器的hosts上做如下配置跳过网络解析
    webservice的地址(负载地址) 发票领用服务器地址
    发票领用服务器地址 发票领用服务器地址
    由于并不能确定是哪一段的网络解析慢,不能确定在hosts中添加哪个ip对ip的解析,需要去尝试。

    展开全文
  • 使用CXF实现WebService

    2016-03-02 21:32:29
    MyCXFService为WebService服务端,MyCXFClient为客户端调用 1、将MyCXFService.zip与MyCXFClient.zip解压 2、将cxf_jar包文件夹下所有包,拷至MyCXFService与MyCXFClient项目WebRoot\WEB-INF\lib\cxf_2.7.8 目录下...
  • 在本机上测试通过一时间只处理3个请求,服务器上是9个请求,可能每台电脑配置不一样有点出入没关系这不是重点,然后就上网百度,找了好时间,很多都是在iis里设置 队列长度和最大并发连接数,结果没效果,后来有...

    由用户反应客户端报错,提示the request channel timeout,看意思是超时了,从字面上看在web.config里延长请求时间可以解决,不过我想服务端的方法调用很快的,怎么会出现这个问题,后来想了一下是不是并发数很少,结果测试了一下还真是,在本机上测试通过一时间只处理3个请求,服务器上是9个请求,可能每台电脑配置不一样有点出入没关系这不是重点,然后就上网百度,找了好长时间,很多都是在iis里设置 队列长度和最大并发连接数,结果没效果,后来有文章说还有个重要指标是说最大并发线程数,发现这才是重点,如果说 iis里的队列长度和最大并发连接数是子类,那这个并发线程数就是父类,所以先要设置并发线程数的范围,然后在设置队列长度和并发连接数,队列长度和并发连接数的一个作用是请求数在范围里不会立马返回503错误,而是等待,对用户友好,但是等待的时间长了就会报错提示超时了,原因就出现在这

    那如何设置并发线程数,这里还有个坑,在自己的window家庭版系统里设置是没有用的,没试过专业版不知道效果,在window server服务器上测试有用,提醒一下

    设置方法:在C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config和C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config目录下打开machine.config文件,查找< processModel autoConfig=“true”/> 改为< processModel autoConfig=“false” maxWorkerThreads=“200” minWorkerThreads=“100” /> 设置最大最小线程数即可

    在测试全部立马返回数据,可以可以,分享一下

    展开全文
  • 连接webservice

    2019-03-28 02:08:03
    NULL 博文链接:https://yangsongjing.iteye.com/blog/1243528
  • C# winfrom中webservice接口连接服务器上传图片和下载图片 C# winfrom中webservice接口连接服务器上传图片和下载图片
  • WINCE连接WEBSERVICE第一次很慢的解决办法。项目上已经用了,确定好用。
  • CXF调用webservice超时设置

    千次阅读 2018-05-23 18:54:22
    线路越通畅越快,但是由于路由复杂交错,往往连接上的时间都不固定,运气不好连不上,HttpClient的默认连接时间,据我测试, 默认是1分钟,假如超过1分钟 过一会继续尝试连接,这样会有一个问题 假如遇到一个url...
    		
    		final String address = "http://XXXXXkService?wsdl";
    		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
            factory.setServiceClass(WorkerWebService.class);// 设置请求接口
            factory.setAddress(address);
            WorkerWebService workerService = (WorkerWebService) factory.create(); // 创建客户端对象
            // 设置客户端的配置信息,超时等.
            Client proxy = ClientProxy.getClient(workerService);
            HTTPConduit conduit = (HTTPConduit) proxy.getConduit();
            HTTPClientPolicy policy = new HTTPClientPolicy();
            policy.setConnectionTimeout(10000); // 连接超时时间
            policy.setReceiveTimeout(10000);// 请求超时时间.(读取超时)
            conduit.setClient(policy);
           
            long start = System.currentTimeMillis() ;
        	
            try {
    			workerService.wy("D18052117162175433","3", "事件还原", "处理人", "处理措施", "处理结果", "0",
    					"审批意见", "1", "3", "审批人姓名");
    		} catch (Exception  e) {
    			e.printStackTrace();
    			 
    			if(e instanceof javax.xml.ws.WebServiceException){
    				System.out.println("接口连接超时A");
    				if(e.toString().indexOf("Could not send Message")>0){
    					System.out.println("接口连接超时B");
    					}
    				
    			}
    			System.out.println("接口连接超时C");
    		}
            long end = System.currentTimeMillis();
            System.out.println(end- start);
    	
    HttpClient连接超时及读取超时
    
    
    
    httpClient在执行具体http请求时候 有一个连接的时间和读取内容的时间;
    
    
    
    HttpClient连接时间
    
    所谓连接的时候 是HttpClient发送请求的地方开始到连接上目标url主机地址的时间,理论上是距离越短越快,
    
    线路越通畅越快,但是由于路由复杂交错,往往连接上的时间都不固定,运气不好连不上,HttpClient的默认连接时间,据我测试,
    
    默认是1分钟,假如超过1分钟 过一会继续尝试连接,这样会有一个问题 假如遇到一个url老是连不上,会影响其他线程的线程进去,说难听点,
    
    就是蹲着茅坑不拉屎。所以我们有必要进行特殊设置,比如设置10秒钟 假如10秒钟没有连接上 我们就报错,这样我们就可以进行业务上的处理,
    
    比如我们业务上控制 过会再连接试试看。并且这个特殊url写到log4j日志里去。方便管理员查看。
    
    
    
    HttpClient读取时间
    
    所谓读取的时间 是HttpClient已经连接到了目标服务器,然后进行内容数据的获取,一般情况 读取数据都是很快速的,
    
    但是假如读取的数据量大,或者是目标服务器本身的问题(比如读取数据库速度慢,并发量大等等..)也会影响读取时间。
    
    同上,我们还是需要来特殊设置下,比如设置10秒钟 假如10秒钟还没读取完,就报错,同上,我们可以业务上处理。
    
    


    展开全文
  • WebService详细教程

    万次阅读 2018-06-11 19:46:33
    本文转载:WebService,顾名思义就是基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求,接下来通过本文给大家介绍WebService教程详解,对webservice教程感兴趣的朋友一起学习吧。Web Services 可以...
  • 安卓连接Webservice

    2018-07-12 10:47:56
    Android 连接 Webservice 的 demo演示项目源代码文件。
  • webservice,IIS常见问题

    2015-12-10 16:48:18
    webservice发布;IIS部署。常见问题,如果还解决不了您的问题,尽管联系小编。
  • c#winform 和服务器进行数据交互式,封装的通信工具类
  • C# winfrom中webservice接口连接服务器上传图片和下载图片。 上传图片和下载图片,使用的时候先要在你要上传的服务端用IIS发布webservice接口 传输图片
  • 先说明一下当时情况,厂家发布了一个webservice服务,我生成客户端,然后服务已经拿到,但是调用方法是出现如上错误 一开始百度搜了许久,收到的答案较为复杂,而且不是满意,后面仔细查看了一下对方的服务,看出了...
  • Webservice长短(转载)

    2014-04-10 17:11:06
    1.Web Service“四两短”  当前,Web Service是一个热门话题。但是,Web Service究竟是什么?什么情况下应该用Web Service? 什么情况下不应该用Web Service?是需要我们正确认识的。  实际上,...
  • wince系统连接webService

    热门讨论 2010-11-30 09:12:46
    wince系统连接webService c# 源码
  • 手动连接webservice

    2019-08-13 01:22:40
    NULL 博文链接:https://jameskaron.iteye.com/blog/2305512
  • 工具:VS2010 数据库:Oracle 编码:C# 详细步骤及编码: 1、打开VS2010 ——> 新建项目 ——> ASP.NER空Web应用程序 ...3、在Web.config配置文件中的configuration节点下增加AppSettings的配置 ...
  • Android通过webservice连接SqlServer实例(Android4.0可运行)从原博http://blog.csdn.net/zhyl8157121/article/details/8169172下载下来的demo,看了评论和其它文章后修改,解决了Android2.3以上StrictMode模式下不...
  • 简单实现了一些功能,Helper有些是微软的,有些是自己写的,改一下数据库配置就行,mysql,sqlserver,Oracle都行。算是整合一下吧
  • https连接webservice

    2015-09-18 11:41:54
    详细描述怎么与webservice建立私密连接
  • 以下记录常用的webservice超时配置1、CXFClient client = ClientProxy.getClient(port);HTTPConduit http = (HTTPConduit) client.getConduit();HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();// ...
  • 通过webservice连接数据库

    热门讨论 2013-09-29 15:30:21
    android通过webservice连接sqlserver soap协议,接口连接 数据获取
  • WebService 简单应用

    2020-12-29 20:39:47
    // [System.Web.Script.Services.ScriptService] public class Service1 : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } } } 我们可以自定义: [WebMethod...
  • 1.数据库连接:[WebMethod]public string InsertPoint(stringdata){//解决跨域问题//Context.Response.AddHeader("Access-Control-Allow-Origin", "*");string database = "Data Source=.;Initial Catalog=test;...
  • 本文主要讲解了本人对于刚接触webService时的一些见解,从WebService连接接口,到解析从接口得到的数据,并且用SpringMVC渲染页面,将得到的数据动态渲染页面。
  • JS调用WebService示例

    2018-12-19 22:22:45
    自己写的用JavaScript通过soap协议调度 webService 的例子,WebService 是用C#做的,此Demo 主要目的是为大家提供跨语言的调度方式
  • android端通过ksoap-android库连接ASP.NET的WebService的最简代码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,650
精华内容 16,260
关键字:

webservice长连接