Cannot instantiate delphi written application.exe

2019-05-10 16:11发布

My web application is a web interface for a desktop application called MyApplication.exe. My web application is written in C# (MVC4) that communicates with the MyApplication.exe (written in delphi) via COM-Objects.

When 16 clients invoke the web app via the browser, 16 MyApplication.exe instances will be created on the server:

Task-Manager

My Problem: if client number 17 invokes the web application, I get the following exception in my eventlog:

"System Error. Code: 8. Not enough storage is available to process this command."

The process explorer indicates, that the worker process w3wp.exe consumes ~600 MB memory, but the machine has 4 GB RAM.

Note: The created instances will be saved in sessions (inProc).

Im am Using:

  1. MVC4
  2. ASP.NET CLR 4.0
  3. IIS 8
  4. Windows Server 2012 R2 (also occurs on Windows 8.1)
  5. 4GB RAM

I tried the following things:

  1. Create instances locally via a VB-Script using COM-Objects. Result: I am able to create ~50 instances of MyApplication.exe with no problems.

  2. Adapted the machine.config using the following entry:

    processModel enable="true" memoryLimit="100"

Result: After restarting the worker process, the problem still occurs.

1条回答
女痞
2楼-- · 2019-05-10 16:51

Depending on the user IIS is running under this could be a problem where the non-interactive desktop heap size is an issue. I've ran into this problem involving windows services.

When you run your test application most likely you are running under a different user. You can try adjusting the non-interactive desktop heap size in the registry to see if it resolves this issue:

Below is taken from KB 126962

To correct this problem, increase the size of the desktop heap: Run Registry Editor (Regedt32.exe). From the HKEY_LOCAL_MACHINE subtree, go to the following key: \System\CurrentControlSet\Control\Session Manager\SubSystems Select the Windows value. From the Edit menu, choose String. Increase the SharedSection parameter.

For Windows NT: SharedSection specifies the system and desktop heaps using the following format: SharedSection=xxxx,yyyy Add ",256" or ",512" after the yyyy number.

For Windows 2000, Windows XP, and Windows Server 2003: SharedSection uses the following format to specify the system and desktop heaps: SharedSection=xxxx,yyyy,zzzz For 32-bit operating systems, increase the yyyy value to "12288"; Increase the zzzz value to "1024". For 64-bit operating systems, increase the yyyy value to "20480"; Increase the zzzz value to "1024".

Here is also a similar article for windows vista / 7 KB 947246

查看更多
登录 后发表回答