什么在.net应用程序中使用大型mem_reserve?

时间:2019-02-12 13:39:44

标签: windbg

我们有一个ASP.NET Web服务应用程序,与IIS w3wp.exe出现OutOfMemory问题。 OOM发生时,我们得到了w3wp的微型内存转储,并且我们看到它的mem_reserve很大,但是托管堆的大小却很小。问题是我们如何找出使用mem_reserve(虚拟地址空间)的东西。我希望看到一些mem_reserve而不是2.9G。由于mem_reserve不会累加到eeheap中,因此它是否来自非托管堆?还是要确认吗?

0:000> !address -summary

Mapping file section regions...
Mapping module regions...
Mapping PEB regions...
Mapping TEB and stack regions...
Mapping heap regions...
Mapping page heap regions...
Mapping other regions...
Mapping stack trace database regions...
Mapping activation context regions...

--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
<unknown>                              1664          d4c1d000 (   3.324 GB)  92.34%   83.11%
Free                                    348          19951000 ( 409.316 MB)            9.99%
Image                                  1184           ad58000 ( 173.344 MB)   4.70%    4.23%
Heap                                     75           5ab4000 (  90.703 MB)   2.46%    2.21%
Stack                                   193           1200000 (  18.000 MB)   0.49%    0.44%
TEB                                      64             40000 ( 256.000 kB)   0.01%    0.01%
Other                                    10             35000 ( 212.000 kB)   0.01%    0.01%
PEB                                       1              1000 (   4.000 kB)   0.00%    0.00%

--- Type Summary (for busy) ------ RgnCount ----------- Total Size -------- %ofBusy %ofTotal
MEM_PRIVATE                            1323          d6f04000 (   3.358 GB)  93.28%   83.96%
MEM_IMAGE                              1828           dd75000 ( 221.457 MB)   6.01%    5.41%
MEM_MAPPED                               40           1a26000 (  26.148 MB)   0.71%    0.64%

--- State Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
MEM_RESERVE                             746          b8b4e000 (   2.886 GB)  80.16%   72.15%
MEM_COMMIT                             2445          2db51000 ( 731.316 MB)  19.84%   17.85%
MEM_FREE                                348          19951000 ( 409.316 MB)            9.99%

--- Protect Summary (for commit) - RgnCount ----------- Total Size -------- %ofBusy %ofTotal
PAGE_READWRITE                         1024          1f311000 ( 499.066 MB)  13.54%   12.18%
PAGE_EXECUTE_READ                       248           b2e6000 ( 178.898 MB)   4.85%    4.37%
PAGE_READONLY                           613           1c1d000 (  28.113 MB)   0.76%    0.69%
PAGE_WRITECOPY                          219           103e000 (  16.242 MB)   0.44%    0.40%
PAGE_EXECUTE_READWRITE                  144            59c000 (   5.609 MB)   0.15%    0.14%
PAGE_EXECUTE_WRITECOPY                   69            21f000 (   2.121 MB)   0.06%    0.05%
PAGE_READWRITE|PAGE_GUARD               128            144000 (   1.266 MB)   0.03%    0.03%

--- Largest Region by Usage ----------- Base Address -------- Region Size ----------
<unknown>                                   c2010000           4032000 (  64.195 MB)
Free                                        86010000           4000000 (  64.000 MB)
Image                                       72f48000            f5d000 (  15.363 MB)
Heap                                        64801000            fcf000 (  15.809 MB)
Stack                                        1ed0000             7a000 ( 488.000 kB)
TEB                                         ffe8a000              1000 (   4.000 kB)
Other                                       fffb0000             23000 ( 140.000 kB)
PEB                                         fffde000              1000 (   4.000 kB)

0:000> !ao
---------Heap 1 ---------
Managed OOM occured after GC #2924 (Requested to allocate 0 bytes)
Reason: Didn't have enough memory to allocate an LOH segment
Detail: LOH: Failed to reserve memory (117440512 bytes)
---------Heap 7 ---------
Managed OOM occured after GC #2308 (Requested to allocate 0 bytes)
Reason: Could not do a full GC
0:000> !vmstat
TYPE                      MINIMUM                      MAXIMUM                      AVERAGE  BLK COUNT                        TOTAL
~~~~                      ~~~~~~~                      ~~~~~~~                      ~~~~~~~  ~~~~~~~~~                        ~~~~~
Free:
Small                          4K                          64K                          34K        219                       7,475K
Medium                        72K                         832K                         273K         80                      21,903K
Large                      1,080K                      65,536K                       7,954K         49                     389,759K
Summary                        4K                      65,536K                       1,204K        348                     419,139K

Reserve:
Small                          4K                          64K                          14K        436                       6,519K
Medium                        88K                       1,020K                         303K        169                      51,303K
Large                      1,088K                      65,528K                      21,052K        141                   2,968,407K
Summary                        4K                      65,528K                       4,056K        746                   3,026,231K

Commit:
Small                          4K                          64K                          16K      2,019                      33,386K
Medium                        68K                       1,024K                         287K        275                      79,043K
Large                      1,028K                      65,736K                       7,315K         87                     636,435K
Summary                        4K                      65,736K                         314K      2,381                     748,866K

Private:
Small                          4K                          64K                          28K        851                      23,911K
Medium                        88K                       1,024K                         313K        222                      69,687K
Large                      1,028K                      65,736K                      18,429K        186                   3,427,951K
Summary                        4K                      65,736K                       2,797K      1,259                   3,521,550K

Mapped:
Small                          4K                          64K                          18K         23                         431K
Medium                        68K                       1,004K                         385K         11                       4,239K
Large                      1,520K                       6,640K                       3,684K          6                      22,104K
Summary                        4K                       6,640K                         669K         40                      26,775K

Image:
Small                          4K                          64K                           9K      1,581                      15,562K
Medium                        68K                       1,000K                         267K        211                      56,419K
Large                      1,028K                      15,732K                       4,299K         36                     154,787K
Summary                        4K                      15,732K                         124K      1,828                     226,771K

0:000> !eeheap -gc
Number of GC Heaps: 8
------------------------------
Heap 0 (01cd1720)
generation 0 starts at 0x44470de4
generation 1 starts at 0x43f51000
generation 2 starts at 0x02161000
ephemeral segment allocation context: none
 segment     begin  allocated      size
02160000  02161000  02dee4a8  0xc8d4a8(13161640)
43f50000  43f51000  444b9364  0x568364(5669732)
Large object heap starts at 0x12161000
 segment     begin  allocated      size
12160000  12161000  121bd590  0x5c590(378256)
c2010000  c2011000  c6041020  0x4030020(67305504)
Heap Size:       Size: 0x5281dbc (86515132) bytes.
------------------------------
Heap 1 (01cd65a8)
generation 0 starts at 0x8c4b38e0
generation 1 starts at 0x8c011000
generation 2 starts at 0x04161000
ephemeral segment allocation context: none
 segment     begin  allocated      size
04160000  04161000  054114f0  0x12b04f0(19596528)
25c40000  25c41000  25fc7328  0x386328(3695400)
8c010000  8c011000  8c4c4778  0x4b3778(4929400)
Large object heap starts at 0x13161000
 segment     begin  allocated      size
13160000  13161000  13161010  0x10(16)
Heap Size:       Size: 0x1ae9fa0 (28221344) bytes.
------------------------------
Heap 2 (01cdb5c0)
generation 0 starts at 0x4a71a420
generation 1 starts at 0x49f51000
generation 2 starts at 0x06161000
ephemeral segment allocation context: none
 segment     begin  allocated      size
06160000  06161000  06e89b18  0xd28b18(13798168)
27c40000  27c41000  27f8f6dc  0x34e6dc(3466972)
9a010000  9a011000  9a5900b8  0x57f0b8(5763256)
49f50000  49f51000  4a72cc2c  0x7dbc2c(8240172)
Large object heap starts at 0x14161000
 segment     begin  allocated      size
14160000  14161000  14161010  0x10(16)
Heap Size:       Size: 0x1dd1ee8 (31268584) bytes.
------------------------------
Heap 3 (01ce05d8)
generation 0 starts at 0x34fbe540
generation 1 starts at 0x34d11000
generation 2 starts at 0x08161000
ephemeral segment allocation context: none
 segment     begin  allocated      size
08160000  08161000  08c26248  0xac5248(11293256)
2bc40000  2bc41000  2bfc9294  0x388294(3703444)
34d10000  34d11000  34fcdbb0  0x2bcbb0(2870192)
Large object heap starts at 0x15161000
 segment     begin  allocated      size
15160000  15161000  151c3b10  0x62b10(404240)
Heap Size:       Size: 0x116cb9c (18271132) bytes.
------------------------------
Heap 4 (01ce55f0)
generation 0 starts at 0x934a7cec
generation 1 starts at 0x93011000
generation 2 starts at 0x0a161000
ephemeral segment allocation context: none
 segment     begin  allocated      size
0a160000  0a161000  0b4bf898  0x135e898(20310168)
45f50000  45f51000  45f70df4  0x1fdf4(130548)
93010000  93011000  934b83ec  0x4a73ec(4879340)
Large object heap starts at 0x16161000
 segment     begin  allocated      size
16160000  16161000  161ab050  0x4a050(303184)
Heap Size:       Size: 0x186fac8 (25623240) bytes.
------------------------------
Heap 5 (01cec608)
generation 0 starts at 0x31f1d4d0
generation 1 starts at 0x31c41000
generation 2 starts at 0x0c161000
ephemeral segment allocation context: none
 segment     begin  allocated      size
0c160000  0c161000  0d2120b0  0x10b10b0(17502384)
7aea0000  7aea1000  7af5c074  0xbb074(766068)
31c40000  31c41000  31f2caac  0x2ebaac(3062444)
Large object heap starts at 0x17161000
 segment     begin  allocated      size
17160000  17161000  17179ad0  0x18ad0(101072)
Heap Size:       Size: 0x14706a0 (21431968) bytes.
------------------------------
Heap 6 (01cf5a20)
generation 0 starts at 0x5fbb5598
generation 1 starts at 0x5f821000
generation 2 starts at 0x0e161000
ephemeral segment allocation context: none
 segment     begin  allocated      size
0e160000  0e161000  0eb22284  0x9c1284(10228356)
5f820000  5f821000  5fbc9838  0x3a8838(3835960)
Large object heap starts at 0x18161000
 segment     begin  allocated      size
18160000  18161000  18161010  0x10(16)
Heap Size:       Size: 0xd69acc (14064332) bytes.
------------------------------
Heap 7 (01cfaa38)
generation 0 starts at 0xad530e00
generation 1 starts at 0xad011000
generation 2 starts at 0x10161000
ephemeral segment allocation context: none
 segment     begin  allocated      size
10160000  10161000  109bd218  0x85c218(8765976)
a4010000  a4011000  a42f418c  0x2e318c(3027340)
41f50000  41f51000  42a99090  0xb48090(11829392)
ad010000  ad011000  ad5399a0  0x5289a0(5409184)
Large object heap starts at 0x19161000
 segment     begin  allocated      size
19160000  19161000  1980ddb0  0x6acdb0(6999472)
Heap Size:       Size: 0x225cb84 (36031364) bytes.
------------------------------
GC Heap Size:    Size: 0xf950f98 (261427096) bytes.
0:000> !heap -s
SEGMENT HEAP ERROR: failed to initialize the extention
LFH Key                   : 0x3a251113
Termination on corruption : ENABLED
  Heap     Flags   Reserv  Commit  Virt   Free  List   UCR  Virt  Lock  Fast 
                    (k)     (k)    (k)     (k) length      blocks cont. heap 
-----------------------------------------------------------------------------
Virtual block: 1a830000 - 1a830000 (size 00000000)
Virtual block: 1a9d0000 - 1a9d0000 (size 00000000)
007b0000 00000002   16384  15520  16384    198   418     5    2      3   LFH
00280000 00001002    3136   1608   3136      7    23     3    0      0   LFH
00a40000 00001002    1088    828   1088     79    25     2    0      0   LFH
00c30000 00001002    1088    308   1088     13     5     2    0      0   LFH
00100000 00041002     256      4    256      2     1     1    0      0      
01560000 00001002     256     24    256      3     4     1    0      0      
01510000 00001002      64      4     64      2     1     1    0      0      
01670000 00001002      64      4     64      2     1     1    0      0      
00290000 00011002     256      4    256      1     2     1    0      0      
01870000 00001002     256      8    256      3     3     1    0      0      
004e0000 00001002     256      4    256      1     2     1    0      0      
019e0000 00001002     256      4    256      2     1     1    0      0      
01af0000 00001002     256      4    256      2     1     1    0      0      
02080000 00001002    1280    396   1280      1    34     2    0      0   LFH
01fc0000 00041002     256      4    256      2     1     1    0      0      
1b700000 00041002     256    256    256      6     4     1    0      0   LFH
21840000 00001002   64192   1880  64192   1639    13    12    0      0   LFH
    External fragmentation  87 % (13 free blocks)
-----------------------------------------------------------------------------

如果我们回收w3wp,则所有内存将返回系统。因此,似乎没有内存泄漏。我知道mem_reserve映射到虚拟地址,并且分配了空间但未提交。问题是:是否有办法找出所有这些虚拟地址用完了。

我有内存转储,但是我无法访问服务器以获取性能计数器或其他内容。

谢谢大家!

0 个答案:

没有答案