Memory usage tracking
tcak via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun May 10 04:04:58 PDT 2015
On Sunday, 10 May 2015 at 10:50:40 UTC, weaselcat wrote:
> On Sunday, 10 May 2015 at 10:43:37 UTC, tcak wrote:
>> On Sunday, 10 May 2015 at 09:44:42 UTC, tcak wrote:
>>> I am testing my web server right now. I started 5 separate
>>> consoles and continuously sending request by using "curl" to
>>> it.
>>>
>>> It uses shared memory as well, thought from `ipcs -a`, I
>>> don't see more than necessary amount of allocation.
>>>
>>> At the moment, server received about 1.5M requests, and
>>> memory usage has reached to 128MB according to System Monitor
>>> of Ubuntu. (top gives a similar value as well). I saw now on
>>> `top` command that about 650KB shared memory is used only.
>>>
>>> Is there any way to find out what is using that big space in
>>> memory? Would `-profile` do that?
>>>
>>> Problem is that if I was to be using `-profile` flag, server
>>> would slow down, and I wouldn't be able to test it correctly
>>> already.
>>
>> Hmm. Server was compiled in debug mode. Right now, it is 2.2M
>> requests, and 174MB memory is in use.
>
> Which compiler are you using? Also, debug mode might have
> linked against debug phobos - do a ldd on your executable.
I am using DMD. Web server is running as daemon, but web
application is being debugged with gdb. For a while, gdb has
started using 100% of CPU, and request-response slowed down
greatly. 2.22M requests it has reached. It should end at 2.5M
requests. Then I will check whether memory usage will go down by
itself.
ldd result is this.
linux-vdso.so.1 => (0x00007ffc6192c000)
libmysqlclient.so.18 =>
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
(0x00007ff6ecde4000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
(0x00007ff6ecbc6000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1
(0x00007ff6ec9bd000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff6ec5f8000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff6ed346000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff6ec3df000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
(0x00007ff6ec1da000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff6ebed4000)
I am guessing a request object is having a instance copy
somewhere, and GC is not destroying it, but I am not sure. Would
I be able to find out about very long alive objects?
More information about the Digitalmars-d-learn
mailing list