在ASP.NET应用程序中可以启动的进程数量是否有限制



我有一个信号服务器,它托管在IIS中。集线器中有一个函数,它在窗口中启动600个进程,然后杀死它们。

    //start 600 processes
        for (int i = 0; i < 600; i++)
        {
            try
            {
                Process myProcess = Process.Start(startInfo);
                proclist.Add(myProcess);
                Task.Delay(10).Wait();
            }
            catch(Exception e)
            {
                 feedback = "Process " + i + " cannot be started: " + e.Message;
                 break;
            }
            feedback = "All processes are running.";
        }
        //kill them
        foreach (var proc in proclist)
        {
            try
            {
                proc.Kill();
                Task.Delay(10).Wait();
            }
            catch (Exception e)
            {
                feedback = "Process " + proclist.IndexOf(proc) + " cannot be killed: " + e.Message;
                break;
            }
            feedback = "All Processes are killed.";
        }

然而,当我在客户端中调用此函数时,我会收到一个异常,它正在扼杀进程:

进程104无法终止:Die Anforderung kann not verarbeitet werden,da der Prozess beendet wurde(请求无法继续,因为进程已经终止。)

我似乎只能保持104个进程运行。其余部分在开始后立即终止。

  • 我在控制台应用程序中尝试了同样的方法,所有进程都可以启动和终止
  • 我尝试使用另一个应用程序来消耗大量内存,并且我还可以保持104个进程的运行
  • 我尝试使用另一个应用程序来消耗大量内存,并且我还可以保持104个进程的运行
  • 我还检查了所有可能的IIS配置,但找不到任何与此问题相关的设置

所以我想问一下,是否有人知道如何在ASP.NET应用程序中启动更多进程。

如果有人能帮助我,我将不胜感激。谢谢!

我强烈建议您不要在ASP.NET下执行600个进程(或数百个进程中的任意一个)。您会使Aspnet_wp.exe进程上的资源非常紧张,这可能会影响IIS框的性能。

你需要重新考虑设计。

如果是我,我会考虑在ASP.NET之外创建一个外部进程,它可以为您做艰苦的工作。例如,您可以创建一个Windows服务(甚至只是一个在服务器上运行的.NET控制台应用程序),该服务在文件系统文件夹上等待(即侦听)要创建的文件(您可以随意命名该文件,例如start.txt),当向您的网站发出请求时,您可以执行该操作。然后,该服务将为您执行600个exe文件。

我不熟悉lasttest,所以我的建议可能不够。然而,我不相信你会实现你想要的使用你目前的设计。这会影响性能,事实上,我对达到运行进程的限制并不感到惊讶。我不知道有任何文档指出你可以在Aspnet_wp.exe中运行多少exe文件,但这可能是因为ASP.NET团队从未想过会有人尝试这样做。

相关内容

  • 没有找到相关文章

最新更新