Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance WCF、ThreadPool.QueueUserWorkItem和Windows Azure_Performance_Iis_Azure_Threadpool - Fatal编程技术网

Performance WCF、ThreadPool.QueueUserWorkItem和Windows Azure

Performance WCF、ThreadPool.QueueUserWorkItem和Windows Azure,performance,iis,azure,threadpool,Performance,Iis,Azure,Threadpool,我有个奇怪的问题,希望你能帮我解决 在我们的开发服务器上,我们在具有8GB RAM的虚拟x64实例上运行带有IIS 7.5的Windows 2008R2 这里我调用了一个WCF方法,该方法使用ThreadPool.QueueUserWorkItem来处理大量分层数据。这工作很好,而且工作速度相当快(一个270MB的XML被读取并处理,在379秒内生成190.035条记录)。客户端在大约250秒内完成了对该方法的调用 现在,WindowsAzure上相同的“工作流”是另一种情况。虽然类似(循环配置

我有个奇怪的问题,希望你能帮我解决

在我们的开发服务器上,我们在具有8GB RAM的虚拟x64实例上运行带有IIS 7.5的Windows 2008R2

这里我调用了一个WCF方法,该方法使用ThreadPool.QueueUserWorkItem来处理大量分层数据。这工作很好,而且工作速度相当快(一个270MB的XML被读取并处理,在379秒内生成190.035条记录)。客户端在大约250秒内完成了对该方法的调用

现在,WindowsAzure上相同的“工作流”是另一种情况。虽然类似(循环配置中的大型实例),但Windows Azure会在几秒钟内停止客户端断开连接。这意味着只写入160.055条记录,速度要慢得多-917秒。这里的问题是,我错过了大约30000条记录,现在应该在两个Azure实例上排队,但是在客户端断开连接时,似乎放弃了剩余的工作

客户端使用HttpWebRequest进行通信,两种解决方案都运行.NET 4.0

我错过了什么


提前感谢您在这个问题上提供的任何帮助。

我的坏蛋们-我简直无法想象Windows Azure会这么慢。。因此,通过将HttpWebRequest从2分钟增加到30分钟,我能够实现与开发环境中相同的数据量

所以-我不会删除这个问题-但让这个站作为参考,为您很快来Azure的家伙

我肯定Azure(和其他云提供商)是未来的发展方向,但从丹麦到“北欧”,延迟很高,而SQLAzure还没有证明它在谈论OLTP和规范化数据库时能够发挥作用

开发(虚拟环境) 299 MB文件中的190.335条记录在单个实例上花费了379秒

WINDOWS AZURE(北欧) 299 MB文件中的190.335条记录在两个大型实例上花费了1.400

好消息是,WCF和ThreadPool工作完美,不需要特别考虑(高超时除外)


只是想澄清一下,299MB文件在对服务器的多个REST调用中被拆分,格式与此类似:

<?xml version="1.0" encoding="UTF-8"?>
<HttpPost absolutePath="A/B/C/D/E/OO">
    <Parameters xmlns="http://somenamespace">
        <A>Package</A>
        <B>100</B>
        <C>Generic</C>
        <D>ReceiverParty</D>
        <E>
            <F xmlns="http://somenamespace">
                <G xmlns="http://somenamespace/Product">Long Text</G>
                <H xmlns="http://somenamespace/Product">1</H>
                <I xmlns="http://somenamespace/Product">PK</I>
                <J xmlns="http://somenamespace/Product">5995</J>
                <K xmlns="http://somenamespace/Product">
                    <L xmlns="http://somenamespace/P/Q">Discount</L>
                    <M xmlns="http://somenamespace/P/Q">1000</M>
                    <N xmlns="http://somenamespace/P/Q">6995</N>
                </K>
            </F>
        </E>
        <OO>
            <O>
                <A>Product</A>
                <B>100</B>
                <C>Generic</C>
                <D>ReceiverParty</D>
                <E>
                    <F xmlns="http://somenamespace">
                        <G xmlns="http://somenamespace/Product">Long Text</G>
                        <H xmlns="http://somenamespace/Product">1</H>
                        <I xmlns="http://somenamespace/Product">PK</I>
                        <J xmlns="http://somenamespace/Product">5995</J>
                        <K xmlns="http://somenamespace/Product">
                            <L xmlns="http://somenamespace/P/Q">Discount</L>
                            <M xmlns="http://somenamespace/P/Q">1000</M>
                            <N xmlns="http://somenamespace/P/Q">6995</N>
                        </K>
                    </F>
                </E>
            </O>
        </OO>
    </Parameters>
</HttpPost>

包裹
100
通用的
接管人
长文本
1.
主键
5995
优惠
1000
6995
产品
100
通用的
接管人
长文本
1.
主键
5995
优惠
1000
6995

似乎我已经回答了自己的问题。由于Azure平台非常慢(延迟和SQLAzure),我需要将HttpWebRequest的超时时间从2分钟提高到30分钟。我将再次尝试启用线程池,看看我是否自己解决了它:-)干杯。。