专栏首页CVM技术交流IIS WCF 808端口业务访问异常
原创

IIS WCF 808端口业务访问异常

近期解决了一个IIS+SqlServer环境的ERP软件的问题

环境相对简单:IIS+SqlServer+ERP+ESET

系统里就3个软件:ERP、SqlServer(ERP需要)、ESET(考虑杀毒防护软件无关变量影响,已经卸载掉了问题依旧)

一般访问不了的时候, netstat -ano|findstr :808查看Established的IP,一般就几个,但有个别连接数相较其他的IP较多

统计808建连数,用netstat -ano|findstr :808|find /c "内网IP:808"

比如netstat -ano|findstr :808|find /c "172.16.0.16:808"

服务器配置较高,各指标都不是很高,访问不了的时候,某些IP一直跟808端口Established建连且建连数较多但在服务器级别这点连接数不是瓶颈,主要还得看ERP有什么特殊限制

如果是普通的IIS网站,不可能访问八九个客户端就访问不了,有些ERP有套餐、特殊配置等限制,每次访问不了的时候把808 Established数最高的IP禁止后就恢复了,还是怀疑ERP软件有什么特殊配置或限制,问ERP软件方了,ERP那边的人说他们客户较多,没遇到过这种问题

由于ERP软件方售后服务跟不上,联系软件方比较费劲,只能自己研究了

1、wcf相关4个服务

2、wcf相关程序和配置文件

32位:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\SMSvcHost.exe

C:\Windows\Microsoft.NET\Framework\v4.0.30319\SMSvcHost.exe.config

64位:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SMSvcHost.exe

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SMSvcHost.exe.config

3、性能调优

①借助微软资料和给微软开单咨询

https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/configuring-the-net-tcp-port-sharing-service

搜到1篇相关场景的微软文档,涉及2个指标:maxPendingAccepts和maxPendingConnections 。

后给微软发单咨询最佳实践,微软建议:

maxPendingAccepts:5-10

maxPendingConnections :100-200

According to the Product Team, you shouldn't increase “maxPendingAccepts” too much. 5-10 would be a good number. It means it spawns 5-10 concurrent threads to pull connections.

Feel free to increase the maxPendingConnections value according to your needs (you can also set 1000, even though I'd wonder why if you needed so many connections. 100-200 can be considered a good choice).

最终调成下面这样还是没起作用,问题依旧每天都发生

https://docs.microsoft.com/en-us/archive/blogs/asiatech/modifying-smsvchost-exe-config-for-wcf-some-common-mistakes

https://docs.microsoft.com/en-us/archive/blogs/andreal/net-tcpip-port-sharing

②寻求ERP软件方支持或最佳实践文档,联系不上软件方,放弃

③研究ERP软件,它是IIS环境下跑的,仔细研究IIS环境,发现w3wp.exe只有3个进程,分别对应一个应用程序池,这3个应用程序池正好是用户的3个虚拟站点,跟用户了解到3个站的访问压力不同,尝试给不同站点的应用程序池配置有差别的Maximum Worker Processes,发现效果很明显,结合服务器CPU、内存、磁盘、网络的能力范围和业务表现最终把3个应用程序池的Maximum Worker Processes调到了一个合适的值

这里的经验就是,1个Worker Process大概占用500MB内存,给数据库和操作系统本身留够内存后,

剩下的内存数(MB)/ 500(MB)= n

稳妥点n-1差不多就是Maximum Worker Processes的值了

当然,如果实在不知道设置几,那就指定为0观察下

iisreset /restart命令执行后,一般在5分钟内,w3wp.exe的数量会从1逐步增加到所有Worker Process的数目总和,总数是使用中的应用程序池的Maximum Worker Processes的总和,可以用powershell执行get-process w3wp | measure统计w3wp.exe数目的变化

最终,是通过调应用程序池的Maximum Worker Processes调到了一个合适的值解决的。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于WAS 部署WCF服务

    Windows (Process) Activation Service (WAS)作为 IIS7.0 特有的新增功能,和以前IIS 6.0的功能相比更加强大,...

    张善友
  • [原创]WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿

    在上面一篇文章中,我们对不同版本的IIS,以及ASP.NET得的实现机制进行了详细而深入的分析。在介绍IIS7.0的时候,我们谈到,HTTP.SYS+W3SVC...

    蒋金楠
  • 如何实现IIS 7.0对非HTTP协议的支持

    在《再谈IIS与ASP.NET管道》介绍各种版本的IIS的设计时,我们谈到IIS 7.0因引入WAS提供了对非HTTP协议的支持。这个对于WCF的服务寄宿来说意...

    蒋金楠
  • 《WCF技术剖析》博文系列汇总[持续更新中]

    近半年以来,一直忙于我的第一本WCF专著《WCF技术剖析(卷1)》的写作,一直无暇管理自己的Blog。在《WCF技术剖析(卷1)》写作期间,对WCF又有了新的感...

    蒋金楠
  • iis8.0配置 使用备忘 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容

    由于对iis的了解度不够,使用中总会碰到这样那样的问题,在这我先开个头,遇到问题再一一更新:

    乔达摩@嘿
  • 我的WCF之旅(3):在WCF中实现双工通信

    双工(Duplex)模式的消息交换方式体现在消息交换过程中,参与的双方均可以向对方发送消息。基于双工MEP消息交换可以看成是多个基本模式下(比如请求-回复模式和...

    蒋金楠
  • 我的WCF之旅(1):创建一个简单的WCF程序

    为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用。本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构。对...

    蒋金楠
  • WCF技术剖析(卷1)之目录

    第1章  WCF简介 (WCF Overview)     1.1  SOA基本概念的和设计思想        1.2  WCF是对现有Windows平台下...

    蒋金楠
  • 我的WCF之旅(1):创建一个简单的WCF程序

    为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用。本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构。对...

    跟着阿笨一起玩NET

扫码关注云+社区

领取腾讯云代金券