首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >WCF因多个请求而变慢

WCF因多个请求而变慢
EN

Stack Overflow用户
提问于 2014-05-20 15:21:26
回答 1查看 1K关注 0票数 1

我有一个WCF服务,它使用安全模式为TransportWithMessageCredentialbasicHttpBinding。我正在调查一些客户遇到的超时问题。我已经写了一个小的测试应用程序,它在客户机上创建多个线程,并对服务器进行一个“简单”的调用,这在一段时间内除了Thread.Sleep之外什么也不做。

当我运行这个测试应用程序时,它创建了10个线程,用远程方法实例化对象,然后调用它(告诉它休眠5秒(5000ms))。

我还尝试了多种不同的线程数和服务器上的“睡眠”时间,我发现前3或4个在正确的时间量内返回,但后面的都需要更长的时间。

1:12:13.197 Starting Test - Multi1 1:12:13.199 Starting Test - Multi2 1:12:13.203 Starting Test - Multi3 1:12:13.228 Starting Test - Multi4 1:12:13.367 Got connection object - Multi3 1:12:13.368 Starting Test - Multi5 1:12:13.368 Got connection object - Multi1 1:12:13.369 Got connection object - Multi4 1:12:13.369 Got connection object - Multi2 1:12:13.391 Starting Test - Multi6 1:12:13.394 Starting Test - Multi7 1:12:13.398 Starting Test - Multi8 1:12:13.531 Got connection object - Multi5 1:12:13.532 Starting Test - Multi9 1:12:13.533 Got connection object - Multi7 1:12:13.535 Got connection object - Multi6 1:12:13.539 Starting Test - Multi10 1:12:13.565 Got connection object - Multi8 1:12:13.687 Got connection object - Multi9 1:12:13.691 Got connection object - Multi10 1:12:18.396 Ended Test - Multi3 1:12:18.396 Ended Test - Multi4 1:12:18.844 Ended Test - Multi2 1:12:19.345 Ended Test - Multi1 1:12:19.844 Ended Test - Multi5 1:12:20.344 Ended Test - Multi7 1:12:20.844 Ended Test - Multi6 1:12:21.349 Ended Test - Multi8 1:12:21.844 Ended Test - Multi9 1:12:22.344 Ended Test - Multi10

因此,根据上面的结果,您可以看到所有线程都已创建,并获得了“connection对象”。这大约需要500ms,考虑到它正在做的事情,这并不是太糟糕。

然后测试Multi3Multi4大约需要5000毫秒(与预期完全一样),但是到第8、9和第10次调用返回时,它们大约需要8000-9000毫秒。

当我在服务器上监视它时,每个线程都是唯一的,并且具有不同的threadId,所以它不会与线程池发生冲突。

我将所有属性的服务限制设置为50。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<serviceThrottling maxConcurrentCalls="50" maxConcurrentInstances="50" maxConcurrentSessions="50"/>

所以看不出这可能是导致延迟的原因。

EN

回答 1

Stack Overflow用户

发布于 2014-05-20 21:00:40

您可能需要检查,然后可能需要使用ThreadPool.GetMinThreadsThreadPool.SetMinThreads方法设置最小线程数。

下面的帖子,虽然有点陈旧,但对我们的团队有帮助,可能会为你提供有价值的见解。

http://blogs.msdn.com/b/wenlong/archive/2010/02/11/why-are-wcf-responses-slow-and-setminthreads-does-not-work.aspx

供参考:

首先,WCF使用托管I/O线程来处理请求。CLR ThreadPool可防止一定数量的空闲I/O线程被销毁。当需要更多的I/O线程时,它们是由ThreadPool创建的,这是一种昂贵的开销。空闲线程的数量由“MinIOThreads”设置指定。您可以使用ThreadPool.GetMinThreads() API检查您的应用程序有哪些设置。默认情况下,在独立应用程序中,此设置是计算机上的CPU数量。例如,在我的双核笔记本电脑上,此设置为2。因此,您可能希望使用ThreadPool.SetMinThreads()提高此MinIOThreads设置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23763931

复制
相关文章
手工修复Azure DevOps无法连接到Azure的问题
今天我在为一个从TFVC迁移到Git的老项目重新配置发布到Azure App Service的CI/CD管线的时候,Azure DevOps竟然爆了。这是一个微软已知的bug,目前还未修复,我来带大家看看如何手工workaround这个问题。
Edi Wang
2019/07/09
1.5K0
手工修复Azure DevOps无法连接到Azure的问题
Azure DevOps+Docker+Asp.NET Core 实现CI/CD(三.实现CD持续部署管道)
本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目).
GuZhenYin
2020/08/11
5130
Azure DevOps+Docker+Asp.NET Core 实现CI/CD(三.实现CD持续部署管道)
容器和DevOps:基于容器的DevOps交付管道
DevOps 的出现是为了满足不断增长的市场和消费者对技术应用程序的需求。它旨在在不牺牲软件质量的情况下创建更快的开发环境。DevOps 还专注于在快速开发生命周期中提高软件的整体质量。它依赖于多种技术、平台和工具的组合来实现所有这些目标。
DevOps云学堂
2022/02/13
8230
容器和DevOps:基于容器的DevOps交付管道
使用 Docker、Kubernetes 和 Azure DevOps 实现 DevOps
这篇文章,我们将会介绍所有你想了解的 DevOps 知识,看完后你可以着手构建自己的 CI/CD 流水线。
LinuxSuRen
2020/05/26
1.2K0
Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)
本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目).
GuZhenYin
2020/08/11
7320
Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)
从零开始针对 .NET 应用的 DevOps 运营实践 - 运行环境搭建
最近的一段时间,在公司里我都在进行基于 Jenkins 和 SonarQube 配合已有的 Gitlab 搭建部门的持续集成环境的工作,虽然之前有使用过 GitHub Actions 和 Azure DevOps,但是从头开始搭建这样的一套 DevOps 环境还是学习到了一些新的知识点,因此,借着这个中秋国庆假期的机会,分享下整个工具链的搭建过程,如果你也有相似的需求的话,希望可以对你有所帮助
程序员宇说
2020/10/19
8490
从零开始针对 .NET 应用的 DevOps 运营实践 - 运行环境搭建
最近的一段时间,在公司里我都在进行基于 Jenkins 和 SonarQube 配合已有的 Gitlab 搭建部门的持续集成环境的工作,虽然之前有使用过 GitHub Actions 和 Azure DevOps,但是从头开始搭建这样的一套 DevOps 环境还是学习到了一些新的知识点,因此,借着这个中秋国庆假期的机会,分享下整个工具链的搭建过程,如果你也有相似的需求的话,希望可以对你有所帮助
梁规晓
2020/10/26
8360
从零开始针对 .NET 应用的 DevOps 运营实践 - 运行环境搭建
[Microsoft Teams]使用连接器接收Azure Devops的通知
连接器(connector)是Teams中频道的一个接受消息的功能,官方的解释如下:
dino.c
2020/03/24
1.7K0
[Microsoft Teams]使用连接器接收Azure Devops的通知
解决Azure DevOps部署到Azure后.NET Core网站无法启动的问题
最近我遭遇了一个奇怪的问题。使用Azure DevOps配置CI/CD管线,自动部署到Azure App Service以后,.NET Core的网站竟然会启动失败。我们来看看如何解决这个问题。
Edi Wang
2019/07/09
9270
解决Azure DevOps部署到Azure后.NET Core网站无法启动的问题
使用Azure DevOps持续集成GitHub项目
微软的Azure DevOps是一款软件开发管理工具,整合了需求、代码、编译、测试、发布等所有功能于一身。今天我们就来看看如何用Azure DevOps对自己GitHub上的项目做持续集成,并能在GitHub显示最新编译状态。
Edi Wang
2019/07/08
1.2K0
使用Azure DevOps持续集成GitHub项目
Azure 静态 web 应用集成 Azure 函数 API
前几次我们演示了如何通过Azure静态web应用功能发布vue跟blazor的项目(使用 Azure静态web应用+Github全自动部署VUE站点、使用Azure静态Web应用部署Blazor Webassembly应用)。但是一个真正的web应用,总是免不了需要后台api服务为前端提供数据或者处理数据的能力。同样前面我们也介绍了Azure函数服务,Azure函数的http trigger可以对http作出响应,可以完美的承当web api的角色。现在Azure静态web应用可以直接集成Azure函数,使得一次发布可以同时发布前端项目(vue、blazor)及后台api服务(azure函数)。
MJ.Zhou
2020/11/24
1.2K0
Azure 静态 web 应用集成 Azure 函数 API
使用Azure DevOps Pipeline实现.Net Core程序的CI
上次介绍了Azure Application Insights,实现了.net core程序的监控功能。这次让我们来看看Azure DevOps Pipeline功能。Azure DevOps Pipeline 是Azure DevOps里面的一个组件,对于12个月试用账号同样永久免费。
MJ.Zhou
2020/07/21
7400
使用Azure DevOps Pipeline实现.Net Core程序的CI
从一个小 Bug,到 Azure DevOps
最近和同事提起一个几年前的 Bug,那是一个很小很小的 Bug,没什么技术含量。那时候我刚入职,正好公司卖了一款仪器到某个国家,但是那边说配套的软件运行不起来,一打开就报错。经过排查发现出错的代码很简单,大致是这样:
dino.c
2021/11/30
4710
从一个小 Bug,到 Azure DevOps
在线Python环境(Azure Notebooks)
上文说道了anaconda的安装和使用。对于动手能力较差的小伙伴们来说,安装还是太过麻烦,一出现问题也不知道如何查错,然后就从入门选择放弃。
罗罗攀
2019/04/18
1.7K0
在线Python环境(Azure Notebooks)
win10 uwp 使用 Azure DevOps 自动构建
通过 Azure DevOps 可以做到自动构建程序,覆盖计划、创建、编程、测试、部署、发布、托管、共享等各个环节,适用于大多数的语言、平台。 本文继续使用图床为例告诉大家如何使用 Azure DevOps 自动构建
林德熙
2019/03/13
4930
win10 uwp 使用 Azure DevOps 自动构建
Azure DevOps 中 Dapr项目自动部署流程实践
注:本文中主要讨论 .NET6.0项目在 k8s 中运行的 Dapr 的持续集成流程, 但实际上不是Dapr的项目部署到K8s也是相同流程,只是k8s的yaml配置文件有所不同
重典
2022/04/11
4030
Azure DevOps 中 Dapr项目自动部署流程实践
DevSecOps管道和工具:需要了解的内容[DevOps]
到目前为止,DevOps在IT界已经得到了很好的理解,但是并不是完美的。假设已经在一个项目的现代应用程序交付中实现了所有DevOps工程实践。到达了开发管道的末端,但是一个渗透测试团队(内部或外部)发现了一个安全缺陷,并提出了一个报告。现在必须重新启动所有流程,并要求开发人员修复缺陷。
yyx
2019/12/03
1.2K0
DevSecOps管道和工具:需要了解的内容[DevOps]
Azure DevOps 部署成功后自动发邮件通知
默认情况下,Azure DevOps 在编译成功或失败后,会给项目成员发邮件通知。但是在CI/CD环境下,我们更关心的是什么时候部署完成,然后开展手工或自动化测试。我们来看看如何让 Azure DevOps 在部署成功后自动发邮件通知组员。
Edi Wang
2019/07/09
2K0
Azure DevOps 部署成功后自动发邮件通知
Sonar LTS 版本 8.9发布|新特性
开发人员可以通过静态应用程序安全性测试(SAST)来控制代码安全性,以使用更多语言,更多规则,更好的检测并改善工作流程。
DevOps云学堂
2021/05/11
1.5K0
Sonar LTS 版本 8.9发布|新特性
CRT:一款针对Azure的CrowdStrike安全报告工具
CRT全称为“CrowdStrike Reporting Tool for Azure”,是一款针对Azure的CrowdStrike安全报告工具。该工具会在Azure AD/O365 租户中查询以下配置,并帮助广大研究人员寻找一些跟权限和配置有关的安全信息,以帮助组织更好地保护Azure环境的安全性。
FB客服
2022/04/11
9800
CRT:一款针对Azure的CrowdStrike安全报告工具

相似问题

Exchange Web服务API 1.0错误

13

Exchange web services API -获取所有邮箱

18

测试Exchange Web服务API的最佳策略

10

使用Exchange服务获取电子邮件附件的服务器URL

13

PHP Exchange Web服务-获取邮件正文

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文