Keep Server Online
If you find the Apache Lounge, the downloads and overall help useful, please express your satisfaction with a donation.
or
A donation makes a contribution towards the costs, the time and effort that's going in this site and building.
Thank You! Steffen
Your donations will help to keep this site alive and well, and continuing building binaries. Apache Lounge is not sponsored.
| |
|
Topic: Apache on Windows: How to configure 1 process per client? |
|
Author |
|
mluethi
Joined: 18 Sep 2014 Posts: 2 Location: Switzerland, Berne
|
Posted: Fri 19 Sep '14 8:24 Post subject: Apache on Windows: How to configure 1 process per client? |
|
|
I've got a quite difficult problem which I don't know hoe to solve. We use a self created ISAPI module which is a "business server" running behind an Apache.
From time to time a client app crashes the server (the circumstances are not quite clear) - and because there is only one server process, all other clients crash as well. Here is an exemplary log of a crash:
Code: | Faulting application name: httpd.exe, version: 2.2.22.0, time stamp: 0x4f242d7a
Faulting module name: ABCServer.dll, version: 1.0.0.1, time stamp: 0x53cfffa5
Exception code: 0xc00000fd
Fault offset: 0x00004cf6
Faulting process id: 0x94c
Faulting application start time: 0x01cfc5cc18c67d57
Faulting application path: C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin\httpd.exe
Faulting module path: C:\data\www\abcremote\ABCServer.dll
Report Id: d27d5891-31da-11e4-93ff-0003ff4356f9
Faulting package full name:
Faulting package-relative application ID: |
Exception code: 0xc00000fd means stack overflow as I learnt. Therefore we configured mpm_winnt_module to use a 8M ThreadStackSize but this didn't help.
A solution might be that Apache starts for every client its own server process with the module ABCServer.dll. Because it is quite small and there are not thousands of customers this sounds like the perfect solution. No other clients/customers would be affected by a crash.
Unfortunately mpm_winnt_module supports only 1 process AFAIK. Worker and Prefork MPM are not available in Apache's Windows version what I read.
How can we configure Apache to start a new module process per client?
Your help is very much appreciated.
Thank you.
Environment:
httpd.exe, version: 2.2.22.0
Windows Server 2012 R2 |
|
Back to top |
|
James Blond Moderator
Joined: 19 Jan 2006 Posts: 7371 Location: Germany, Next to Hamburg
|
Posted: Fri 19 Sep '14 15:27 Post subject: |
|
|
On windows apache works with threads. You can't change that. Make you dll threadsafe.
Or use fcgid instread of the sapi if you can |
|
Back to top |
|
mluethi
Joined: 18 Sep 2014 Posts: 2 Location: Switzerland, Berne
|
Posted: Tue 23 Sep '14 13:24 Post subject: |
|
|
Hi James
Thank you for your reply.
Can't change the way the DLL works.
But maybe I could configure another Apache to load balance between the different server processes, having per client (via its IP address) an Apache instance with the server module.
I can not figure how to dynamically start these Apache/server processes, so I would have to have a number of those always running on the server.
Any hints how to configure this load balancer based on the client's IP address? |
|
Back to top |
|
James Blond Moderator
Joined: 19 Jan 2006 Posts: 7371 Location: Germany, Next to Hamburg
|
Posted: Tue 23 Sep '14 22:19 Post subject: |
|
|
You only have to configure sticky sessions |
|
Back to top |
|
|
|
|
|
|