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.