lmtpd triggering a delivery.db checkpointing (Cyrus 2.3.16)

Eric Luyten Eric.Luyten at vub.ac.be
Tue May 17 08:51:33 EDT 2016


On Tue, May 17, 2016 11:45 am, Simon Matter wrote:
>> Hi,
>>
>>
>>
>> Several times a month our server freezes up on deliveries and the system
>> load average shoots up into the hundreds. Things quickly return to normal
>> between one and two minutes later but this has always puzzled me.
>>
>> Today I was watching the system from up close when it happened.
>>
>>
>>
>> May 17 10:59:14 XXXX lmtp[24980]: skiplist: checkpointed
>> /ssd/cyrs/imap/deliver.db (223062 records, 25295200 bytes) in 119 seconds
>>
>>
>>
>>
>> I took a quick dive into the code but could not find where and when lmtpd
>> is supposed to trigger a delivery.db checkpointing action.
>
> Isn't it controlled by 'checkpoint    cmd="ctl_cyrusdb -c" period=30' in
> cyrus.conf?


Okay, I think I found the code in   lib/cyrusdb_skiplist.c

We do indeed have the (default) 'checkpoint  cmd="ctl_cyrusdb -c" period=30'
entry in cyrus.conf, 30 referring to the number of minutes between invocations.

We prune deliver.db every night at 00:55 with -E 1


So I guess the phenomenon I witnessed this morning correlates with server
business in the area of deliveries.
A Cyrus Wiki page hints at reducing the number of minutes down from 30.

"The most common one is that you need to checkpoint the cyrusdb more often.
 This can be done with a simple ctl_cyrusdb -c If you do this very often,
 the amount of log that needs to be recovered will be significantly shorter.
 We recommend doing this at least once every half hour, and more often on
 busy sites. "
(http://cyrusimap.web.cmu.edu/mediawiki/index.php/FAQ)


Eric.




More information about the Info-cyrus mailing list