0

我有一个奇怪的问题,希望你能帮助我。

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

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

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

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

我在这里错过了什么?

在此先感谢您提供有关此问题的任何帮助。

4

1 回答 1

0

我的坏人——我根本无法想象 Windows Azure 会这么慢......所以通过将 HttpWebRequest 从 2 分钟增加到 30 分钟,我能够实现与我们的开发环境相同的数据量。

所以 - 我不会删除这个问题 - 但让这个作为你即将到来的 Azure 家伙的参考。

我很肯定 Azure(和其他云提供商)是未来,但从丹麦到“北欧”,延迟很高——而且 SQL Azure 尚未证明它可以在谈论 OLTP 和规范化数据库时执行。

开发(虚拟环境)来自 299 MB 文件的 190.335 条记录在单个实例上耗时379秒

WINDOWS AZURE(北欧) 299 MB 文件中的 190.335 条记录在两个 LARGE 实例上耗时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>
于 2012-09-10T11:09:50.027 回答