lmtp memory usage problem - Fatal: pool_system_realloc(268435456): Out of memory

Arkadiusz Miśkiewicz arekm at maven.pl
Fri Sep 5 14:35:29 UTC 2014


Hi.

In my setup exim delivers mails to dovecot using LMTP. In one LMTP session exim
can deliver up to 200 recipients (batch_max set to that value).

Now the problem is that sometimes 256MB is not enoug for dovecot lmtp to handle
incoming emails.

My questions:
- how big memory limit should be for lmtp? I was thinking that lmtp (more or less) simply
reads from one descriptor and writes to file, then does rename() (maildir used here)
and that's all. That shouldn't require big number of memory. So how to determine correct
memory limit and what affects this limit?

- is number of recipients in one LMTP session important here? Not sure, maybe dovecot
stores email in memory first and then writes to the user maildirs? Setting (batch) limit to 1
could reduce memory usage then (since no need to store anything in memory) ?

Thanks,

Log:

Sep  4 16:10:30 mail dovecot: lmtp(21383, user): Fatal: pool_system_realloc(268435456): Out of memory
Sep  4 16:10:30 mail dovecot: lmtp(21383, user): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0(+0x682a0) [0x7fe327e632a0] -> /usr/lib64/dovecot/libd
ovecot.so.0(+0x6837e) [0x7fe327e6337e] -> /usr/lib64/dovecot/libdovecot.so.0(i_error+0) [0x7fe327e1dbf8] -> /usr/lib64/dovecot/libdovecot.so.0(+0x7d6a3) [0x7fe327e786a3] ->
 /usr/lib64/dovecot/libdovecot.so.0(i_stream_grow_buffer+0x8f) [0x7fe327e6c4cf] -> /usr/lib64/dovecot/libdovecot.so.0(i_stream_try_alloc+0x82) [0x7fe327e6c592] -> /usr/lib6
4/dovecot/libdovecot.so.0(+0x73b9b) [0x7fe327e6eb9b] -> /usr/lib64/dovecot/libdovecot.so.0(+0x73c36) [0x7fe327e6ec36] -> /usr/lib64/dovecot/libdovecot.so.0(i_stream_read+0x
53) [0x7fe327e6bad3] -> /usr/lib64/dovecot/libdovecot.so.0(+0x77391) [0x7fe327e72391] -> /usr/lib64/dovecot/libdovecot.so.0(i_stream_read+0x53) [0x7fe327e6bad3] -> /usr/lib
64/dovecot/libdovecot.so.0(i_stream_read_data+0x3d) [0x7fe327e6c2fd] -> /usr/lib64/dovecot/libdovecot.so.0(io_stream_copy+0x7f) [0x7fe327e7cacf] -> /usr/lib64/dovecot/libdo
vecot.so.0(+0x83310) [0x7fe327e7e310] -> /usr/lib64/dovecot/libdovecot.so.0(o_stream_send_istream+0x4d) [0x7fe327e7c92d] -> /usr/lib64/dovecot/libdovecot-storage.so.0(maild
ir_save_continue+0x5a) [0x7fe32811b14a] -> /usr/lib64/dovecot/libdovecot-storage.so.0(mail_storage_copy+0x88) [0x7fe328145328] -> /usr/lib64/dovecot/libdovecot-storage.so.0
(maildir_copy+0x42) [0x7fe3281179c2] -> /usr/lib64/dovecot/plugins/lib10_quota_plugin.so(+0xb52b) [0x7fe32764352b] -> /usr/lib64/dovecot/libdovecot-storage.so.0(mailbox_cop
y+0x6d) [0x7fe32814d29d] -> /usr/lib64/dovecot/libdovecot-lda.so.0(mail_deliver_save+0x185) [0x7fe3283f1765] -> /usr/lib64/dovecot/libdovecot-lda.so.0(mail_deliver+0xeb) [0
x7fe3283f1b6b] -> dovecot/lmtp() [0x405d80] -> /usr/lib64/dovecot/libdovecot.so.0(io_loop_call_io+0x3f) [0x7fe327e7398f] -> /usr/lib64/dovecot/libdovecot.so.0(io_loop_handl
er_run_internal+0xd7) [0x7fe327e74897] -> /usr/lib64/dovecot/libdovecot.so.0(io_loop_handler_run+0x9) [0x7fe327e739f9] -> /usr/lib64/dovecot/libdovecot.so.0(io_loop_run+0x3
8) [0x7fe327e73a78] -> /usr/lib64/dovecot/libdovecot.so.0(master_service_run+0x13) [0x7fe327e22ca3]
Sep  4 16:10:30 mail dovecot: lmtp(21383, user): Fatal: master: service(lmtp): child 21383 returned error 83 (Out of memory (service lmtp { vsz_limit=256 MB },             
 you may need to increase it) - set CORE_OUTOFMEM=1 environment to get core dump)

-- 
Arkadiusz Miśkiewicz, arekm / maven.pl


More information about the dovecot mailing list