我的情景是:
我们有内部部署CRM 2011。
我有一个可以运行很长时间的流程,很多插入/数千个可能需要5-30分钟
创建一个将在此过程中运行异步的Windows服务
我创建了" x"每个都有自己的组织服务代理的线程数,这些代理将并行执行插入
结果是:
我可以看到大约10个线程可以提高40%到50%。
超过此并发线程数将无济于事。
我想知道哪些设置会阻止线程并行运行以及如何设置这些设置?
在Windows服务app.config中的我尝试了这个设置但没有任何改进:
<system.net>
<connectionManagement>
<add address = "*" maxconnection = "100" />
</connectionManagement>
</system.net>
我想WCF组织服务会为我拥有的每个服务代理创建一个会话,它可以处理超过10个?
答案 0 :(得分:3)
根据我的经验,多线程只能让你到目前为止。在某个时间点,Web服务器正在尽可能快地处理请求(如果插件作为事务的一部分执行,插件也可能是一个相当大的瓶颈。我将检查Web服务器的性能和你正在点击数据库服务器,看看是否有任何瓶颈。
如果您正在使用汇总12+,那么您可以将交易批量转换为Execute Multiple。
我也希望你不是为每个记录创建一个新的线程来插入/更新,因此也是一个新的IOrganizationService。考虑一次给一个线程提供10-100条记录,让它处理所有这些记录。