C# 操作超时解决方案
场景描述
1、用户下单在平台下单,平台收集用户下单数据插入到MySQL库;
2、商家采用定时轮询检查MySQL数据库是否有新的订单录入,如有新订单录入了,则调用下单接口下单;
问题描述
由于在拿到MySQL数据以后采用多线程(20个线程)并发下单,在数据过多的情况下多线程并发会出现操作超时、无法连接远程服务器等问题;
按理来讲不应该出现这种问题,因为下单接口是由7台服务器来做支撑的,不可能因为20个线程并发就引起超时问题;
最终解决方案
1、设置HttpWebRequest对象的KeepAlive属性=false
2、设置HttpWebRequest对象的ServicePoint对象的Expect100Continue属性=false
3、在配置文件中加入以下节点(maxconnection 表示最大并发连接数,address表示请求地址,*表示所有)
<system.net>
<connectionManagement>
<add address="*" maxconnection="128"/>
</connectionManagement>
</system.net>
效果
在原先100条数据,20个线程并发,7台服务器平均处理时长30秒左右,偶尔会出现操作超时、无法连接远程服务器等问题(减少线程数则不会出现,所以怀疑是多线程引起,才一直从多线程这方面去解决问题);
应用了解决方案以后,100条数据,70个线程并发,7台服务器平均处理时长为10秒,基本上不出现操作超时、无法连接远程服务器等问题;

浙公网安备 33010602011771号