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: http://support.microsoft.com/?kbid=842438




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


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=”http://schemas.microsoft.com/win/2004/08/events/event“>


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

    <EventID Qualifiers=”32768″>31212</EventID>




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




    <Security />









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




[‘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.

Comments (3)

  1. Anonymous says:

    yes Saurav, apologize for delayed response, you can email me ,if u have queries.

  2. Saurav says:

    as per support.microsoft.com

    ProxyVmemAlloc3pSize – This entry controls the maximum number of proxy request objects.

    ProxyVmemAlloc1pSize – This entry controls the maximum number of Secure Sockets Layer (SSL) request objects. This number is calculated as

    i primarily have https traffic , so do you think i need to add this registry ProxyVmemAlloc1pSize

  3. Ian says:

    So just to be clear if I create a dword entry called ProxyVmemAlloc1pSize I just set it to decimal 2048 and reboot. Is that correct?