Jump to content

ISAPI 32 bit limit


vbdavie

Recommended Posts

I understand that the ISAPI module w3wp.exe (32bit) can handle 4GB of RAM.

Question. I have an application that has over a million lines of code and am NOT considering conversion to 64bit model.

So with that in mind, if i have 20 users logged in, there is about 2GB. It's about 100MB per user. There's a lot of data that is preloaded into ram to make it much faster. Otherwise the system is slow. So the 100MB per user is needed.

Does that mean it can only handle about 40 users (4GB)??? OR DOES THE ISAPI system do clever smart things like SPAWN another w3wp.exe to allow more users(more ram).

Or, am i now constrained to only about 40 users?

Thanks

Davie

Link to comment
Share on other sites

1 hour ago, vbdavie said:

Eu entendo que o módulo ISAPI w3wp.exe (32bit) pode lidar com 4GB de RAM.

Pergunta. Eu tenho um aplicativo que tem mais de um milhão de linhas de código e não estou considerando a conversão para o modelo de 64 bits.

Então, com isso em mente, se eu tenho 20 usuários logados, há cerca de 2GB. São cerca de 100MB por usuário. Há muitos dados que são pré-carregados na memória RAM para torná-lo muito mais rápido. Caso contrário, o sistema fica lento. Portanto, os 100MB por usuário são necessários.

Isso significa que ele só pode lidar com cerca de 40 usuários (4GB)??? Ou o sistema ISAPI faz coisas inteligentes inteligentes como SPAWN outro w3wp.exe para permitir que mais usuários (mais RAM).

Ou, agora estou restrito a apenas cerca de 40 usuários?

Obrigado

Davie

Hello, in my humble opinion, you should think differently, you can have an api and put the cache in it. And it would solve your problem.

The web server needs to consume as little memory as possible.

Link to comment
Share on other sites

Thanks for idea. Not a solution for me though. The 80% of my 900K lines of code is DUAL use.

1. Desktop EXE program

2. Web application (ISAPI)

So, when I make a call to a routine that builds an array of accounts and account valuation, that is the SAME code that works in my desktop.exe version AND the Web version. I keep as much code as possible as dual use so that I don't have to rewrite a bunch of stuff. PLUS the BONUS is that when I fix code in the desktop version, all i do is recompile the web version and POOF, it's fixed in there as well.

Can someone answer my original question?

I can tell you what "I" think would be cool and that would be to auto-hybernate datasets. IE: If a dataset hasn't been accessed for more than a minute, maybe just ditch the data into a temp file and free the memory. THEN when that dataset needs accessing, just load it back from the temp file and reallocate the ram and poof ... everything is operational.

Thanks

Davie

Link to comment
Share on other sites

My suggestion is using hyperserver, in this way IIS will eat just a little of memory,

Also it is better to use 32bit app inside of hyperserver processes. And your limit will be only your machine resources and not IIS.

Best regards,

Marko.

Link to comment
Share on other sites

so you are saying with HyperServer, it can run my 32bit app and have 100 sessions with each session using 100MB for a grand total of 10GB. Thus the 32bit memory limit of 4GB is gone and the 4GB limit only applies PER SESSION?

Is that correct?

Davie

Link to comment
Share on other sites

  • Administrators
On 1/30/2024 at 4:06 PM, vbdavie said:

so you are saying with HyperServer, it can run my 32bit app and have 100 sessions with each session using 100MB for a grand total of 10GB. Thus the 32bit memory limit of 4GB is gone and the 4GB limit only applies PER SESSION?

Is that correct?

Davie

4 GB applies per each Node. So if you have 100 sessions and 4 Nodes then each Node will own roughly 25 sessions. If your sessions are memory hungry then consider increasing number of Nodes. (max_nodes parameter)

Link to comment
Share on other sites

  • Administrators
On 1/23/2024 at 4:36 PM, vbdavie said:

I understand that the ISAPI module w3wp.exe (32bit) can handle 4GB of RAM.

Question. I have an application that has over a million lines of code and am NOT considering conversion to 64bit model.

So with that in mind, if i have 20 users logged in, there is about 2GB. It's about 100MB per user. There's a lot of data that is preloaded into ram to make it much faster. Otherwise the system is slow. So the 100MB per user is needed.

Does that mean it can only handle about 40 users (4GB)??? OR DOES THE ISAPI system do clever smart things like SPAWN another w3wp.exe to allow more users(more ram).

Or, am i now constrained to only about 40 users?

Thanks

Davie

4 GB is in theory. Actual limit can be lower in practice because of memory fragmentation.

For an ISAPI module system won't spawn a new worker. You should use uniGUI HyperServer to solve this problem.

Link to comment
Share on other sites

Thanks., thats exactly what i needed to know.

1. Hyper server can get around the 4GB limit for total sessions memory and that only 4GB limit PER SESSION is enforced and can be accomplished by using more nodes. Great.

2. ISAPI is limited to 4GB for ALL SESSIONS COMBINED because it doesn't spawn off another w3wp.exe to be able to utilize more RAM for more sessions.

Okay, so when i see my user count grow to around 35-40 at the same time, then I will definietly look at the HyperServer.

QUESTION:

Does hyperserver run inside IIS/ISAPI?  I ask because we use the MICROSOFT APPLICATION PROXY to intercept our web site so that users are forced to use MFA (authentication) and to use SSL etc... And the proxy integrates perfectly with our IIS.

 

Thanks

DAvie

Link to comment
Share on other sites

×
×
  • Create New...