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.
Comments
Anonymous
January 01, 2003
yes Saurav, apologize for delayed response, you can email me ,if u have queries.Anonymous
February 01, 2013
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 ProxyVmemAlloc1pSizeAnonymous
December 11, 2014
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?