Eventid 31212 : ProxyVmemAlloc3pSize registry value calculation

I have written this article for calculation for TMG, which is installed on a 64 bit windows 2008 server. For ISA server 2006, which runs on 32 bit windows 2003 server, these calculations are limited to a maximum size of 2GB i.e. 2048. For TMG maximum cannot be beyond 4GB.

Following is the description of how you can calculate ProxyVmemAlloc3pSize if you get following event id i.e. 31212

 

 Article: https://support.microsoft.com/?kbid=842438

 

Eventid

******************************************

Log Name: Application

Source: Microsoft Forefront TMG Web Proxy

Date: 12/01/2010 x:xx:xx PM

Event ID: 31212

Task Category: None

Level: Warning

Keywords: Classic

User: N/A

Computer: TMG.contoso.com

Description:

The Forefront TMG Web Proxy memory pool that handles HTTP connections is low. To specify a larger Web Proxy memory pool, set the ProxyVmemAlloc3pSize registry value in the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3Proxy\Parameters registry key. For more information about setting this value see the Forefront TMG help.

Event Xml:

<Event xmlns="https://schemas.microsoft.com/win/2004/08/events/event">

  <System>

    <Provider Name="Microsoft Forefront TMG Web Proxy" />

    <EventID Qualifiers="32768">31212</EventID>

    <Level>3</Level>

    <Task>0</Task>

    <Keywords>0x80000000000000</Keywords>

    <TimeCreated SystemTime="2010-01-12T31:12:55.000000000Z" />

    <EventRecordID>15938</EventRecordID>

    <Channel>Application</Channel>

    <Computer>TMG.contoso.com</Computer>

    <Security />

  </System>

  <EventData>

    <Data>HTTP</Data>

    <Data>ProxyVmemAlloc3pSize</Data>

    <Binary>003000</Binary>

  </EventData>

</Event>

***********************************************************************

Here data i.e. 003000 is mentioned as the blocksize

 

Let me explain how this value is deducted (reverse engineering J)

 

003000 = 0x3000= [0x3000 hexa] == [12288 Decimal] == ['ProxyVmemAlloc3pSize' * 3p] == [1024 * 3(4kb)]

 

Now let’s further dig this following equation

 

['ProxyVmemAlloc3pSize' * 3p] == (1024 * 3(4kb)]

 

3p above-> 3(pages of memory) so 3p=3pages of memory

 

1 page= 4kb

So 3p=3(4kb)=12kb

 

Therefore

 

['ProxyVmemAlloc3pSize' * 3p]=1024*12kb= 12288 in decimal which is 0x3000

 

Therefore ProxyVmemAlloc3pSize =1024 a default configured in the registry

 

So above alert/event tells that default 1024 is being used for ProxyVmemAlloc3pSize and is suggesting to increase this value

 

in my test scenario active web sessions at peak hours were

 

Active web sessions (maximum)= 4215

 

Then as per the formula Blocksize =4*4215+10240=27100

Then registry value for ProxyVmemAlloc3pSize=blocksize/10=2710

 

Since default is 1024, its double is 2048 and triple is 3072

 

Above deducted value falls between 2048 and 3072 so we can use 3072.