Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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
什么';Windows服务器上的ASP.NET C#脚本每小时发送的电子邮件数量多吗?_C#_Asp.net_Email_Smtp_Windows Server 2008 - Fatal编程技术网

什么';Windows服务器上的ASP.NET C#脚本每小时发送的电子邮件数量多吗?

什么';Windows服务器上的ASP.NET C#脚本每小时发送的电子邮件数量多吗?,c#,asp.net,email,smtp,windows-server-2008,C#,Asp.net,Email,Smtp,Windows Server 2008,我们经常使用德国和美国的Windows 2003、2008和2008 R2服务器为客户发送大量电子邮件(当然,没有垃圾邮件,只有时事通讯),我们一小时内发送的邮件数量在5000到12000之间,这取决于我们是使用收件文件夹、本地SMTP还是商业SMTP服务器。我们使用的是带有标准.NET libs或MailBee组件的简单直接的脚本 那好吗?一般?糟糕? 是否存在任何明显的瓶颈(即,编写多线程脚本是否有意义,或者是与邮件服务器的连接限制了速度?除了您编写的任何代码外,还有一些因素会限制此过程的性

我们经常使用德国和美国的Windows 2003、2008和2008 R2服务器为客户发送大量电子邮件(当然,没有垃圾邮件,只有时事通讯),我们一小时内发送的邮件数量在5000到12000之间,这取决于我们是使用收件文件夹、本地SMTP还是商业SMTP服务器。我们使用的是带有标准.NET libs或MailBee组件的简单直接的脚本

那好吗?一般?糟糕?
是否存在任何明显的瓶颈(即,编写多线程脚本是否有意义,或者是与邮件服务器的连接限制了速度?

除了您编写的任何代码外,还有一些因素会限制此过程的性能

  • 发送电子邮件的服务器上的Internet带宽
  • 这些电子邮件被发送到哪里。也就是说,您的smtp服务器最终必须连接并与电子邮件收件人的电子邮件提供商的服务器通信,才能发送电子邮件。有些服务器速度慢,有些服务器忙,只是需要很长时间才能连接
  • 至于使用多线程来加速,那么,速度在哪里呢

    电子邮件发送(和接收)主要是一项I/O任务。在这个问题上抛出线程可能会提高性能,也可能不会提高性能。这完全取决于是否存在瓶颈(在代码中),您是否受到服务器处理能力或带宽的限制


    看看这个,我回答了我在哪里提供的多线程解决方案可能会有所帮助。基本上,它使用了一种称为“”的并行编程技术,其中工作负载基本上被分成多个块,然后每个块由线程处理,保持块的数量与机器上的内核数量相同(或接近)。

    您是说,您的处理过程需要1小时才能生成12000封电子邮件吗?或者你是说所有生成的电子邮件都是在一小时内由smtp服务器物理发送的?我指的是整个过程,包括物理发送。谢谢。它并没有真正回答关于什么是好的“电子邮件发送性能”的问题,但我喜欢您链接到的多线程方法。@Olaf,您没有真正回答我在评论中提出的问题:)。另外,SmtpClient作为一种Asyn方法,您也可以尝试一下。我在我的博客上发表了一篇关于HttpWebRequest和Async方法的博文。在异步模式下使用SmtpClient应该很简单。还要注意,本文演示了I/O任务的多线程并没有真正的帮助。你的里程取决于你所考虑的“发送”。@ Shiv:再次感谢,我会检查博客文章。我对“发送”的定义是“发送到下一台机器,MTA,随便什么”,意思是“已经离开服务器”。问题应该是,“我如何衡量IIS上的大容量邮件性能”,然后是“电子邮件处理链的哪一部分最有可能得到优化?”@Olaf,好的,所以您无法控制从服务器发送到目标邮箱的电子邮件速度。当然,发送服务器的带宽起着一定的作用,这可能是一个瓶颈,因为在发送电子邮件的过程中,服务器可能会使用500Mbps到1Gbps(取决于发送的电子邮件数量)。但老实说,由于另一方(收件人的邮件服务器)也需要可用,因此您无法一直提高到另一方邮件服务器的性能。如果邮件位于smtp服务器的队列中,您知道您的C#进程足够快。也许服务器带宽是瓶颈?您可以通过查看网络带宽的使用情况来确认下一次发送批量电子邮件。如果它是ISP提供的带宽的80%和/或机箱上NIC的容量,那么带宽很可能是瓶颈。但“足够快”并没有“标准”。如果您的“业务”发送大量电子邮件,那么您的性能要求将非常不同,您使用的硬件/带宽也将非常不同。