我继承了一个非常古老的经典ASP脚本,用于向大约5,000到10,000个收件人发送电子邮件,批量生成几百个。它位于具有高流量网站的专用服务器上。
邮件脚本的server.scripttimeout属性设置为10分钟,整个邮件列表在内存中加载到scripting.dictionary,用于执行电子邮件验证和重复删除。
这个脚本可能会被10到20个人同时使用,每个人最多可以发送10个邮件。
我觉得这对服务器来说不是好事,有可能同时发生这么多长时间运行的流程,但不能引用技术原因。这会导致线程被阻塞或内存消耗问题吗?这可能会破坏对网站的服务吗?
任何人都可以提出任何技术原因,为什么这不是一个好主意?我觉得这个脚本应该用邮件服务器替换,但是,我需要技术上的原因才能引用它。
赞赏的任何输入。
最佳, 千斤顶
具体来说,我想每次运行这个脚本时,来自ASP线程池的线程都会忙着进行邮件发送。
根据http://www.iis.net/ConfigReference/system.webServer/asp/limits,processorThreadMax属性:
“processorThreadMax属性指定最大数量 IIS可能创建的每个处理器的工作线程。
注意:此设置可以显着影响您的可扩展性 Web应用程序和服务器的性能一般。 因为此属性定义了最大的ASP请求数 可以同时执行,此设置应保持默认值 除非您的ASP应用程序正在进行扩展调用 外部组件。“
假设一个处理器服务器,默认配置此值(25个线程)我是否正确地说,如果20个并发用户同时执行了邮件,那么只有5个线程可用于服务该网站?
如果我是正确的,那么我认为这个理由足以证明这种方法不可持续,应该用更持久的东西代替。
任何人都可以确认我是否正确吗?
答案 0 :(得分:1)
要考虑的几个原因:
如果您在网站维护期间重新启动IIS服务/应用程序池,该怎么办?
如果您的邮件会消耗大量资源怎么办?
如果某个其他页面会消耗大量资源(阻止邮件程序正常工作)会怎样?
PS:你现在如何运行脚本?如果您通过浏览器中的特定页面进行操作,则还应考虑维护原因:浏览器可能会超时取消请求,尽管您可以解决出现的各种问题(IIS取消脚本执行,不方便的日志记录),它仍然增加了一堆缺点。